Ir al contenido principal
Bethemesh
BiografíaHistoria de la informática

Brian Kernighan: AWK, Unix y el arte de explicar el código

Descubre cómo Brian Kernighan dio forma a AWK, difundió C y Unix, creó herramientas especializadas y estableció una pedagogía duradera de la programación.

Publicado el 24 de agosto de 2026Lectura : 7 minPor Equipo Bethemesh
Principiante
Retrato de Brian Kernighan en un entorno que evoca Unix, C y el procesamiento de texto
Mostrar el contenido
  1. De Toronto a Bell Labs
  2. Unix como taller de pequeñas herramientas
  3. Ratfor: mejorar la escritura sin reemplazar la infraestructura
  4. AWK: convertir patrones en acciones
  5. K&R: el libro que estabilizó una forma de escribir C
  6. Explicar la filosofía Unix mediante la práctica
  7. Pequeños lenguajes para problemas precisos
  8. De la práctica de programación a la enseñanza
  9. Una historia de colaboraciones correctamente atribuidas
  10. Por qué Brian Kernighan sigue siendo importante
  11. Cronología
  12. Preguntas frecuentes
  13. ¿Creó Brian Kernighan el lenguaje C?
  14. ¿Quién creó AWK?
  15. ¿Para qué se sigue usando AWK?
  16. ¿Qué es un pequeño lenguaje?
  17. ¿Por qué influyeron tanto los libros de Kernighan?

Brian Kernighan ocupa un lugar singular en la historia de los lenguajes. No creó Unix ni C; esas aportaciones corresponden principalmente a Ken Thompson y Dennis Ritchie. Su influencia procede de un trabajo igual de duradero: construir herramientas alrededor de Unix, codiseñar lenguajes especializados y hacer comprensibles y reutilizables las ideas del laboratorio.

Su nombre permanece asociado a AWK, diseñado con Alfred Aho y Peter Weinberger, y a The C Programming Language, escrito con Ritchie. Ratfor, eqn, pic, AMPL, las herramientas Unix, las pruebas y décadas de docencia revelan una idea coherente: un lenguaje pequeño puede simplificar una tarea precisa.

Kernighan contribuyó a una cultura donde una buena herramienta hace pocas cosas con claridad y se combina bien con las demás.

De Toronto a Bell Labs

Brian Wilson Kernighan nació en Toronto en 1942. Estudió física de ingeniería en la Universidad de Toronto y terminó en Princeton un doctorado en ingeniería eléctrica sobre particionamiento de grafos en 1969. Ese año se incorporó al Computing Science Research Center de Bell Labs.

El laboratorio reunía investigadores capaces de pasar de la teoría de lenguajes a la implementación y la documentación. Unix tomaba forma alrededor de Thompson y Ritchie. Kernighan probó herramientas, escribió programas, mejoró documentación y ayudó a convertir un prototipo local en un entorno que otros podían utilizar.

También se le atribuye generalmente el nombre Unix, un juego de palabras con Multics. La anécdota refleja su capacidad para expresar una idea técnica de forma compacta y memorable.

Unix como taller de pequeñas herramientas

La fuerza de Unix no residía solo en el núcleo, sino también en programas que leían y escribían flujos sencillos y podían conectarse mediante pipelines. Un comando seleccionaba líneas, otro las ordenaba y un tercero generaba un informe.

Con Lorinda Cherry, Kernighan desarrolló eqn para describir fórmulas matemáticas. También trabajó en pic, destinado a diagramas, y en sistemas de composición relacionados con troff. La notación especializada describía la estructura y la herramienta calculaba la presentación.

Los archivos de texto seguían siendo legibles, modificables, archivables y compatibles con otros comandos. Este enfoque anticipó la documentación como código, la generación reproducible y las herramientas especializadas dentro de cadenas automatizadas.

Ratfor: mejorar la escritura sin reemplazar la infraestructura

Las versiones antiguas de FORTRAN dificultaban la programación estructurada. Kernighan creó RatforRational Fortran— con bloques, bucles y condiciones que se traducían al Fortran aceptado por los compiladores existentes.

Ratfor mejoraba la expresión reutilizando la infraestructura instalada. Software Tools, escrito con P. J. Plauger, lo utilizó para enseñar a construir herramientas de texto portables, no solo para presentar programas terminados.

El proyecto ilustra un principio recurrente: intervenir en el punto más económico. Un preprocesador modesto puede difundir una práctica mejor con más rapidez que un sistema completamente nuevo.

AWK: convertir patrones en acciones

En 1977, Alfred Aho, Peter Weinberger y Brian Kernighan diseñaron AWK, cuyo nombre reúne sus iniciales. Aho aportó su experiencia en expresiones regulares, Weinberger realizó la primera implementación y Kernighan buscó una forma fluida de procesar texto y números juntos.

El lenguaje asocia patrones con acciones. Lee registros, divide líneas en campos, comprueba condiciones y ejecuta las operaciones correspondientes. El recorrido y los campos son implícitos, de modo que el programa expresa lo que varía.

AWK se sitúa entre un filtro y un lenguaje general. Extrae columnas, agrega medidas, convierte formatos, produce informes y valida registros sin exigir un programa compilado en C. Su equilibrio nace de combinar teoría, necesidades de informes, implementación pragmática y experiencia con pipelines.

K&R: el libro que estabilizó una forma de escribir C

Dennis Ritchie creó C para desarrollar Unix y sus herramientas. Antes de la normalización, su difusión necesitaba explicaciones precisas, ejemplos realistas y una descripción estable para programadores y autores de compiladores.

Kernighan y Ritchie publicaron The C Programming Language en 1978. K&R unió el conocimiento del creador con la experiencia pedagógica de Kernighan y presentó C mediante programas breves y ejecutables.

La primera edición se convirtió en referencia de facto; la segunda, de 1988, acompañó al C ANSI. También difundió indentación regular, funciones limitadas, nombres cuidados, pruebas rápidas y ejemplos verificables. Kernighan no inventó C: ayudó a explicarlo fuera de Bell Labs.

Explicar la filosofía Unix mediante la práctica

Con Rob Pike, Kernighan publicó The Unix Programming Environment en 1984. Enseñaba a pensar con el shell, filtros, archivos de texto y programas componibles, no solo a memorizar comandos.

Los problemas se descomponían progresivamente: comenzar con un comando, observar sus límites y después combinar herramientas o diseñar un pequeño lenguaje. Kernighan condensó esta cultura en principios asociados a Unix: hacer una cosa bien, cooperar y usar formatos inspeccionables.

Los pipelines también tienen límites. El texto puede perder estructura, los errores circulan mal y las cadenas largas son difíciles de mantener. La lección no es que todo deba ser texto, sino que las interfaces sencillas y la composición explícita suelen reducir el coste de integración.

Pequeños lenguajes para problemas precisos

Kernighan continuó este enfoque con AMPL, diseñado junto a Robert Fourer y David Gay para el modelado matemático. El usuario describe variables, restricciones y objetivos sin implementar el algoritmo numérico.

AMPL separa el modelo del motor que lo resuelve. Como eqn y AWK, captura conceptos del dominio para evitar traducirlos manualmente a operaciones de bajo nivel.

Esta es la idea de pequeño lenguaje: una notación limitada y muy expresiva en un ámbito definido. Lenguajes de consulta, configuraciones, motores de reglas y herramientas de construcción siguen la misma lógica, aunque un mal diseño puede acumular demasiadas excepciones.

De la práctica de programación a la enseñanza

Los libros de Kernighan prolongan su trabajo sobre herramientas. The Elements of Programming Style, con P. J. Plauger, estudia programas reales; The Practice of Programming, con Rob Pike, aborda diseño, depuración, pruebas, rendimiento, portabilidad e interfaces.

Su principio común es que el estilo no es decorativo. El código legible muestra sus hipótesis, las interfaces reducidas limitan dependencias y las pruebas sistemáticas hacen menos arriesgados los cambios.

Mantener AWK durante décadas reforzó esta visión: el software portable encuentra entradas y plataformas inesperadas. Las pruebas aclaran el comportamiento esperado y detectan regresiones. En 2000, Kernighan dejó Bell Labs por Princeton, donde enseña a especialistas y no especialistas.

Una historia de colaboraciones correctamente atribuidas

La obra de Kernighan es inseparable de sus colaboradores. Ritchie diseñó C; Thompson y Ritchie crearon Unix; Aho, Weinberger y Kernighan diseñaron AWK; Fourer y Gay participaron en AMPL; Cherry, Plauger y Pike aportaron contribuciones sustanciales.

Esta precisión refuerza su importancia. Su habilidad distintiva fue reconocer ideas compatibles, construir el lenguaje o ejemplo que las relacionaba y explicarlas con suficiente claridad para que otros las reutilizaran.

Bell Labs favorecía un ciclo corto entre diseño, uso local exigente, corrección y documentación. Las herramientas se difundieron gracias a ese ciclo de construcción y transmisión.

Por qué Brian Kernighan sigue siendo importante

Los ecosistemas modernos son mucho mayores que el Unix de los setenta, pero afrontan las mismas decisiones: añadir una dependencia o escribir una herramienta, diseñar un formato general o un lenguaje de dominio, exponerlo todo o conservar una interfaz estrecha.

Los trabajos de Kernighan ofrecen criterios: expresar claramente el problema, evitar mecanismos innecesarios, mantener los datos inspeccionables, componer unidades autónomas y explicar mediante ejemplos verificables.

Su legado también es editorial. Una tecnología no se difunde solo por su mérito técnico, sino mediante palabras, ejemplos y una progresión que permiten adoptarla desde fuera. K&R hizo esto por C; sus otros libros lo hicieron por Unix y la propia práctica de programar.

Cronología

  • 1942: Brian Wilson Kernighan nace en Toronto.
  • 1964: se gradúa en física de ingeniería en la Universidad de Toronto.
  • 1969: termina su doctorado en Princeton y llega a Bell Labs.
  • Comienzos de los años 1970: contribuye a herramientas de texto y al entorno Unix.
  • 1975: se publica Ratfor.
  • 1976: publica Software Tools con P. J. Plauger.
  • 1977: crea AWK con Alfred Aho y Peter Weinberger.
  • 1978: aparece la primera edición de The C Programming Language.
  • 1984: publica The Unix Programming Environment con Rob Pike.
  • 1988: la segunda edición de K&R cubre el C ANSI.
  • Años 1980–1990: desarrolla AMPL con Robert Fourer y David Gay.
  • 2000: deja Bell Labs y se convierte en profesor de Princeton.
  • 2019: publica Unix: A History and a Memoir.
  • 2023: aparece la segunda edición de The AWK Programming Language.

Preguntas frecuentes

¿Creó Brian Kernighan el lenguaje C?

No. Dennis Ritchie diseñó C en Bell Labs. Kernighan contribuyó a su entorno y coescribió con Ritchie la obra decisiva para explicarlo, The C Programming Language.

¿Quién creó AWK?

Alfred Aho, Peter Weinberger y Brian Kernighan crearon AWK juntos; su nombre reúne sus iniciales. Sus conocimientos sobre patrones, implementación y tratamiento de texto y números determinaron el resultado.

¿Para qué se sigue usando AWK?

Sigue siendo eficaz para transformar rápidamente datos en líneas y columnas: registros, exportaciones, informes y salidas de comandos. Los formatos anidados o programas muy grandes pueden mantenerse mejor con otro lenguaje.

¿Qué es un pequeño lenguaje?

Es una notación diseñada para un dominio limitado, como los patrones y acciones de AWK, las ecuaciones de eqn o los modelos de AMPL. Su especialización expresa conceptos útiles con menos mecanismos generales.

¿Por qué influyeron tanto los libros de Kernighan?

Combinan explicaciones compactas con programas realistas y progresivos. En lugar de limitarse a enumerar funciones, enseñan métodos de diseño, prueba y composición aplicables a herramientas propias.

Fuentes y referencias

  1. 1.Princeton University --- Brian Kernighan
  2. 2.Computer History Museum --- Oral History of Brian Kernighan
  3. 3.Brian Kernighan --- Personal Home Page
  4. 4.Princeton University --- Brian Kernighan recognized for work on programming languages
  5. 5.Princeton Unix Archive --- Unix Oral History

Colección

Lenguajes de programación

  1. 01Grace Hopper: de los primeros compiladores a COBOL
  2. 02John Backus: FORTRAN, la notación BNF y el rechazo del código máquina
  3. 03Dennis Ritchie: el lenguaje C en el corazón de Unix
  4. 04FORTRAN: demostrar que un compilador podía competir con el ensamblador
  5. 05El lenguaje C: hacer portables los sistemas sin ocultar la máquina
  6. 06Niklaus Wirth: de Pascal a Oberon, diseñar mediante la simplicidad
  7. 07Bjarne Stroustrup: diseñar C++ sin renunciar al rendimiento
  8. 08Pascal: aprender a programar haciendo visible la estructura
  9. 09C++: de C with Classes a un lenguaje de propósito general
  10. 10Programación orientada a objetos: objetos, mensajes y abstracciones reutilizables
  11. 11Guido van Rossum: crear Python para que el código sea legible
  12. 12Brendan Eich: JavaScript, del prototipo de Netscape al estándar web
  13. 13James Gosling: el ingeniero que dio origen a Java
  14. 14Python: legibilidad, baterías incluidas y un ecosistema mundial
  15. 15Java: escribir una vez, ejecutar en cualquier lugar
  16. 16JavaScript: el lenguaje que hizo interactiva la Web
  17. 17Ken Thompson: de Unix a Go, la simplicidad como método
  18. 18John McCarthy: Lisp y la idea de programar con símbolos
  19. 19Alan Kay: Smalltalk y el ordenador como medio personal
  20. 20Barbara Liskov: la abstracción que hizo modular el software
  21. 21Robin Milner: ML, la prueba asistida y los lenguajes de la interacción
  22. 22Brian Kernighan: AWK, Unix y el arte de explicar el código
  23. 23Anders Hejlsberg: de Turbo Pascal a C# y TypeScript
  24. 24Larry Wall: Perl, el lenguaje que conectó las herramientas de Internet
  25. 25Yukihiro Matsumoto: Ruby y la felicidad del programador
  26. 26Rasmus Lerdorf: PHP y la democratización de la Web dinámica

¿Te ha resultado útil este artículo?