Unix vs. GNU. La historia de cómo comenzó Unix

Muchos de los comandos de la segunda edición de Unix de 1972 todavía se usan en los sistemas basados en Unix como las distribuciones GNU/Linux actuales. Repasemos cómo comenzó Unix y cómo ha cambiado con el tiempo

Hoy en día, pensamos en Unix como GNU/Linux, y mucha gente ve el Unix original a través de la lente de GNU/Linux. Pero Unix tiene una larga historia, y la apariencia de Unix ha cambiado con el tiempo.

Cuando hablamos de «cómo era en los primeros días de Unix», en realidad no tenemos una idea sólida porque la forma en que trabajamos ha cambiado mucho desde entonces.

Este artículo en una traducción/adaptación del artículo original en inglés escrito por Jim Hall y publicado bajo una licencia libre en el blog de redhat.com.

En el artículo original se confunde (u omite deliberadamente) Linux (el kernel) con GNU el sistema operativo que usa el kernel Linux. GNU (acrónimo recursivo de GNU is Not Unix) fue desarrollado por Richard Stallman en 1983 como versión de software libre del sistema Unix con licencia privativa.

Los comandos de Unix que mencionan, forman parte del sistema GNU, no del kernel Linux. Aunque de manera popular se conozca al sistema con el nombre general de Linux, cabe destacar y dar crédito a GNU, que fue el sistema que liberó las herramientas y comandos de Unix.

Empezamos a indagar en la «prehistoria» de la informática.

Photo by cottonbro on Pexels.com

Del prototipo a un primigenio Unix

Echemos un vistazo a cómo comenzó Unix. En 1969, Ken Thompson, investigador de Bell Labs, estaba experimentando con diseños de sistemas operativos. Bell Labs tenía una computadora PDP-7 con un dispositivo periférico interesante: una unidad de disco muy rápida (para la época). Ken experimentó escribiendo una interfaz personalizada para maximizar el rendimiento de la unidad.

En algún momento, Ken se dio cuenta de que había trabajado tanto en la interfaz que era casi un sistema operativo en sí mismo. Thompson calculó que necesitaba tres semanas más para convertirlo en un sistema operativo prototipo: cada una de esas tres semanas para escribir un editor, un ensamblador y un kernel.

Ese prototipo fue el comienzo del sistema Unix.

Ese primer sistema operativo prototipo resultó ser una idea bastante buena. Y con el tiempo, Thompson y otras personas en Bell Labs le agregaron nuevos programas, con el patrón de diseño general de que cada programa debe ser pequeño y hacer una cosa realmente bien. (filosofía Unix)

El nuevo sistema se denominó Unix, un juego con el nombre Multics, un proyecto fallido en el que Bell Labs había participado unos años antes.

Crecimiento de los primeros Unix

En noviembre de 1971, Bell Labs recopiló los programas y lanzó la 1.ª edición de Unix, seguida de la 2.ª edición de Unix en julio de 1972. Estas primeras versiones de Unix no están muy alejadas de los sistemas GNU/Linux actuales.

Muchos de los comandos en los que confiamos todos los días en Linux ya estaban presentes en la segunda edición de Unix, incluidos cat, chdir (como cd), chmod, chown, cmp, cp, date, df, du, echo, find, ln, ls, man, mkdir, mount, mv, rm, rmdir, sort, umount, wc, y who. Y algunos otros comandos que aún existen pero que no se usan con frecuencia, como ar (archivo), dc (calculadora de escritorio), ed (editor) y sum (suma de verificación del archivo).

La segunda edición de Unix también admitía versiones anteriores de correo electrónico y mensajes instantáneos, con mail (correo electrónico), mesg y write (mensajes a los usuarios).

Los programadores tenían una variedad de compiladores y herramientas para ayudarlos a escribir nuevos programas, incluidos as (ensamblador), bas (programación BASIC), cc (compilador C), db (depurador), fc (compilador FORTRAN), ld (enlazador), nm (lista de nombres), od (volcado octal), strip y un (búsqueda de símbolos indefinidos).

Es posible que reconozca estas herramientas en los sistemas GNU actuales, aunque podríamos usar nombres ligeramente diferentes para ellas, como gcc el compilador GNU para compilar programas en C.

Algunos comandos de Unix han cambiado de nombre con el tiempo, pero es posible que aún reconozca a sus predecesores anteriores en Unix 2nd Edition. Programas como sh shell (compatible con versiones anteriores de : etiquetas, goto e if), check y salv (como fsck), dsw (como rm -i), istat (proviene de inode), m6 (un procesador de macros temprano, el predecesor a m4 de hoy) y tm (información de tiempo del sistema, similar a uptime y otros comandos modernos).

Otros comandos eran reliquias de su tiempo, dedicados a sistemas que ya no existen. Por ejemplo, el manual Unix 2nd Edition define herramientas para comunicarse con un mainframe Honeywell 6070, incluyendo dpd (daemon de teléfono de datos), tss (sistema de tiempo compartido de Honeywell 6070) y opr (imprimir archivos «fuera de línea» en Honeywell 6070).

Procesando texto

Unix se convirtió rápidamente en una plataforma popular dentro de Bell Labs, por lo que Thompson buscó un hardware más potente para ejecutar el nuevo sistema. Desafortunadamente, la dirección no quería invertir en la investigación del sistema operativo, ya que se sintió desilusionada por el fallido proyecto Multics. Pero el pequeño equipo de Unix encontró una solución.

El departamento de Patentes estaba a punto de comprar un nuevo sistema informático que podrían usar para escribir solicitudes de patentes. Sin embargo, el nuevo software no estaría listo de inmediato. El equipo de Unix hizo una contrapropuesta: comprar un nuevo PDP-11 para que los laboratorios desarrollen la próxima versión de Unix y, a su vez, el equipo de Unix actualizaría el sistema de procesamiento de texto roff para admitir las funciones necesarias para escribir solicitudes de patentes.

Y es por eso que la 2.ª edición de Unix también incluye una variedad de herramientas de procesamiento e impresión de documentos que incluyen nroff (la «nueva versión de roff»), ov (superposición de páginas impresas), pr (preprocesador de impresión) y type (imprimir en un teletipo).

Más tarde, cuando los laboratorios compraron una máquina tipográfica, el programa de composición tipográfica nroff se actualizó con nuevas funciones. troff (la «versión tipográfica de roff») apareció por primera vez en Unix 4th Edition en 1973. Otras herramientas de formato de texto admitían troff, como eqn para generar ecuaciones y tbl para crear tablas.

Otras herramientas de procesamiento de texto ahora familiares no aparecerían en Unix hasta revisiones posteriores. En particular, la capacidad de enviar la salida de un comando a otro (usando «conductos»tuberías») no apareció hasta la 3. Unix 5ª edición, 1974).

El primer shell de Unix todavía era bastante primitivo y no sería reemplazado por un Bourne Shell más rico en funciones hasta la séptima edición de Unix en 1979.

Las raices de Unix en GNU

Realmente es fascinante esta «arqueología informática». No solemos pensar en los orígenes de los comandos de GNU/Linux que usamos todos los días. Estos comandos se originaron en una época más simple cuando la memoria de la computadora se medía en kilobytes, por lo que las herramientas debían ser de pequeño tamaño y de naturaleza enfocada.

Sin duda, Unix de hace 50 años carecía de la amplitud de opciones de línea de comandos que disfrutamos hoy. Por ejemplo, el comando ls moderno anuncia 60 opciones de línea de comandos diferentes, mientras que ls de la segunda edición de Unix admitía solo cinco. Pero claramente se mostró prometedor, incluso en los primeros días, y creció rápidamente.

Hoy en día, cada sistema Unix puede rastrear su ascendencia hasta el Unix original. Eso incluye GNU/Linux, que utiliza herramientas GNU que se basan en la documentación de Unix.

GNU/Linux definitivamente está muy alejado de sus raíces Unix, admite arquitecturas modernas y dispone de una gama de herramientas modernas útiles, pero la experiencia de la línea de comandos central sigue siendo bastante similar a la de Unix de la década de 1970.

La próxima vez que uses ls para listar archivos en tu equipo o servidor, ten presente que estás usando un comando de hace 50 años o más. Y todavía sigue.

6 comentarios sobre “Unix vs. GNU. La historia de cómo comenzó Unix

  1. Muy interesante.

    Cuando vi cc… se me ocurrió «ostias, gcc (GNU cc)». 😂

    Como curiosidad, aunque llevo unos 25 años en Linux (los 10 primeros trasteando), nunca supe lo que significaba GNU. 😅

    Saludos

  2. Gracias por la traducción! Hacía mucho que no leía sobre la génesis de GNU, este repaso a Unix me ha parecido fenomenal: es divertido, efectivamente, comprobar que todavía uso a diario comandos de Unix.

  3. Me encanta cuando se habla de Unix, ojala FreeBSD en entornos de escritorio evolucione rápido y bien para que sea una alternativa mas como lo es GNU/Linux, y lo digo por si llega el día en que nuestro querido pingüino sea secuestrado por las grandes corporaciones.

    1. Hola!
      Cierto, BSD siempre me ha llamado la atención, y es un gran olvidado, que me gustaría probar…
      Gracias por la visita y por compartir tu opinión!!
      Saludos.

    1. Siempre está bien conocer los orígenes. El original me daba rabia que no mencionase más explicitamente a GNU y llamase Linux en general…
      Saludos y un placer encontrarte por aquí! 🙂

Me gustaría saber tu opinión. Deja un comentario (Puedes usar MarkDown)

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.