Patrocinado por:

La Historia del lenguaje C

David Bonilla LA BONILISTA

OCIO@

Ilustración original de Hugo Tobio, tarugo y dibujolari profesional de Bilbao
Ilustración original de Hugo Tobio, tarugo y dibujolari profesional de Bilbao Hugo Tobio

El lenguaje de programación que lo cambió todo

06 sep 2023 . Actualizado a las 18:03 h.

En 1972, se publicó la primera versión de C. Cincuenta y un años después, muchos programadores lo consideran un fósil de otra era que únicamente sirve para desarrollar a bajo nivel y raspar metal, pero la realidad es que la mayoría trabajamos con lenguajes de programación que —de una u otra manera— están basados en el mismo.

Y, aunque algunos lo ignoren, contribuyó de forma decisiva a la democratización de la Informática. Porque, antes de que C naciera, lo normal era que los lenguajes de programación se crearan para un sistema específico, lo que dificultaba enormemente la portabilidad del software entre distintas máquinas.

Un lenguaje de programación es una herramienta que tiene una inmensa influencia en la forma en la que estructuramos nuestros pensamientos.
— Edsger Dijkstra

La historia de C está íntimamente ligada a la del sistema operativo UNIX, que empezó a desarrollarse en 1969 usando ensamblador —un lenguaje de bajo nivel— o lo más cercano que existe a programar en código máquina, puros ceros y unos.

Para desarrollar aplicaciones para la nueva plataforma, Ken Thompson quería dotar a la misma de un compilador de un lenguaje de programación de alto nivel —más cercano al lenguaje humano— y creó una versión más sencilla del lenguaje BCPL, a la que denominó simplemente B. Y, como BCPL, B disponía de un «compilador», una pieza de software que traducía los programas al código máquina de un procesador específico, para facilitar la portabilidad de un sistema a otro.

Pero B no acababa de cuajar porque era lento. Así que, en 1971, Dennis Ritchie —otro miembro del grupo de desarrollo de UNIX— empezó a mejorar B para que incluyera nuevas funcionalidades, como un tipo de dato de texto, y llamó a esta versión «nuevo B» o NB.

Thompson empezó a usar NB en vez de ensamblador para programar UNIX y sus necesidades fueron modelando el desarrollo del lenguaje. A lo largo de 1972, se añadieron nuevos tipos de datos, punteros a memoria, arrays de todos los tipos y la posibilidad de que las funciones devolvieran esos tipos. Se creó un nuevo compilador y, en un alarde de imaginación, el lenguaje se renombró como «C».

La versión 2 de UNIX, ya incluía el compilador de C y algunas utilidades. La 4, lanzada en noviembre 1973, fue reimplementada casi por completo en C… lo que favoreció su portabilidad a otras máquinas —en teoría, «solo» había que crear un compilador para el sistema al que lo quisieras portar— y, por tanto, una explosión de su popularidad y la del lenguaje. El resto es Historia.

Antes de C ya existían lenguajes de alto nivel, como FORTRAN o COBOL, que tenían cierta portabilidad, pero estos tenían un dominio funcional específico y eran bastante ineficientes en el uso de memoria y tiempo de ejecución. Ritchie concibió C como una solución a este problema, diseñándolo para ser al mismo tiempo portable y eficiente.

Sus punteros de memoria, que tanto han sido criticados, fueron esenciales para garantizar la portabilidad. Aunque su gestión podía llegar a ser complicada, permitían acceder a la memoria de la máquina donde se ejecutara nuestro código, independientemente de la arquitectura subyacente.

El lenguaje C es como un escalpelo: afilado, eficiente... y peligroso, si no se maneja con cuidado.
— Larry Wall, creador de Perl

Otra de sus características distintivas fue su implementación nativa del paradigma de programación estructurada, que introducía conceptos como subrutinas, estructuras condicionales (if y while) y de iteración (bucles for y while). Estas abstracciones permitieron a los programadores escribir código más legible y mantenible; y C impulsó de forma decisiva la adopción de la programación estructurada en toda la industria.

Pero más allá de las cualidades del lenguaje en sí, lo que contribuyó decisivamente a su difusión y modeló por completo la industria informática fue la publicación en 1978 del libro «The C Programming Language» escrito por el propio Ritchie y su compañero Brian Kernighan, autor del primer «Hola Mundo» conocido —en un tutorial sobre el lenguaje B— que replicó en el libro sobre C, lo que lo inmortalizó para siempre.

En una época en la que apenas existía información sobre Informática y la misma se transmitía muchas veces por puro boca-oreja, la obra de Kernighan y Ritchie funcionó como una suerte de especificación informal y un estándar de facto que cualquiera que quisiera escribir un compilador podía usar. El manual aún es considerado un modelo de escritura técnica, por su presentación clara, tratamiento conciso y el uso de ejemplos prácticos.

C aún contribuyó más a democratizar la Informática, iniciando el establecimiento de estándares independientes de distintas empresas y fabricantes que impidiera la fragmentación de la tecnología. Algo que hoy parece lógico, pero que en aquel entonces no era en absoluto habitual.

En 1983, la American National Standards Institute o ANSI creó un comité para crear una especificación estándar de C. En 1989, se ratificó dicho estándar y en 1990 fue adoptado por la ISO o International Organization for Standardization. Desde entonces, las distintas versiones de C se han publicado como un estándar comúnmente aceptado.

Dennis MacAlistair Ritchie falleció el 12 de octubre de 2011 a los 70 años, solo en su casa de New Jersey. Su muerte no tuvo mucho eco en unos medios de comunicación centrados en el deceso de Steve Jobs, que se había producido apenas una semana antes. Paradójicamente, Ritchie creó algunas tecnologías que fueron clave para el éxito de Jobs. Al fin y al cabo, MacOS es un nieto de UNIX, de la misma forma que Objective-C es un superconjunto de C.

Ningún otro lenguaje de programación sigue siendo tan usado cincuenta y un año después de su nacimiento, pero es que C no es un simple lenguaje de programación sino el primer modelo de un auténtico «esperanto digital». El primero que, de verdad, permitió desacoplar software y hardware. La Informática no sería la misma sin su contribución y la vida de todos los que nos dedicamos a la misma, tampoco.

ESTA BONILISTA CUENTA CON EL APOYO DE

¿QUÉ BUSCAN?Desarrolladores con experiencia en Pagos

¿DÓNDE?Madrid

60-65.000€

Uno de los mayores impactos que la tecnología ha producido en nuestra Sociedad es facilitar algo aparentemente sencillo como poder pagar... y cobrar

En realidad, detrás de un simple gesto como acercar tu móvil a un lector para pagar una barra de pan hay un MONTÓN de tecnología y procesos. Por eso, SNGULAR —una compañía de consultoría informática que intenta no ser otra compañía más de consultoría informática— tiene un equipo especializado en tecnologías y herramientas de pagos, SNGULAR Payments.

El equipo no deja de crecer y, para afrontar un nuevo proyecto en una de las entidades bancarias más importantes de Europa, buscan desarrolladores que tengan experiencia en proyectos de software relacionados con pasarelas de pago y banca, para liderar equipos que implementarán soluciones que utilizarán todos los días sus padres, hijos y amigos.

Aunque SNGULAR es una compañía 100% remota, por los especiales requisitos del puesto (por ejemplo, seguridad) este requiere cierta presencialidad en Madrid. Además del salario, tienes un montón de beneficios corporativos que puedes ver detallados en la página de la oferta ¡No dejéis de visitarla y aplicad si os interesa el puesto, aunque no cumpláis con todos los requisitos! ?

Este texto se publicó originalmente en la Bonilista, la lista de correo de noticias tecnológicas relevantes para personas importantes. Si desea suscribirse y leerlo antes que nadie, puede hacerlo aquí ¡es bastante gratis!