“Es una maldita estupidez”: los orígenes de C

Por difícil que sea de creer, C no nació simplemente en un formato de bolsillo desgastado.
Agrandar / Por difícil que sea de creer, C no nació simplemente en un formato de bolsillo desgastado.

De una forma u otra, C ha influido en la forma de casi todos los lenguajes de programación desarrollados desde la década de 1980. Algunos lenguajes como C ++, C # y C objetivo están pensados ​​para ser sucesores directos del lenguaje, mientras que otros lenguajes simplemente han adoptado y adaptado la sintaxis de C. Un programador familiarizado con Java, PHP, Ruby, Python o Perl tendrá pocas dificultades para comprender programas simples en C y, en ese sentido, C puede ser considerado casi como una lengua franca entre los programadores.

Pero C no emergió completamente formado de la nada como un monolito de programación. La historia de C comienza en Inglaterra, con un colega de Alan Turing y un programa que jugaba a las damas.

Dios salve al rey

Christopher Strachey era conocido como la “persona que escribía programas perfectos”, como se indica en un perfil extenso de la revista Annals of the History of Computing. Fue una reputación que adquirió en el Centro de Computación de la Universidad de Manchester en 1951. Strachey terminó allí, trabajando en la computadora Ferranti Mark I de la escuela a través de una antigua conexión de King’s College, Cambridge, Alan Turing.

Strachey nació en 1916 en una familia británica bien conectada: su tío, Lytton Strachey, fue miembro fundador del Bloomsbury Group, mientras que su padre, Oliver Strachey, jugó un papel decisivo en las actividades de los aliados para descifrar códigos durante las dos guerras mundiales.

Que Strachey terminara siendo un experto reconocido en programación e informática habría sido una sorpresa para los instructores de su escuela pública y de la Universidad de Cambridge. Strachey siempre había mostrado talento para las ciencias, pero rara vez se aplicaba.

Si tenía esperanzas de una carrera en la investigación académica, se les propinó un duro golpe con un desempeño nada destacable en sus exámenes finales. En cambio, Strachey pasó la Segunda Guerra Mundial trabajando para una empresa de electrónica británica y luego se convirtió en maestro de escuela, y finalmente aterrizó en Harrow, una de las escuelas públicas más prestigiosas de Londres.

En 1951 Strachey tuvo su primera oportunidad de trabajar con computadoras cuando le presentaron a Mike Woodger en el Laboratorio Nacional de Física de Gran Bretaña. Después de pasar un día de sus vacaciones de Navidad familiarizándose con Pilot ACE del laboratorio, pasó su tiempo libre en Harrow averiguando cómo enseñarle a la computadora a jugar a las damas. Como Martin Campbell-Kelly, dijo un colega de Strachey en sus últimos años, “cualquiera con más experiencia o menos confianza se habría conformado con una mesa de cuadrados”.

Este primer esfuerzo no dio frutos; Pilot ACE simplemente no tenía la capacidad de almacenamiento necesaria para jugar a las damas, pero ilustraba un aspecto del interés de Strachey que resultaría fundamental en el desarrollo de los lenguajes que llevaron a C. En un momento en que las computadoras eran valoradas principalmente por su capacidad para resolver ecuaciones rápidamente, Strachey estaba más interesado en su capacidad para realizar tareas lógicas (como confirmaría más tarde durante el 1952 Reunión de la Asociación de Maquinaria de Computación).

Más tarde esa primavera se enteró de la computadora Ferranti Mark I que se había instalado en la Universidad de Manchester, donde Alan Turing era director asistente del laboratorio de computación. Turing había escrito el manual del programador, y Strachey lo conocía lo suficiente de su tiempo juntos en Cambridge como para pedirle una copia del manual.

En julio de 1951, Strachey tuvo la oportunidad de visitar Manchester y discutir su programa de damas con Turing en persona. Convenientemente impresionado, Turing sugirió que, como primer paso, escribiera un programa que permitiera al Ferranti Mark I simularse a sí mismo. Un simulador permitiría a los programadores ver, paso a paso, cómo la computadora ejecutaría un programa. Dicho programa de “seguimiento” destacaría los lugares donde el programa provocó cuellos de botella o se ejecutó de manera ineficiente. En un momento en que tanto la memoria de la computadora como los ciclos del procesador costaban una fortuna, este era un aspecto importante de la programación.

El programa de rastreo que escribió Strachey incluía más de mil instrucciones; en ese momento, era el programa más largo que se había escrito para Ferranti Mark I.Strachey lo tenía en funcionamiento después de pasar toda la noche, y cuando el programa terminó, reprodujo “God Save the King” en el altavoz de la computadora, según Campbell-Kelly.

Este logro, realizado por un aficionado, llamó la atención de Lord Halsbury, director gerente de la Corporación Nacional de Investigación y Desarrollo, quien pronto reclutó a Strachey para encabezar los esfuerzos del gobierno para promover aplicaciones prácticas de los rápidos avances en informática que tienen lugar en las universidades británicas.

Fue en esta capacidad que se enteró de un proyecto en Cambridge que estaba llevando a cabo un trío de programadores llamado David.

David y Goliat Titán

El centro de computación de la Universidad de Cambridge tenía una fuerte orientación al servicio. Las primeras computadoras del Laboratorio de Matemáticas, EDSAC y EDSAC 2, se pusieron a disposición de investigadores en otras partes de la universidad que escribieron programas que se perforaron en cinta de papel y se introdujeron en la máquina.

En el centro de computación, estas cintas de papel se sujetaban a un tendedero y se ejecutaban una tras otra durante el horario comercial. Esta línea de programas pendientes se conoció como la “cola de trabajos”, un término que sigue en uso para describir medios mucho más sofisticados de organizar tareas informáticas.

En la marca de las 6:55, disfrute de una acción de “cola de trabajos” de EDSAC.

Solo dos años después de que EDSAC 2 entrara en línea, la universidad se dio cuenta de que pronto se requeriría una máquina mucho más potente y, para lograrlo, necesitarían comprar una computadora central comercial. La universidad consideró tanto el IBM 7090 como el Ferranti Atlas, pero no podía pagar ninguno de ellos. En 1961, Peter Hall, gerente de división de Ferranti, sugirió que podrían desarrollar una versión simplificada de la computadora Atlas junto con la Universidad de Cambridge. Cambridge obtendría el prototipo, apodado “Titán”, y Ferranti podría comercializar la nueva computadora a clientes que no podían pagar el sistema Atlas.

Para brindar servicios informáticos al resto de la universidad, esta nueva computadora necesitaría tanto un sistema operativo como al menos un lenguaje de programación de alto nivel.

Se pensó poco en expandir el lenguaje que se había desarrollado para EDSAC 2. “A principios de la década de 1960, era común pensar: ‘Estamos construyendo una nueva computadora, por lo que necesitamos un nuevo lenguaje de programación’”. David Hartley recordó en un podcast de 2017. Junto con David Wheeler y David Barron, Hartley estaría involucrado en el desarrollo temprano del lenguaje de programación de esta nueva computadora.

“El nuevo sistema operativo era inevitable”, según Hartley, pero un nuevo lenguaje de programación no lo era. “Pensamos que esta era una oportunidad para divertirnos con un nuevo idioma, lo cual, en retrospectiva, era una maldita estupidez”.

Maurice Wilkes, que estaba supervisando el proyecto Titan, sintió que no había necesidad de un nuevo lenguaje de programación. La principal justificación para el Titan fue proporcionar servicios computacionales al resto de la Universidad de Cambridge, y para esto sería mejor si la máquina estuviera lista y funcionando lo más rápido posible y equipada con un idioma con el que los usuarios ya estaban familiarizados.

Wilkes requirió un análisis de los lenguajes de programación disponibles antes de aprobar una propuesta para desarrollar un nuevo lenguaje. “Los elegimos con mucho cuidado”, dijo Hartley, “para decidir que ninguno de ellos era adecuado”. En particular, el grupo de trabajo evaluó Fortran IV sin consultar a los usuarios de Fortran en Cambridge, quienes podrían haber explicado las características adicionales incluidas con otras variedades de Fortran. Debido a esto, Hartley recordó el grupo estaba convencido de que “podríamos definir y desarrollar fácilmente algo significativamente mejor”, antes de señalar, “esta falla se hizo evidente en unos pocos años”.

El trío finalmente preparó un artículo en junio de 1962 que argumentó que era necesario un nuevo lenguaje, “y nosotros también nos salimos con la nuestra”, concluyó Hartley.

Este nuevo lenguaje de programación se denominó CPL (Cambridge Programming Language) y el trabajo ya estaba en marcha en 1963. A los programadores de Cambridge se unieron John Buxton y Eric Nixon, de la Universidad de Londres, y CPL se había revisado para que significara Programación Combinada. Idioma. A medida que el proyecto crecía, Wilkes decidió contratar a Christopher Strachey para supervisar el proyecto, y CPL pronto pasó a significar “Lenguaje de programación de Christopher” para aquellos asociados con él, según Campbell-Kelly.

El grupo de investigadores que trabajaba en el idioma se reuniría en Cambridge o en Londres, a veces en la Universidad de Londres, pero en otras ocasiones en el estudio del artista en la casa de Kensington que Strachey compartía con su hermana. La habitación en la parte trasera de la casa estaba amueblada con sillas victorianas y cojines en el piso, mientras que las paredes estaban decoradas con retratos de varios miembros de Bloomsbury Group pintados por uno de los parientes de Strachey. Aquí era donde Strachey “celebraba la corte”, ocasionalmente con una bata, y como recordó David Barron algunos años más tarde, “discutíamos por los derechos del mundo antes de dispersarnos a nuestros diversos hogares por la noche”.

Para entonces, David Wheeler había pasado a otros proyectos, dejando atrás un equipo de cinco: Hartley, Barron, Buxton, Nixon y Strachey.

Hartley disfrutó trabajando en CPL; “Este fue en realidad un trabajo bastante divertido”, recordó. Las reuniones eran asuntos bastante informales. “Nos calentaríamos mucho y, finalmente, comenzaríamos a lanzar dardos de papel [airplanes] el uno al otro “.

El grupo comenzó con las especificaciones de ALGOL 60, con el objetivo de escribir un lenguaje “perfecto”: uno que fuera práctico para una variedad de usuarios pero también estéticamente satisfactorio y eficiente.

Casi de inmediato, tuvieron algunas dificultades para priorizar, como señaló David Barron de Strachey: “Era característico de él insistir en los puntos menores de diferencia con la misma fuerza con que insistía en los puntos importantes”. Una objeción menor fue la objeción de Strachey a la gramática de las declaraciones “SI … ENTONCES … ELSE”. “No puedo permitir que mi nombre se asocie con una recomendación definitiva de utilizar un inglés ignorantemente incorrecto”, fue su opinión, como Hartley más tarde escribió para Annals of the History of Computing. Strachey prefería “OR”, que entraba en conflicto con la forma en que se usaba “OR” en casi todos los demás lenguajes de programación existentes. No obstante, sus preferencias triunfaron y el manual de referencia de CPL incluyó “OR” en el lugar donde los usuarios habrían esperado “ELSE”.

El Manual de CPL, <a href =
El Manual de CPL, disponible en linea por supuesto.

También se invirtió un tiempo valioso en desarrollar una forma de evitar el uso del asterisco para indicar multiplicación. Aquí, las preocupaciones estéticas llevaron a complicaciones que retrasaron la implementación de un lenguaje de programación utilizable, ya que se tuvieron que desarrollar reglas complicadas para distinguir entre “3a” que significa “3 * a” y “3a” como el nombre de una variable.

Mientras tanto, los usuarios de Cambridge estaban cada vez más frustrados por la falta de un lenguaje de programación utilizable para la nueva computadora Atlas de la universidad. Las especificaciones del lenguaje estaban en gran parte terminadas, pero no había un compilador disponible. El grupo de trabajo había hecho CPL tan complicado que los primeros intentos de escribir un compilador dieron como resultado un código de máquina que era increíblemente ineficiente.

Leave a Reply

Your email address will not be published. Required fields are marked *