No es un bug, es una característica no documentada

sábado, 11 de octubre de 2014

Entornos de desarrollo. Desarrollo de software (II)

1:34 Posted by Inazio No comments
Distribución de software

Básicamente, la manera de hacerlo llegar al público.

Tenemos diferentes tipos de software (entendiendo como tal el que podemos descargar sin pagar, los programas propietarios los veremos posteriormente):
  • Shareware. Programa de distribución de prueba para la evaluación del usuario. Suele haber dos tipos:
    • Programa completo con licencia de duración determinada
    • Programa con funcionalidades bloqueadas
  • Freeware. Software gratuito. Para comprobar su funcionamiento, como NetScan, porque el desarrollador lo quiere compartir, etc. El freeware permite la distribución del programa, pero normalmente no permite la visualización del código fuente.
  • Adware. Software gratuito completo, con anuncios incorporados. Ejemplo: uTorrent, o casi todas las apps gratuitas del Play Store


No es una clasificación muy estricta. Por ejemplo, uTorrent puede ser shareware porque permite pagar por una versión sin anuncios, o algunos que desbloqueen más opciones de uso.

Según licencias, hay tres tipos de software:
  • Libre. Tipo de licencia en la que el autor cede una serie de libertades para que lo emplee el usuario
    • Código abierto. Permite estudiar cómo funciona el programa y modificarlo
    • Se puede compartir el programa
    • No necesariamente tiene que ser gratuito
  • Propietario. Tiene código cerrado. Se puede usar el programa pero no visualizar cómo está realizado.
  • Dominio público. Se desconoce la autoría del programa.


Para hacer una licencia de software libre, la más usada es GPL.

Han salido tres versiones de la licencia GPL, que viene a entregar más o menos derechos al autor  y más o menos permisividad al usuario.
  • Versión 1. Permite modifica el código del programa y distribuirlo de nuevo.
  • Versión 2. Cualquier modificación de ese software debía llevar las mismas restricciones. Es decir, si alguien modifica un programa con licencia GPL y posteriormente lo distribuía con otra licencia, se le podía denunciar.
  • Versión 3. Añade un poco más de libertades al programador. Se puede indicar que todo lo que se distribuye bajo esa licencia debe nombrar al autor y la fuente de desarrollo.


Podemos seguir usando cualquiera de estas licencias. Las licencias GPL obligar a distribuir el código fuente entendible y modificable para un ser humano. Es decir, si sólo queremos distribuir código binario no podríamos usar una de estas licencias.

Clasificación de los lenguajes de programación

Vamos a clasificar los lenguajes de programación según su nivel de abstracción.
Es decir, si colocamos al usuario arriba y a la máquina abajo, los lenguajes van de un nivel más alto de abstracción si son más entendibles para el usuario, y más bajos si son más entendibles por el código máquina.
  • ALTO NIVEL à Java, C#, FORTRAN, BASIC, etc.
  • NIVEL MEDIO à C. Acceso directo a recursos de la máquina. Usado para programar S.O., como por ejemplo Android.
  • BAJO NIVEL à Código ensamblador. Ej: MOVE R1,R2;SUM R2,R3;


Los lenguajes de programación de más bajo nivel son los que trabajamos más con lenguaje binario, entrada y salida de dispositivos, etc.
Cuánto más cerca estamos a la máquina, más en cuenta hay que tener el tipo de máquina que estamos empleando. No es lo mismo programar para una Raspberry que para un AMD, ya que cuando se compila se hace para un procesador en concreto.

Los lenguajes de nivel medio permiten introducir el uso de direccionamiento de memoria.

Con C podemos programar también a bajo nivel, lo que permite que se cometan más errores. Cuánto más bajo sea el nivel, más fácil es equivocarse al escribir el código.

Los lenguajes de alto nivel permiten un gran nivel de abstracción y su programación es mucho más cercana a la realidad, es decir, podemos declarar variables que sean personas, y que éstas tengan sus datos. Lo leemos y “básicamente” lo entendemos.

Con C aunque lo leamos si no sabemos no lo comprendemos.

Identación: Espacio que se tabula para indicar que estamos en un subgrupo.


Comandos VIM


0 comentarios:

Publicar un comentario