Traducción criolla de un extracto de Just for Fun (2001), la biografía del creador de Linux, Linus Torvalds, escrita en conjunto con David Diamond.
En este capítulo, Torvalds relata sus experiencias como estudiante en la Universidad de Helsinki, época en la que experimentó por primera vez con el sistema operativo Unix que, poco después (y tras unos meses de trabajo frenético), daría origen a Linux. Para expresar la sencillez y la belleza de Unix, Torvalds dialoga con dos disciplinas ajenas a la informática: la física y la lingüística.
Linus Torvalds y algunos peluches de Tux, la mascota oficial de Linux
El año académico que inició en el otoño de 1990 fue la primera vez que la Universidad de Helsinki adquirió Unix, el poderoso sistema operativo que había sido creado en Bell AT&T Labs a fines de 1960 pero que luego creció en otro lugar. En mi primer año de estudiante, teníamos una computadora VAX que corría VMS. Era un sistema operativo horrible: sin duda, no era de esos que te hacían decir “che, me encantaría tener esto en casa”. En vez de eso, te hacía decir: “hmmm, ¿cómo hacés eso?”. VMS es difícil de usar. No tenías muchas herramientas. No estaba especialmente preparado para acceder a Internet, que en ese momento corría sobre Unix. No podías saber de manera simple qué tan grande era un archivo. Es cierto que VMS servía muy bien para ciertas operaciones, como manejo de bases de datos. Pero no era el tipo de sistema operativo que te llenaba de entusiasmo.
La universidad se había dado cuenta de que era tiempo de dejar todo eso atrás. Gran parte del mundo académico se estaba enamorando de Unix, así que la universidad adquirió una MicroVAX que corría Ultrix, una versión de Unix a cargo de Digital Equipment Corporation. Esta era una manera de tantear el terreno de Unix.
La Universidad de Helsinki facilitó una licencia para dieciséis usuarios para la MicroVAX. Esto significaba que el cupo de admisión para el curso de C y Unix estaba limitada a 32 estudiantes: supongo que la idea era que dieciséis personas usarían la máquina de día y dieciséis personas de noche. Como para el resto de nosotros, Unix era totalmente nuevo para el profesor. Él admitió esto desde el principio, así que no fue realmente un problema. Pero él iba leyendo el texto sólo un capítulo por delante de los estudiantes, mientras que los estudiantes, en ocasiones, íbamos tres capítulos adelantados. Todo esto se volvió una especie de juego en el que nosotros tratábamos de enredar al profesor preguntándole cosas relacionadas a problemas que íbamos leyendo tres capítulos más adelante, sólo para ver si él ya había llegado a leerlos.
Todos éramos niños en los bosques de Unix, de modo que el curso se iba inventando mientras avanzaba. Pero lo que era evidente desde el principio era la filosofía única que hay detrás de Unix. Eso es algo que podías entender desde la primera hora del curso, y el resto era nada más que explicar los detalles.
Lo que es especial sobre Unix es el conjunto de ideales fundamentales que anhela. Es un sistema operativo limpio y hermoso. Unix evita los casos especiales. Involucra una noción de proceso: un proceso es cualquier cosa que hace algo. Un ejemplo simple: en Unix, el intérprete de comandos_,_ que es lo que te sirve para acceder al sistema operativo, no está construido dentro del sistema operativo como en el caso de DOS. Es sólo una tarea, similar a cualquier otra tarea. Lo único que hace es leer de tu teclado y escribir de vuelta a tu monitor. Todo lo que hace algo en Unix es un proceso. También tenés archivos.
Ejemplo de *Bash, un intérprete de comandos (shell command) de uso frecuente en Unix
Este diseño simple es lo que me intrigó, y nos intrigó a todos, acerca de Unix (al menos, a nosotros, los geeks). En realidad, gran parte de lo que hacés en Unix lo hacés con solamente seis operaciones básicas (denominadas llamadas al sistema porque son las llamadas que hacés al sistema operativo para que haga cosas por vos). Con estas seis llamadas básicas, podés construir básicamente todo.
También existe esta noción de fork, que es una de las operaciones fundamentales de Unix. Cuando un proceso hace un fork, crea una copia completa de sí mismo. De este modo, tenés dos copias que son iguales. La copia “hija”, a menudo, termina ejecutando otro proceso: esto es, reemplazándose a sí misma con otro programa. Esta es la segunda operación básica. Tenés además las otras cuatro llamadas al sistema: abrir, cerrar, leer y escribir — todas diseñadas para acceder a los archivos. Estas seis llamadas del sistema constituyen las operaciones que comprende Unix.
Por supuesto, hay miles de otras llamadas al sistema para cubrir todos los detalles. Pero una vez que entendiste las seis llamadas básicas, entendés Unix. Porque algo hermoso de trabajar con Unix es cuando te das cuenta de que no necesitás tener interfaces complejas para construir algo complejo. Podés construir programas con cualquier nivel de complejidad a partir de las interacciones de cosas simples. Lo que hacés es crear canales de comunicación (llamados pipes en idioma Unix) entre procesos simples para crear soluciones complejas.
Un sistema “feo” es aquel en el cual existen interfaces especiales para cualquier cosa que quieras hacer. Unix es lo opuesto. Te da bloques básicos que son suficientes para hacer cualquier cosa. De eso se trata tener un diseño “limpio”.
Lo mismo sucede con los idiomas. El idioma inglés tiene veintiséis letras, que sirven para poder construir todo a partir de esas letras. O tenés el idioma chino, en el que tenés una letra para cada cosa que puedas concebir. En chino, empezás con complejidades, y podés combinar estas complejidades de maneras limitadas. Esto es más similar al abordaje de VMS: tener cosas complejas que tienen significados interesantes pero que no pueden utilizarse de ninguna otra forma. También es el abordaje de Windows.
Unix, por lo contrario, viene con una filosofía de “pequeño es hermoso”. Tiene un conjunto limitado de bloques de construcción simples, que pueden combinarse entre sí para permitir expresiones de una complejidad infinita.
Dicho sea de paso, así también es como funciona la física. Podés intentar encontrar las reglas fundamentales, que — suponemos — son bastante simples. La complejidad proviene de las múltiples e increíbles interacciones que pueden obtenerse a partir de esas reglas simples, y no de una complejidad inherente a las reglas mismas.