En el mundo digital actual, es fácil para casi cualquier persona crear una aplicación móvil o escribir software, gracias a Java, JavaScript, Python y otros lenguajes de programación. Pero ese no siempre fue el caso. Debido a que el lenguaje principal de las computadoras es el código binario, los primeros programadores usaban tarjetas perforadas para indicarles a las computadoras qué tareas debían completar. Cada agujero representaba un solo dígito binario. Eso cambió en 1952 con el compilador A-0, una serie de especificaciones que traduce automáticamente lenguajes de alto nivel como el inglés a código binario legible por máquinas. El compilador, ahora un hito del IEEE, fue desarrollado por Grace Hopper, quien trabajó como matemática senior en Eckert-Mauchly Computer Corp., ahora parte de Unisys, en Filadelfia. La innovación de IEEE Fellow permitió a los programadores escribir código más rápido y más fácil usando comandos en inglés. Para ella, sin embargo, el resultado más importante fue la influencia que tuvo en el desarrollo de los lenguajes de programación modernos, haciendo que escribir código fuera más accesible para todos, según un artículo de Penn Engineering Today. La dedicación del compilador A-0 como un hito del IEEE se celebró en Filadelfia el 7 de mayo en la Universidad de Pensilvania. Allí es donde la Eckert-Mauchly Computer Corp. tuvo su inicio. «Este hito celebra el primer paso en la aplicación de las computadoras para automatizar las partes tediosas de su propia programación», dijo André DeHon, profesor de sistemas eléctricos, ingeniería y ciencias de la computación, en la ceremonia de dedicación. Eliminación del sistema de tarjetas perforadas Para programar una computadora, los primeros técnicos escribían tareas en lenguaje ensamblador, una forma legible para humanos de escribir código de máquina, que se compone de números binarios. Luego traducían manualmente el lenguaje ensamblador a código de máquina y perforaban agujeros que representaban los dígitos binarios en tarjetas, según un artículo de Medium sobre el método. Las tarjetas se introducían en una máquina que leía los agujeros e ingresaba los datos en la computadora. El sistema de tarjetas perforadas era laborioso; podía llevar días completar una tarea. Las tarjetas no podían utilizarse si presentaban el más mínimo defecto, como una esquina doblada. El método también presentaba un alto riesgo de error humano. Después de liderar el desarrollo del Integrador Numérico Electrónico y Computador (ENIAC) en Penn, los científicos informáticos J. Presper Eckert y John W. Mauchly se propusieron crear un sustituto para las tarjetas perforadas. El ENIAC se construyó para mejorar la precisión de la artillería estadounidense durante la Segunda Guerra Mundial, pero los dos hombres querían desarrollar computadoras para aplicaciones comerciales, según un artículo del Centro para el Libro de Pensilvania. La máquina que diseñaron fue la primera computadora electrónica a gran escala conocida, la Universal Automatic o UNIVAC I. Hopper estaba en su equipo de desarrollo. El UNIVAC I utilizaba 6.103 tubos de vacío y ocupaba una habitación de 33 metros cuadrados. La máquina tenía una unidad de memoria. En lugar de tarjetas perforadas, la computadora utilizaba cinta magnética para introducir datos. Las cintas, que podían contener audio, vídeo y datos escritos, tenían una longitud de hasta 457 metros. A diferencia de los ordenadores anteriores, el UNIVAC I tenía un teclado para que un operador pudiera introducir comandos, según el artículo del Centro para el Libro de Pensilvania. «Este hito celebra el primer paso en la aplicación de los ordenadores para automatizar las partes tediosas de su propia programación». —André DeHonSin embargo, los técnicos todavía tenían que introducir manualmente instrucciones en el ordenador para ejecutar cualquier programa nuevo. Ese proceso que consumía mucho tiempo conducía a errores porque «los programadores son malos copistas», dijo Hopper en un discurso para la Asociación de Maquinaria Informática. «Era sorprendente la cantidad de veces que un 4 se convertía en un delta, que era nuestro símbolo de espacio, o en una A. Incluso las B se convertían en 13». Según un artículo de Hidden Heroes, Hopper tuvo una idea para simplificar la programación: hacer que el ordenador tradujera el inglés a código de máquina. Se inspiró en el generador de ordenación/combinación de la científica informática Betty Holberton y en el Short Code de Mauchly. Holberton es una de las seis mujeres que programaron el ENIAC para calcular trayectorias de artillería en segundos, y trabajó junto a Hopper en el UNIVAC I. Su programa de ordenación/combinación, inventado en 1951 para el UNIVAC I, manejaba los grandes archivos de datos almacenados en cintas magnéticas. Hopper definió el programa de ordenación/combinación como la primera versión de memoria virtual porque hacía uso de superposiciones automáticamente sin que el programador lo indicara, según una presentación de Stanford sobre lenguajes de programación. El Short Code, que se desarrolló en la década de 1940, permitió a los técnicos escribir programas utilizando breves secuencias de palabras en inglés que correspondían directamente a instrucciones de código de máquina. Acortó la brecha entre el código legible por humanos y las instrucciones ejecutables por máquina. «Creo que el primer paso para decirnos que realmente podíamos usar una computadora para escribir programas fue el generador de ordenación/combinación», dijo Hopper en la presentación. “Y Short Code fue el primer paso para avanzar hacia algo que le dio al programador el poder real de escribir un programa en un lenguaje que no se parecía en nada al código de máquina original”. Grace Hopper, miembro del IEEE, ingresando números de llamada en el Universal Automatic (UNIVAC I), que permite al ordenador encontrar las instrucciones correctas para completar. El compilador A-0 traduce las instrucciones en inglés a código binario legible por máquina. Museo de Historia de la Computación Programación más fácil, rápida y precisa Hopper, que pensaba que los ordenadores deberían hablar lenguajes similares a los humanos, en lugar de requerir que los humanos hablen lenguajes informáticos, comenzó a pensar en cómo permitir que los programadores llamaran códigos específicos usando inglés, según un perfil de profesional de TI. Pero necesitaba una biblioteca de instrucciones de uso frecuente para que la computadora hiciera referencia y un sistema para traducir el inglés al código de máquina. De esa manera, la computadora podría entender qué tarea completar. Tal biblioteca no existía, por lo que Hopper construyó la suya propia. Incluía cintas que contenían instrucciones de uso frecuente para tareas que ella llamaba subrutinas. Cada cinta almacenaba una subrutina, a la que se le asignaba un indicativo de llamada de tres números para que el UNIVAC I pudiera localizar la cinta correcta. Los números representaban conjuntos de tres direcciones de memoria: una para la ubicación de la subrutina en la memoria, otra para la ubicación de los datos en la memoria y la tercera para la ubicación de salida, según la presentación de Stanford. «Todo lo que tenía que hacer era escribir un conjunto de números de llamada, dejar que la computadora los encontrara en la cinta y hacer las sumas», dijo en un artículo del Centro de Historia de la Computación. «Este fue el primer compilador». El sistema se denominó compilador A-0 porque el código se escribía en un lenguaje, que luego se «compilaba» en un lenguaje de máquina. Lo que antes había llevado un mes de codificación manual ahora se podía hacer en cinco minutos, según un artículo de Cockroach Labs. Hopper presentó el A-0 a los ejecutivos de Eckert-Mauchly Computer. En lugar de estar entusiasmados, dijeron que no creían que un ordenador pudiera escribir sus propios programas, según el artículo. “Tenía un compilador en funcionamiento y nadie lo quería tocar, porque me dijeron cuidadosamente que los ordenadores sólo podían hacer operaciones aritméticas, no podían hacer programas”, dijo Hopper. “Fue un trabajo de ventas conseguir que la gente lo probara. Creo que con cualquier idea nueva, como la gente es alérgica al cambio, hay que salir y vender la idea”. La dirección de la empresa tardó dos años en aceptar la A-0. En 1954, Hopper fue ascendida a directora de programación automática de la división UNIVAC. Pasó a crear los primeros lenguajes de programación basados ​​en compiladores, incluido Flow-Matic, el primer compilador de procesamiento de datos en inglés. Se utilizó para programar máquinas UNIVAC I y II. Hopper también participó en el desarrollo de COBOL, uno de los primeros lenguajes informáticos estandarizados. Permitió a los ordenadores responder a palabras además de a números, y todavía se utiliza en sistemas empresariales, financieros y administrativos. El Flow-Matic de Hopper formó la base de COBOL, cuyas primeras especificaciones se pusieron a disposición en 1959. Actualmente, en la Universidad de Pensilvania se exhibe una placa que reconoce al A-0. En ella se puede leer:Durante 1951-1952, Grace Hopper inventó el compilador A-0, una serie de especificaciones que funcionaban como enlazador/cargador. Fue un logro pionero de la programación automática, así como un programa de utilidad pionero para la gestión de subrutinas. El compilador A-0 influyó en el desarrollo de los lenguajes de programación aritmética y empresarial. Esto llevó a COBOL (lenguaje común orientado a los negocios), que se convirtió en el lenguaje de alto nivel dominante para aplicaciones empresariales. La sección de Filadelfia del IEEE patrocinó la nominación. Administrado por el Centro de Historia del IEEE y respaldado por donantes, el programa Milestone reconoce los desarrollos técnicos sobresalientes en todo el mundo.