«Una maldita estupidez»: los orígenes de C.


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

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. Se dice que algunos lenguajes como C ++, C # y Target C son descendientes directos del lenguaje, mientras que otros lenguajes simplemente han adoptado y adaptado la sintaxis de C. Un programador que esté familiarizado con Java, PHP, Ruby, Python o Perl tendrá pocas dificultades para comprender programas simples en C y, en este sentido, C casi puede verse como una lengua franca entre los programadores.

Pero C no apareció completamente 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 extenso perfil de la revista Annals of the History of Computing.. Fue una reputación que ganó en el Centro de Computación de la Universidad de Manchester en 1951. Strachey terminó trabajando en la computadora Ferranti Mark I de la escuela a través de un antiguo complejo de King’s College Cambridge, Alan Turing.

Strachey nació en el seno de una familia británica bien conectada en 1916: su tío Lytton Strachey fue miembro fundador del Bloomsbury Group, mientras que su padre, Oliver Strachey, fue fundamental en las actividades aliadas de descifrado de códigos durante las dos guerras mundiales.

Que Strachey fuera un experto reconocido en programación e informática habría sorprendido a sus profesores de escuelas públicas y a la Universidad de Cambridge. Strachey siempre había mostrado talento para la ciencia, pero rara vez lo aplicaba.

Si tenía alguna esperanza de una carrera en la investigación académica, recibiría un duro golpe por una actuación poco notable en sus exámenes finales. En cambio, Strachey trabajó para una empresa británica de electrónica durante la Segunda Guerra Mundial y más tarde se convirtió en profesor. Finalmente terminó 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 del Reino Unido. Después de pasar un día de sus vacaciones de Navidad conociendo al piloto ACE del laboratorio, pasó su tiempo libre en Harrow tratando de descubrir cómo enseñarle a la computadora a jugar a las damas. Martin Campbell-Kelly, un colega de Strachey en sus últimos años, dijo: «Cualquiera con más experiencia o menos confianza se habría satisfecho con una mesa de lugar».

Este primer esfuerzo no se realizó; El ACE piloto simplemente no tenía la capacidad de almacenamiento para jugar a las damas, pero ilustró un aspecto del interés de Strachey que resultó ser fundamental en el desarrollo de los lenguajes que llevaron a C. En un momento en que las computadoras eran valoradas principalmente por las suyas, Strachey estaba más interesado en su capacidad para realizar tareas lógicas (como confirmó más tarde en la reunión de 1952 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 pedir una copia del manual.

En julio de 1951, Strachey tuvo la oportunidad de visitar Manchester y discutir personalmente su programa de damas con Turing. En consecuencia, impresionado, Turing sugirió que el primer paso debería ser escribir un programa con el que el Ferranti Mark I pueda 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 las áreas donde el programa estaba causando cuellos de botella o se estaba ejecutando 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 Trace escrito por Strachey contenía más de mil instrucciones; en ese momento era el programa más largo jamás escrito para Ferranti Mark I. Strachey hizo que comenzara después de pasar toda la noche, y cuando el programa terminó, terminó, según Campbell-Kelly, estaba tocando «God Save the King» en el altavoz de la computadora.

Este logro amateur llamó la atención de Lord Halsbury, director ejecutivo de la Corporación Nacional de Investigación y Desarrollo, quien pronto reclutó a Strachey para impulsar los esfuerzos del gobierno para promover aplicaciones prácticas de los rápidos desarrollos en informática en las universidades del Reino Unido.

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

David y Goliat titanio

El centro de datos de la Universidad de Cambridge estaba muy orientado 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, quienes escribieron programas que se perforaron en cinta de papel y se introdujeron en la máquina.

En el centro de datos, estas cintas de papel se unieron a un tendedero y se ejecutaron una tras otra durante el horario comercial. Esta serie de programas sobresalientes se conoció como la «cola de trabajos», un término que se sigue utilizando para describir un medio mucho más sofisticado de organizar tareas informáticas.

A partir de las 6:55 am podrá disfrutar de la promoción «Cola de trabajos» de EDSAC.

Apenas dos años después de que EDSAC 2 entrara en funcionamiento, la universidad se dio cuenta de que pronto se necesitaría una máquina mucho más potente y, para ello, tendrían que comprar un mainframe comercial. La universidad verificó tanto el IBM 7090 como el Ferranti Atlas, pero no pudo pagar uno. En 1961, Peter Hall, jefe de departamento de Ferranti, sugirió trabajar con la Universidad de Cambridge para desarrollar una versión reducida de la computadora Atlas. Cambridge obtendría el prototipo llamado «Titán» y Ferranti podría comercializar la nueva computadora a clientes que no pudieran pagar el sistema Atlas.

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

Se ha pensado poco en ampliar el lenguaje 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'», recordó David Hartley en un podcast de 2017. Junto con David Wheeler y David Barron, Hartley estaría involucrado en el desarrollo temprano el lenguaje de programación de esta nueva computadora.

«El nuevo sistema operativo era inevitable», dijo Hartley, pero un nuevo lenguaje de programación no lo era. «Pensamos que esta sería una oportunidad para divertirnos con un nuevo idioma, lo cual, en retrospectiva, era una maldita estupidez».

Maurice Wilkes, quien dirigió el proyecto Titan, sintió que no se necesitaba un nuevo lenguaje de programación. La principal justificación del Titán fue proporcionar servicios informáticos al resto de la Universidad de Cambridge. Para ello, 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 estuvieran familiarizados.

Wilkes necesitaba 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 es 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 de otras variedades de Fortran. Debido a esto, Hartley recordó que el grupo creía que «podemos definir y desarrollar fácilmente algo mucho mejor» antes de darse cuenta de que «ese fracaso llegó a casa para asentarse en unos pocos años».

El trío finalmente preparó un artículo en junio de 1962 argumentando que era necesario un nuevo lenguaje, «y nos salimos con la nuestra», concluyó Hartley.

Este nuevo lenguaje de programación se llamó CPL (Cambridge Programming Language) y el trabajo estaba en pleno apogeo ya en 1963. A los programadores de Cambridge se unieron John Buxton y Eric Nixon de la Universidad de Londres, y CPL se ha revisado para que signifique Combined Programming Language. A medida que el proyecto crecía, Wilkes decidió contratar a Christopher Strachey para supervisar el proyecto, y CPL pronto significó el «lenguaje de programación de Christopher» para los involucrados, según Campbell-Kelly.

El grupo de investigadores que trabajaba en el idioma se reunió en Cambridge o Londres, a veces en la Universidad de Londres, pero a veces 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 almohadas en el suelo, mientras que las paredes estaban adornadas con retratos de varios miembros del Grupo Bloomsbury pintados por un pariente de Strachey. Strachey ocasionalmente se presentó en la corte aquí en su bata, y como David Barron recordó unos años más tarde, «peleamos por los derechos en todo el mundo antes de dispersarnos en nuestras diferentes casas por las noches».

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; «Fue un trabajo realmente divertido», recordó. Las reuniones fueron más informales. “Nos enojamos mucho por las cosas y en algún momento comenzamos a lanzar flechas de papel [airplanes] el uno del 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 amplia gama de usuarios, pero también estéticamente agradable y eficiente.

Casi de inmediato lucharon por priorizar, como comentó David Barron de Strachey: «Era característico de él insistir en las pequeñas diferencias con la misma fuerza en la que insistía». Un punto de discusió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 ninguna recomendación en particular para usar sin saberlo un inglés incorrecto», fue su opinión, como Hartley escribió más tarde para Annals of the History of Computing.. Strachey prefirió «OR», que contradecía la forma en que se usaba «OR» en casi todos los demás lenguajes de programación existentes. No obstante, prevalecieron sus preferencias y el Manual de referencia de CPL indicó «O» donde los usuarios habrían esperado «ELSE».

Das CPL-Handbuch, <a href =
El manual CPL, que por supuesto está disponible en línea.

También se invirtió un tiempo valioso en encontrar una forma de evitar el uso del asterisco para indicar una 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 idioma se finalizaron en gran medida, pero no se dispuso de un compilador. 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *