Next: Los inicios Up: Cooperación sin mando: una Previous: Cooperación sin mando: una

# ¿Qué es el software?

El software es una producción inmaterial del cerebro humano y tal vez una de las estructuras más complicadas que la humanidad conoce. De hecho, los expertos en computación aún no entienden del todo cómo funciona, su comportamiento, sus paradojas y sus límites.1 Básicamente, el software es un plan de funcionamiento para un tipo especial de máquina, una máquina ``virtual'' o ``abstracta''. Una vez escrito mediante algún lenguaje de programación, el software se hace funcionar en ordenadores, que temporalmente se convierten en esa máquina para la que el programa sirve de plan. El software permite poner en relación al ser humano y a la máquina y también a las máquinas entre sí. Sin ese conjunto de instrucciones programadas, los ordenadores serían objetos inertes, como cajas de zapatos, sin capacidad siquiera para mostrar algo en la pantalla.

Los ordenadores sólo procesan lenguaje binario,2 pero para las personas este no es un modo válido de comunicarse (salvo a nivel sináptico :-). Si bien en los tiempos heroicos de los primeros ordenadores no les quedaba otro remedio que hacerlo, los programadores hace mucho que no escriben su código en lenguaje binario (denominado técnicamente ``código-máquina''), pues es terriblemente tedioso, improductivo y muy sujeto a errores. Hace tiempo que los programadores escriben las instrucciones que ha de ejecutar el procesador de la máquina mediante lenguajes formales, llamados ``de alto nivel'', bastante cercanos al inglés, si bien con rígidas reglas sintácticas que lo asemejan a los lenguajes lógico-formales. Esto facilita enormemente la tarea de escribir programas pero, para que esas instrucciones sean comprensibles para el procesador, deben ser convertidas antes a código-máquina. Esa conversión se realiza cómodamente con programas especiales, llamados compiladores. A lo que escribe el programador se le denomina ``código-fuente''. Al resultado de la ``conversión'' (compilación) en lenguaje-máquina, se le denomina ``código-objeto'', ``binarios'' o ``ficheros ejecutables''. En principio, al usuario común sólo le importa este último nivel, los ``binarios'', pero conviene tener clara la distinción entre fuentes y binarios pues es clave para entender el empeño de los partidarios del software libre en disponer de las fuentes.

Pero el software libre es mucho más que el derecho de los programadores y de los hackers3 a disponer de las fuentes del código: significa también la libertad de copiar y redistribuir esos programas. Esos derechos, o su ausencia, condicionan a cualquiera que use un ordenador y han configurado la industria del software y de la informática tal y como la conocemos hoy día. También ha dado lugar a un movimiento social --el del software libre-- cuya historia reconstruiremos brevemente en las próximas líneas.

Next: Los inicios Up: Cooperación sin mando: una Previous: Cooperación sin mando: una