06.10.2026 · Signal Titans Editorial
Líneas desde la PDP-7: la trayectoria de cincuenta años de cat en Unix
Cómo la utilidad cat creada por Ken Thompson en 1969 evolucionó entre ensamblador, C y reescrituras de BSD hasta impulsar los sistemas operativos actuales.

En 1969, Ken Thompson se sentó ante una computadora PDP-7 de Digital Equipment Corporation para escribir la versión original de la utilidad cat de Unix. Como el lenguaje de programación C aún no existía, Thompson concibió la herramienta en ensamblador de PDP-7 mediante un ensamblador personalizado que él mismo desarrolló. Su ensamblador ampliaba las instrucciones estándar al permitir que el punto y coma separara varias sentencias en una sola línea e introducía etiquetas numéricas temporales del 0 al 9 para agilizar los saltos locales. Según la documentación del código fuente histórico, esta implementación inicial en ensamblador de 1969 ya incluía versiones primitivas con búfer de las rutinas getc y putc para gestionar las operaciones de entrada y salida.
Bases en ensamblador en la PDP-7
Las extensiones personalizadas del ensamblador que Thompson diseñó para la PDP-7 permitieron que los primeros programas de Unix se mantuvieran compactos al gestionar rutinas de hardware de bajo nivel. Las etiquetas temporales del 0 al 9 redujeron la carga de la tabla de símbolos en el ensamblador, lo que permitió a Thompson reutilizar destinos de salto numéricos a lo largo del archivo sin necesidad de inventar nombres únicos para cada pequeña bifurcación.
Perfeccionamiento en la PDP-11 y la transición a C
Cuando Unix se adaptó a la computadora PDP-11 de Digital Equipment Corporation, cat se reescribió para el conjunto de instrucciones del nuevo sistema. La versión para PDP-11 perfeccionó el comportamiento de la utilidad de modo que, si se invocaba sin argumentos de archivo o con un solo guion, leía directamente de la entrada estándar. Un cambio estructural de gran calado llegó con la Séptima Edición de Unix, que introdujo la primera implementación de cat escrita en el lenguaje de programación C. Centrada en un bucle de lectura clásico de dos líneas que procesaba caracteres hasta alcanzar una señal de fin de archivo, esta entrega de la Séptima Edición solo reconocía una opción de línea de comandos: la marca -u, que desactivaba el búfer de bloques de 512 bytes predeterminado.
Las opciones de 4BSD y la reescritura de Kevin Fall para Net/2
A medida que el software de Unix evolucionaba en entornos académicos, la cuarta entrega de Berkeley Software Distribution —conocida como 4BSD— amplió la interfaz de línea de comandos de la utilidad en 1980. Esta versión introdujo opciones como -n, -b, -v, -s, -e y -t para controlar la numeración de líneas y la visualización de caracteres. En 1989, el informático Kevin Fall emprendió una reescritura completa de cat para BSD Net/2, un proyecto concebido para eliminar el código fuente propietario de AT&T Unix de la distribución. Fall reorganizó la herramienta al dividir su ejecución en un modo directo sin procesar («raw») para la copia estándar de caracteres y un modo procesado («cooked») para gestionar las opciones de formato de la línea de comandos.
Sistemas operativos modernos y la durabilidad del código
La reestructuración arquitectónica de Fall demostró ser extraordinariamente duradera a lo largo de décadas de lanzamientos de sistemas operativos. En 2007, Apple incorporó a Mac OS X 10.5 Leopard una implementación de cat procedente de FreeBSD de 2005, la cual mantenía la estructura fundamental de Fall. Aunque las bibliotecas de software circundantes evolucionaron, la estructura subyacente del código que Fall escribió en 1989 permaneció intacta dentro de las herramientas de línea de comandos del sistema operativo. Hoy en día, al inspeccionar el código fuente de cat en una instalación moderna de macOS, se observa el nombre de Kevin Fall conservado en lo más alto del encabezado del archivo.
El funcionamiento continuo del código estructurado por Fall en 1989 en millones de computadoras portátiles actuales demuestra cómo los componentes de software esenciales perduran tras décadas de transformaciones informáticas. Mientras que las interfaces de usuario y los entornos de desarrollo de aplicaciones de alto nivel experimentan rediseños constantes, las utilidades básicas como cat sobreviven gracias a que su mecánica interna resuelve con fiabilidad tareas fundamentales de procesamiento de datos. El código redactado hace treinta o cincuenta años sigue desplegado activamente bajo la superficie de los sistemas operativos modernos.
Ilustración editorial generada con IA; no es una fotografía documental.