Esta es la 3a. parte de "Internet es copyleft". Sus comentarios críticos ayudarán a convertirlo en un documento valioso. Estaré atento a ellos.
Código Fuente: El idioma hombre-máquina
Un algoritmo es un método que consta de un número finito de pasos a seguir para resolver un problema. Para que una computadora ejecute un algoritmo, éste se le debe presentar en un formato adecuado, normalmente en cadenas de ceros y unos (bits) inteligibles para ella, algo así como un lenguaje máquina.
Puesto que un ser humano no habla tal lenguaje máquina, ¿cómo hace para comunicarle órdenes a la computadora? ¿cómo logra que un dispositivo de cómputo ejecute un algoritmo que en principio no es sino una idea en la cabeza de su creador? En la práctica esto se logra con los llamados lenguajes de programación.
Un lenguaje de programación es un lenguaje a medio camino entre el natural, hablado por un ser humano, y el de la máquina, los bits. Una persona capaz de aprender un algún lenguaje de programación puede especificar, siguiendo una sintaxis precisa, el algoritmo que desea implementar en una computadora.
La especificación de una algoritmo descrita en cierto lenguaje de programación se conoce como código fuente (almacenado normalmente en un archivo de texto). La transformación de ese código al lenguaje de la máquina ocurre en varios pasos que son guiados por software llamado compilador. La transformación final ocurre con la creación de un archivo listo para ser ejecutado por el equipo de cómputo; ese archivo es el programa de software. Dicho esto, el compilador no es sino un software que transforma código fuente en su versión de software ejecutable.
La computadora ENIAC, la primera construida para uso de propósito general ---según la versión más aceptada---, encendida a partir de 1947, era programada mediante cables e interruptores. En este sentido, puede decirse que los programadores debían conocer muy de cerca el funcionamiento de la máquina ENIAC para introducir en ella los algoritmos de su interés.
En la actualidad los programadores requieren conocer cada vez menos detalles de las máquinas donde implementarán sus algoritmos y en cambio, se concentran todavía más en los problemas que buscan resolver con ellas. Es probable que en el futuro los lenguajes máquina y natural converjan a través de un mismo código fuente.
Software y Conocimiento
Ahora bien, si los algoritmos son ideas que resuelven problemas concretos y su implementación para ser ejecutados por una computadora está descrita mediante código fuente escrito con algún lenguaje de programación, ¿a quién le pertenece esa obra intelectual que es el software?
Y es que si el software es la suma de ideas (los algoritmos) y su implementación (el código fuente), ¿quién sino el programador (o quien le contrata) es el propietario legítimo?
Es un ejercicio común que la propiedad intelectual del software pertenezca legalmente a quien registre ese derecho ante la oficina correspondiente. Por ejemplo, en los Estados Unidos es posible patentar algoritmos y su implementación en software. Esto facilita que el modelo de negocios de una empresa de desarrollo de software esté basado en la protección de su software, con el fin de mantenerlo en secreto y alejado de sus posibles competidores.
Las licencias de software, por su parte, son permisos que suelen estar muy bien especificados con el fin de advertir al usuario final de las maneras legales en las que puede utilizar el software en cuestión sin caer en prácticas que vayan en contra de los intereses de su propietario.
Sin embargo, hay quienes piensan que las patentes y licencias tradicionales de software son en realidad herramientas que limitan las libertades fundamentales de las personas para acceder al conocimiento. Una de esas personas es Richard Stallman, quien en 1983 se dio a la tarea de iniciar un movimiento técnico e ideológico ---y también religioso, en cierto sentido--- que llevó a muchos a reconsiderar profundamente el asunto de la propiedad intelectual del software.
La lucha de Stallman comenzó sustentada en los viejos principios con los que él, un hacker informático, creció; esto es, colaborar para compartir el conocimiento usando esa lingua franca llamada código fuente.
La lógica detrás de los esfuerzos Stallman puede resumirse como sigue:
Las ideas son conocimiento y el conocimiento le pertenece a todos. Así que si el software es un conjunto de ideas implementadas desde código fuente, entonces el software es un repositorio de conocimiento. Ergo, todos somos dueños del software.
La 4a. parte aparecerá el próximo miércoles. Hablaremos sobre el concepto de software libre y Linux como arquetipo de software social.
Nota: Este post forma parte de una serie de cinco. Léelos todos accediendo al tag "Internet es copyleft".
Imagen: A copyright will protect you from PIRATES vía Ioan Sameli