El Código Fuente

La Primera Clave para discriminar el software ético del que no lo es. #

  1. Hoy en día estamos llenos de computadores. No solo los computadores mismos, sino que los teléfonos, los relojes, los refrigeradores, las cocinas inteligentes y muchos otros dispositivos que tenemos en nuestras casas, todos son en verdad computadores
  2. Los computadores tienen dos partes:
    1. Hardware: Es lo físico, lo que podemos ver y tocar (la pantalla, el mouse, etc.)
    2. Software: Una persona piensa ideas, y estas ideas no son cosas tangibles: no podemos verlas ni tocarlas, pero éstas se manifiestan en las caras que la persona pone, o en lo que dice o realiza. Asimismo, el software, que son los programas que corren los computadores, no podemos verlo o tocarlo directamente, pero podemos ver en la pantalla sus manifestaciones, oír por el parlante sus sonidos, etc.
    3. El concepto de software y sus implicancias puede no ser fácil de entender de primeras(Ver “Ontología del Software”), pero sí es muy importante educarnos, pues hoy en día el software nos rodea por todos lados; y lamentablemente algunas empresas, buscando maximizar su capitalización, se aprovechan de esta ignorancia e ingenuidad nuestra para abusar de la humanidad completa.

La creación de software comienza con un programador o desarrollador escribiendo código en algún lenguaje de programación. Este código o lenguaje pueden parecer chino para alguien que por primera vez lo ve, pero lo cierto es que si nos enseñan un poquito las cosas básicas de cómo funciona, en verdad nos damos cuenta que no es tan complicado, y que tiene bastante sentido. De hecho, el lenguaje de programación es un lenguaje diseñado para que lo entiendan los humanos. Aquí un ejemplo:

Figure 1: Un programa simple que pregunta tu nombre para luego saludarte; luego pregunta tu edad para sumarle un año y decirte qué edad tendrás dentro de un año

Figure 1: Un programa simple que pregunta tu nombre para luego saludarte; luego pregunta tu edad para sumarle un año y decirte qué edad tendrás dentro de un año

Pero pasa que las máquinas digitales (un computador en este caso), en realidad no leen este código, sino que ejecutan el código binario, que es una secuencia muy larga de solo ceros y unos. Algo así como 01110100010101000111100011101. Entonces, con combinaciones de ceros y unos, se construye todo tipo de letras, palabras, colores, sonidos, etc.1

Figure 2: Un “diccionario” que dice cómo escribir algunos caracteres con código binario.

Figure 2: Un “diccionario” que dice cómo escribir algunos caracteres con código binario.

Entonces, una vez que el programador tiene el software listo en lenguaje de programación, tiene que pasarlo a binario, para que el computador lo pueda ejecutar. Esto se llama compilar el código. Una vez que el código está compilado, tenemos como resultado un binario ejecutable.

Figure 3: El código fuente es “transformado” por un compilador en código binario, para que lo ejecute el computador.

Figure 3: El código fuente es “transformado” por un compilador en código binario, para que lo ejecute el computador.

El código binario sirve al computador para ejecutar el programa, pero para una persona no tiene mucho valor. Imagínate una secuencia interminable de miles de millones de unos y ceros, es prácticamente imposible traducirla a un lenguaje comprensible para un humano. O sea, el proceso de compilar podríamos decir que es de una sola vía: de código fuente a binario, pero si tenemos solo el binario, no podemos generar un código fuente.2

poder determinar qué es lo que significa o la función que cumple. La gran mayoría (lamentablemente) del software que los usuarios compran, adquieren y usan, es solo código binario. Se puede ejecutar, pero no sabemos qué está haciendo en realidad el software, porque no tenemos acceso al código fuente. Es como si contrataramos una empresa para que construyeta un muro alrededor de nuestra casa para protegerla, pero la empresa solo hiciera el trabajo con la condición de instalar sobre el muro unas telas opacas, las que impiden ver si es que existieran puertas, agujeros, partes rotas, o cualquier tipo de vulnerabilidad de seguridad en el muro. Pero no se trata solo del muro que protege nuestra casa, ya que si estamos hablando por ejemplo del Sistema Operativo de nuestro computador o teléfono, es como si fuera el sistema completo de nuestra casa! La red eléctrica, de agua, los muebles, los espejos, los colchones, los libreros y repisas, controladas por una empresa que es la única que sabe cómo funciona, y se guarda el derecho de poder incluir cualquier modificación, tener el monopolio del servicio, y puede mantener como secreto el funcionamiento completo de los sistemas. Ontología del Software Estamos confiando a ojos cerrados en la empresa que construye la totalidad de la casa y nos la entrega “llave en mano”. Éstas, son empresas como Microsoft, Apple, Adobe u otras. Estas empresas tienen un largo historial de acciones poco éticas.

Entonces, podemos diferenciar entre dos tipos distintos de software: aquellos, privativos, que no muestran su código; y otros libres, de los cuales podemos ver y modificar su código fuente.

Son estos últimos los únicos en que podemos confiar, porque en el mundo físico no podrías confiar en un enmascarado en un vehículo con vidrios polarizados, o sí?


  1. Un dato interesante: el espacio que ocupa un cero o un uno, es un espacio binario (porque puede existir solo en uno de dos valores; o cero, o uno), y se llama un bit. Si juntamos ocho bits, tenemos un byte. 10010101 es un ejemplo de byte. Si juntamos mil bytes tenemos un kilobyte, y si juntamos un millón de bytes, un megabyte, y así… ↩︎

  2. Una nota que puede parecer obvia, pero no necesariamente para alguien que no tiene experiencia con computadores: Al compilar (convertir el código fuente en binario), sigue existiendo una copia del código fuente, es decir, el original no se destruye. Bueno, en general en computación todo es así, si quieres modificar o transformar algo, haces una copia transformada, ya que copiar información no tiene practicamente ningún costo. Ver: Economía de la Información ↩︎