Adherentes de la pagina

sábado, 15 de octubre de 2011

Es por lo menos perturbador que en la misma semana dos de los hombres que han construido la computación moderna nos hayan dejado. El miércoles 5 de octubre, como es público y notorio, falleció Steve Jobs, que diseñó el aspecto, la interfaz y la experiencia de usuario de todos los dispositivos que usamos hoy, y eso incluye los celulares, los GPS y hasta la computadora de su automóvil. Su obsesiva insistencia en la facilidad de uso y en los detalles hizo que ideas hasta entonces despreciadas se convirtieran en estándar.
Tres días después murió Dennis Ritchie, aunque la noticia se supo sólo el miércoles último por la noche. La importancia de Ritchie para la revolución digital no es menor que la de Jobs, sólo que durante los últimos 40 años ha sido totalmente invisible. Hay algo seguro, sin embargo. Su obra está en todos lados. Literalmente. Ritchie fue el creador, entre 1969 y 1973, del lenguaje de programación C, y colaboró de forma sustancial con la invención del sistema operativo Unix. Ambos están en los cimientos de toda la computación moderna.
¿Por qué su aporte fue tan importante, por qué no es exagerado decir que modeló no ya la experiencia del usuario, como Jobs, sino la forma de funcionar de la informática?
En código
Al revés que todas las otras maquinarias y herramientas creadas por el hombre, las computadoras son programables. Sin software no sirven para nada. Les decimos qué hacer a cada instante, y tanto puede un mismo dispositivo funcionar como teléfono cuanto hacer las veces de máquina de escribir, simulador de vuelo o reproductor de música. Esto es magnífico, es la clave del mundo en que vivimos y ofrece un poder inimaginable. Pero siempre hay un pero.
Las computadoras sólo comprenden idiomas que a los humanos nos resultan, si no imposibles, extremadamente difíciles de hablar. O de escribir, para ser precisos. Sin ir más lejos, sólo comprenden unos y ceros. Peor aún, las microinstrucciones que constituyen el lenguaje de máquina son mínimas, muy específicas, atómicas. Así, una tarea muy simple, como presentar la archifamosa frase Hola, mundo en la pantalla, llevaría unas 200 instrucciones, todas constituidas por unos y ceros.
De alto nivel
Hace falta, por eso, darles a las computadoras órdenes -programarlas- en idiomas más accesibles para nuestra mente, llamados lenguajes de alto nivel . No se los conoce así porque pertenezcan al jet set, sino porque, primero, no usan unos y ceros, sino palabras humanas, normalmente del inglés, más una sintaxis semejante a la que empleamos a diario.
Desde luego, esto lleva directo a un problema. Si las máquinas no entienden nuestro lenguaje y los humanos no podrían farfullar en el idioma de las máquinas más que unos pocos unos y ceros sin equivocarse, entonces se requiere algo así como un traductor.
En efecto, el desarrollador escribe el código fuente de su programa en un lenguaje de alto nivel. Luego, un software llamado compilador se encarga de traducirlo al hermético idioma de los microprocesadores.
En rigor, hay varias clases de lenguajes de programación y diferentes métodos para convertir el código fuente en algo comprensible (ejecutable) para la máquina. El Ensamblador, por ejemplo, ofrece un nivel de abstracción muy bajo; es decir, cada palabra mnemónica se corresponde con cada microinstrucción. En el otro extremo están lenguajes como C, Java o Pascal, con un alto nivel de abstracción (una sola línea de código equivale a docenas o cientos de microinstrucciones).
También varían las formas en que se transforma el código fuente en un programa de computadora. Para simplificar, y porque tal es el caso de C, se pasa el código fuente por un compilador, cuyo resultado será un ejecutable. Sin embargo, también es posible compilar en tiempo real los programas, algo que se conoce como interpretar ; unos cuantos lenguajes admiten ambos métodos.
Por supuesto, esto es el polvillo helado en la punta del iceberg. Fascinante como me parece la ciencia de la programación, sé que puede poner este texto más pesado que un almuerzo de cascotes. Así que, redondeemos.
Las máquinas no entienden español, ni inglés ni nada. Y a nosotros hablar en unos y ceros, francamente, no se nos da bien. Ahí entran los lenguajes de programación. ¿Y adivine cuál es el más usado y el que más derivados inspiró en los últimos 40 años? El lenguaje C, obra de Dennis Ritchie.
En un período en que la informática estaba sufriendo cambios fundamentales (en 1971 nacería el primer microprocesador, por ejemplo), trabajando en los laboratorios Bell, que habían desarrollado el primer transistor, Ritchie tomó en sus manos el desarrollo de un nuevo lenguaje que pudiera aprovechar las tecnologías más recientes de aquella época. Tecnologías que hoy son obsoletas, pero que sin embargo exhiben todavía un sobreviviente notable con herederos famosos. El lenguaje C es el padre de C++ (un C orientado a objetos) y éste, a su vez, de Java (bien conocido por su omnipresencia en la Web, los celulares y varios miles de millones de dispositivos más). La inmensa mayoría de los programas que usamos a diario en Windows, incluido Windows, han sido escritos en alguna de las muchas formas que C adoptó en sus 40 años de vida.
Pero hay más. Aunque las primeras versiones de Unix fueron escritas en Ensamblador, pronto se usó C para su desarrollo. Unix, como se sabe, dio origen a Linux y Android, y está en el ADN de las iPad y el iPhone.
Dennis Ritchie, que me han dicho que era un hombre muy reservado, respetadísimo en el ambiente hacker, donde se lo conocía por su alias dmr (su colega Ken Thompson, coautor de Unix, se hacía llamar ken ), hizo algo extraordinario en un momento clave de la historia moderna: nos enseñó a hablar con las máquinas.
Pensaba, cuando me enteré de su fallecimiento, que estaba recibiendo la noticia en la pantalla de mi iPhone, diseñado por los sueños y las obsesiones de Jobs y programado con lenguajes basados en los de Ritchie. Les debemos mucho, y los echaremos de menos

No hay comentarios: