Dennis Ritchie diseñó un lenguaje deliberadamente compacto, lo bastante
próximo a la máquina para escribir un sistema operativo y lo bastante
independiente para trasladarlo a nuevos ordenadores. Esta combinación
convirtió C y Unix en fundamentos de la informática moderna.
Conviene distinguir las aportaciones. Ritchie fue el principal diseñador
de C. Unix fue un proyecto colectivo de Bell Labs iniciado por Ken
Thompson y desarrollado con Ritchie y otros
ingenieros. Su historia común muestra cómo un lenguaje y un sistema
operativo pueden transformarse mutuamente.
Dennis MacAlistair Ritchie nació en Bronxville, Nueva York, en 1941.
Estudió física y matemáticas aplicadas en Harvard, donde conoció los
ordenadores. En 1967 entró en el centro de investigación informática de
Bell Labs.
El laboratorio participaba en Multics, un ambicioso sistema de
tiempo compartido. Tras la retirada de Bell Labs en 1969, Ken Thompson
experimentó con un sistema más pequeño en un PDP-7. Con Ritchie y sus
compañeros, ese trabajo se convirtió en Unix.
Las primeras máquinas tenían poca memoria y el software de sistemas se
escribía a menudo en ensamblador. Este ofrecía control preciso, pero
ataba el programa a una arquitectura. Cambiar de ordenador obligaba a
reescribir buena parte del sistema.
De BCPL y B al lenguaje C
Thompson adaptó primero BCPL en un lenguaje llamado B. Servía para
algunas tareas, pero su modelo sin tipos encajaba mal con el PDP-11 y
sus distintos formatos de datos. Ritchie añadió tipos y creó el «New B»,
que se convirtió en C a principios de los setenta.
C siguió siendo pequeño. Sus construcciones correspondían directamente a
operaciones del procesador, mientras funciones, estructuras, punteros y
tipos organizaban el programa sin escribir cada instrucción en
ensamblador.
Un puntero representa una dirección de memoria. Permite código de
sistemas eficiente y estructuras flexibles, pero no evita
automáticamente accesos fuera de límites, uso de memoria liberada o
interpretaciones erróneas. La fuerza y los riesgos del lenguaje nacen en
parte de la misma decisión: confiar en quien programa.
Unix reescrito en C
Hacia 1973, la mayor parte del núcleo de Unix se reescribió en C.
Algunos fragmentos dependientes del hardware siguieron en ensamblador,
pero el grueso del sistema podía compilarse para una máquina nueva con
menos adaptación.
El resultado fue histórico no porque ningún lenguaje de alto nivel
hubiera servido antes para sistemas, sino porque Unix demostró de forma
convincente que un sistema operativo eficiente podía ser portable. C se
difundió con Unix en las universidades; Unix se benefició a su vez de la
adaptabilidad de C.
La relación también moldeó el lenguaje. C no se diseñó de forma
abstracta para aplicarlo después: sus tipos, operadores y biblioteca
evolucionaron frente a necesidades concretas. Muchas herramientas Unix
usaban el mismo lenguaje que el núcleo, facilitando su traslado.
El compilador como instrumento de portabilidad
La portabilidad no procede solo del texto del lenguaje. Requiere un
compilador que traduzca las mismas construcciones a distintos juegos de
instrucciones y una biblioteca que aísle servicios del sistema.
En Bell Labs, C evolucionó con sus compiladores. Debía ser fácil de
implementar y, a la vez, exponer características útiles. Matrices y
punteros están relacionados, las estructuras describen datos en memoria
y los operadores suelen corresponder a instrucciones baratas.
No existe independencia total. El tamaño de los tipos, el orden de bytes
y ciertos comportamientos varían. Un programa portable debe confiar en
las garantías del lenguaje, no en detalles de una máquina. La diferencia
entre lo prometido por la norma y lo elegido por una implementación se
volvió central.
La difusión académica de Unix creó un círculo virtuoso. Los estudiantes
recibían el sistema, su código y su lenguaje principal; desarrollaban
herramientas, portaban Unix y llevaban esas prácticas a la industria. C
viajó con un entorno de programación completo.
Una referencia antes de la norma
En 1978, Brian Kernighan y Dennis
Ritchie publicaron The C Programming Language. Conocido como K&R,
combinaba explicación concisa, ejemplos y una descripción que funcionó
durante años como referencia de hecho.
La multiplicación de compiladores hizo necesaria una norma. El comité
ANSI X3J11 comenzó en 1983; la norma estadounidense apareció en 1989 y
se convirtió en ISO en 1990. Precisó lenguaje y biblioteca intentando
conservar los programas existentes.
Ritchie no controló solo la evolución. Tras su creación, C se convirtió
en infraestructura compartida, gobernada por normas e implementada en
una inmensa variedad de procesadores.
Un legado técnico de doble filo
C influyó directamente en C++ y
Objective-C. Su sintaxis marcó Java, JavaScript, C#, Go y muchos otros
lenguajes, aunque difieran en memoria y ejecución.
Su presencia más profunda permanece en núcleos, controladores,
bibliotecas, microcontroladores, bases de datos y compiladores. Una
interfaz C suele actuar como terreno común entre componentes escritos
con distintas tecnologías.
Ese alcance no convierte C en la mejor opción universal. Sus pocas
protecciones facilitan desbordamientos de búfer y errores de duración de
vida. Herramientas de análisis, reglas y lenguajes más seguros intentan
reducir esos riesgos. Entender la influencia de Ritchie implica entender
por qué la industria protege ahora operaciones que C expone
directamente.
Ritchie, Thompson y la cultura Unix
Ritchie contribuyó como diseñador y programador, pero atribuir Unix a
una persona borraría Bell Labs. Thompson tuvo el papel inicial decisivo;
Brian Kernighan, Douglas McIlroy y otros participaron en sus
herramientas, ideas y difusión.
Ritchie y Thompson recibieron juntos el Premio Turing de 1983 por la
teoría genérica de sistemas y Unix. El premio relacionó acertadamente
sus contribuciones.
Ritchie continuó en Bell Labs y trabajó después en Plan 9 e Inferno.
Murió en 2011. Su estilo público sobrio contrasta con la extensión de su
legado.
Por qué Dennis Ritchie sigue importando
Ritchie ayudó a desplazar una frontera: el software de sistemas ya no
tenía que quedar preso del ensamblador de una máquina. C ofreció una
abstracción modesta pero decisiva, transparente para el hardware y
estable para la portabilidad.
La lección sigue vigente. Cada lenguaje de sistemas reformula los
compromisos entre rendimiento y protección, control y abstracción,
compatibilidad y progreso a los que C dio una respuesta duradera.
Cronología
- 1941: Dennis Ritchie nace en Bronxville, Nueva York.
- 1963: se gradúa en física en Harvard.
- 1967: entra en Bell Labs.
- 1969: comienzan los trabajos en Unix con Thompson y el equipo.
- 1971: Unix se porta al PDP-11.
- 1972: C toma una forma reconocible a partir de B.
- 1973: gran parte del núcleo Unix se reescribe en C.
- 1978: publica The C Programming Language con Brian Kernighan.
- 1983: Ritchie y Thompson reciben el Premio Turing.
- 1989: se publica la norma ANSI C.
- 1990: C se convierte en norma internacional ISO.
- 2011: fallece Dennis Ritchie.
Preguntas frecuentes
¿Creó Dennis Ritchie Unix?
Fue uno de sus principales desarrolladores, pero Unix fue una obra
colectiva iniciada por Ken Thompson en Bell Labs. Ritchie tuvo un papel
esencial en su desarrollo y reescritura en C.
¿Por qué creó Ritchie C?
Los lenguajes disponibles respondían mal a las necesidades de Unix en el
PDP-11. C debía ofrecer tipos y eficiencia próximos al hardware y
permitir trasladar el código.
¿Es C un lenguaje de bajo nivel?
Suele describirse como de nivel intermedio. Ofrece funciones y tipos,
pero expone directamente direcciones de memoria y representación de
datos.
¿Por qué importó reescribir Unix en C?
Redujo la dependencia del ensamblador de una máquina. Unix fue más fácil
de portar, se difundió y demostró la viabilidad de sistemas portables.
¿Qué papel tuvo Brian Kernighan?
No diseñó C, pero contribuyó a documentarlo y difundirlo. Su libro con
Ritchie sirvió de referencia antes de la normalización.
¿Por qué se sigue utilizando C pese a sus riesgos?
Produce código predecible, funciona en casi todas las arquitecturas y se
integra con sistemas existentes. Estas ventajas exigen más
responsabilidad sobre memoria y seguridad.