Andrey Terekhov: de Fortran a Python





Este otoño, Andrei Terekhov, Jefe del Departamento de Programación de Sistemas en Matmekh de la Universidad Estatal de San Petersburgo, Profesor, Doctor en Física y Matemáticas, contó a nuestros colegas sobre la historia de los lenguajes de programación populares y su penetración en la URSS. Junto con Andrei Nikolaevich, preparamos, a partir de su conferencia, material sobre cómo diferentes idiomas cruzaron el Telón de Acero, cómo se tradujeron a diferentes arquitecturas, cómo algunos de ellos se pusieron de moda. Tendencias generales e impresiones personales: para todos los que quieran hacerse una idea general de la historia del problema.



Para aquellos que prefieren ver o escuchar, un video de la conferencia se publica aquí .



Programación en códigos



La primera máquina verdaderamente electrónica se llamó Computadora e Integrador Numérico Electrónico y fue fabricada en 1946 por los estadounidenses. En el corazón de tales computadoras hay un disparador, que en 1918 fue inventado por un residente de Petrogrado, Mikhail Aleksandrovich Bonch-Bruevich. A diferencia de Popov, incluso logró asegurar los derechos de la invención. El circuito en sí era bastante famoso: mi padre, un ingeniero electrónico militar, usaba estos disparadores antes de la guerra.



Ya en 1949, el ingeniero soviético Sergei Alekseevich Lebedev fabricó una máquina MESM en Kiev. Estaba solo tres años por detrás de los estadounidenses, aunque Kiev fue destruida casi por completo. Lebedev incluso recibió un edificio en la ciudad de Feofaniya, que aún estaba a 30 km de la ciudad, donde antes de la guerra había un hospital psiquiátrico. Pero entonces simplemente no había otros edificios.





Un edificio en Feofaniya, ahora un distrito, y en la década de 1950, un suburbio de Kiev, donde trabajó Sergei Lebedev.



Para estas primeras computadoras, la gente escribía en códigos binarios. Digamos que el programa tiene este aspecto: 01 100 101 110. Suponga que 01 es un código de suma. Luego dice aquí: agregue la palabra en la dirección 100 con la palabra en la dirección 101 y escriba el resultado en la dirección 110. En general, todo está claro, pero como persona que encontró la programación en códigos, le diré que esto es terriblemente inconveniente. ... Sí, probablemente tú mismo entiendas esto.



De 1964 a 1966, estudié en la 157ª escuela de matemáticas cerca de Smolny, una de las más famosas de Leningrado, subordinada no a RONO, sino a la Academia de Ciencias Pedagógicas. Allí teníamos dos "Ural-1" y dos chicas-técnicas que no sabían programarlos, pero podían arreglar estas máquinas. Yo mismo también tuve que aprender primero cómo repararlos, pero luego escribimos muchos programas útiles en los Urales, incluso para los geólogos contamos algo.



El principal problema de programación en los códigos no es "01 02 03", es fácil de recordar. Pero si necesita insertar algo entre dos celdas, de acuerdo con la lógica de trabajo, para que algunas matrices estén sincronizadas, todas las direcciones debajo de esta inserción se rastrearán. Tendremos que reescribir todo y, lo más importante, volver a completar.



Rellenamos los programas en una película de 35 mm, que pegamos en un anillo si se necesitaba un bucle. Ingrese al programa: escriba la suma de verificación con un lápiz. Ingresa nuevamente: si las sumas de verificación coinciden, entonces todo es correcto. Si no coinciden, lo ingresa por tercera vez y así sucesivamente hasta que caiga.



Fue tan inconveniente que a la gente se le ocurrió rápidamente reemplazos simbólicos. En lugar de 01, fue posible escribir solo el símbolo "+", y en lugar de la dirección - a, bo c. Era lenguaje ensamblador, con un traductor muy simple el programa podía traducirse a códigos de máquina. Se necesitaron dos vistas: en la primera, haces una tabla de todos los identificadores y sus direcciones, en la segunda, reemplazas los identificadores con direcciones, y eso es todo.



( ). 101? ? . 102? . , , .





El estadounidense John Backus, que inventó el lenguaje FORmula TRANslator en 1957, hizo una verdadera revolución. IBM, donde trabajaba, en general se le ocurrieron muchas cosas, incluidas, por ejemplo, tarjetas perforadas. Fortran hizo posible escribir una fórmula, y a partir de ella se crearon los primeros traductores, mucho más complejo que un traductor del lenguaje ensamblador. Es decir, las personas pudieron escribir programas normales en un lenguaje algorítmico normal.





John Backus admitió que el principal incentivo en su búsqueda fue la pereza y el deseo de simplificar el proceso de redacción de programas. En la imagen: Backus en la portada de Think, la revista corporativa de IBM



Irónicamente, Fortran sigue siendo popular hoy en día, especialmente entre los físicos e ingenieros que creen que no necesitan nada más, a pesar de que han pasado tantos años. Se han acumulado toneladas de programas estándar: enormes bibliotecas.



Pero, como de costumbre, hubo algunos errores importantes. El más caro ocurrió hace más de medio siglo. Un ingeniero escribió un programa como este:

DO 3 I = 1.4



Este es un ciclo. Los operadores hasta la marca 3 deben realizarse con I igual a 1,2, 3, 4. Pero el estadounidense cometió un error y puso un punto en lugar de una coma entre 1 y 4. En Fortran, no hay una descripción obligatoria, por lo que no se encontró ningún error. Como resultado, el vuelo espacial a Venus se interrumpió.



Incluso Lomonosov descubrió que hay una atmósfera muy densa alrededor de Venus, pero nadie vio la superficie del planeta. Los estadounidenses enviaron un cohete con una tarea importante: se suponía que debía volar a Venus, hacer algunas revoluciones y luego sumergirse bajo la atmósfera y fotografiar la superficie. El cohete voló durante tres meses y voló. Cuando me sumergí, la solapa de la cámara no se abrió, porque fueron estas líneas las responsables de su apertura. Tantos miles de millones de dólares literalmente volaron por los aires. El escándalo fue increíble, se encontró a la persona que cometió el error. 6-7 mil millones es una pérdida tangible incluso para los estadounidenses ricos. Pero este programador no resultó herido, porque los documentos tenían las firmas de todos los jefes posibles.Después de largas pruebas, se decidió que Fortran tenía la culpa de todo: las reglas para determinar el idioma resultaron ser muy inconvenientes y poco fiables.



A mediados de la década de 1970, hicimos el primer traductor de Algol 68, y tradujimos a todos los idiomas antiguos. En particular, se transfirió la casilla 93, ahora es el Instituto de Radio Navegación y Hora Precisa.





El edificio del Instituto de Ingeniería de Radio de Investigación de Leningrado, el Instituto Ruso de Navegación por Radio y Tiempo, ahora alberga la oficina del banco Rossiya.



Anteriormente, estaba ubicada en un enorme edificio amarillo frente a Smolny, ahora hay un banco en él, y el instituto ha sido desalojado a las afueras de la ciudad.Luego transferimos docenas de programas de Fortran a Algol 68 y siempre ganamos cuatro veces. Pensé que era una especie de estafa, porque teníamos que ganar dos veces, solo a expensas del mejor traductor. ¿Por qué ganamos a las cuatro? Entendido. Le enseñamos a la gente Algol 68 - Di conferencias, mi estudiante Leha Rokhlin estaba practicando. Y en Fortran escribieron como un pollo con pata.



Una vez, mi antiguo alumno, un mayor del ejército soviético en reserva, Andrei Sergeevich Agapov, me llama: “Andrei, en uno de los programas la respuesta fue cuatro veces diferente a la de fortran". Como varias docenas de programas salieron bien, respondo: "No me importa, sucede". Él: “No, este es el control del radar, que determina las coordenadas para disparar. Si, debido a un error en el programa, el cohete vuela en la dirección incorrecta, a nadie le parecerá. Empecé a comprender. Pensé que ALGOL 68 estaba mintiendo, después de todo, un nuevo traductor. Revisé todo, no está mintiendo. Comencé a leer productos de ensamblador, no, no es mentira. Luego comencé a leer con atención el programa Fortran. Encontrar nada. Ya brutalizado, pasó un mes. Empecé a leer la producción del ensamblador de Fortran, pero es una estupidez. ¡Encontró! Mira.



Estaba escrito:

X = 9.3.

Pero X fue doble y 9.3 fue corto. Como resultado, nacieron dos equipos.

LE 0, = E '9.3'

STD 0, X.

En la computadora ES, había una máquina así, una copia de IBM 360, una palabra de 64 bits. Y ahora el comando LE se cargó solo en la mitad izquierda del registro y dejó basura en la mitad derecha. Y el comando STD descargó todo el registro. Dado que el proceso estaba mal acondicionado, es decir, pequeños cambios en los datos de entrada influyeron fuertemente en el resultado, la respuesta después de 11 minutos de tiempo de CPU divergió cuatro veces. Resulta que tuve que escribir seis ceros más aquí:

X = 9.3000000

Encontré este error y lo recordé por el resto de mi vida, aunque fue hace 40 años.




Existe el concepto de "sistema amistoso", y hay - "hostil". Este es un ejemplo típico de un sistema hostil.



O un ejemplo más simple del que sufren todos mis alumnos.

X = 1/3

Cualquier persona normal piensa que será 0,33. ¡Te imagino! Habrá cero. Dos enteros, lo que significa que habrá una división de enteros. Y si quieres obtener 0.33, coloca dos puntos:

X = 1. / 3.

Suficiente en un solo lugar, entonces será correcto. Pero de nuevo, ¿quién se dará cuenta?



Algol 60



Fortran fue declarado culpable de todos los pecados capitales y la gente comenzó a inventar nuevos lenguajes de programación. A los europeos se les ocurrió Algol 60. También hay algo de daño con los números: lo inventaron en 1958, un año después de Fortran. Pero fue tan torpe y malo que el lenguaje comenzó a revisarse y fue adoptado en el congreso de la IFIP (Federación Internacional de Procesamiento de Información) recién en 1960, de ahí el nombre. Pero el trabajo continuó, y en 1964 se publicó un mensaje revisado sobre Algol 60. Trabajamos en él durante 6 años. Recuerde esta cifra, se encontrará varias veces más. Se necesitan seis años para perfeccionar la versión inicial del idioma.



El primer traductor en la URSS de Algol 60 se realizó en el Centro Korolev (este es un instituto espacial, ahora NPO Energia) bajo el liderazgo de Svyatoslav Sergeevich Lavrov, quien desde 1972 se convirtió en el jefe del departamento de software de computadora, donde ahora trabajo.





Svyatoslav Lavrov, 1987. Foto del archivo del académico Andrei Ershov.



Lavrov era el jefe del departamento de balística externa, él fue quien calculó la trayectoria del primer satélite, la trayectoria de Gagarin. Contó cómo se veía en la era anterior a la computadora, cuando varios cientos de mujeres pasaban días enteros hilando máquinas de sumar, contando algo.Habiendo oído hablar de las primeras computadoras, Lavrov se interesó en ellas, se dejó llevar y finalmente cambió la balística externa a la programación, convirtiéndose en el primer traductor. Luego, en Novosibirsk, Andrey Petrovich Ershov creó un traductor optimizador "Alpha". Dicen que incluso los estadounidenses lo reconocieron como el mejor traductor optimizador. Luego, en Moscú, hicieron TA2 a partir del Algol 60 completo, pero en ese momento, nadie necesitaba el Algol 60 completo con sus características estúpidas. Hasta donde yo sé, TA2 nunca se usó, pero trabajé en el traductor Lavrovsky TA1M durante muchos años. Teníamos dos máquinas M 20 en Mattech, estaban equipadas con un TA1M, que luego se llamó "Signal".



PL / 1



Los estadounidenses se amargaron cuando Algol 60 apareció en Europa e hizo PL / I (Lenguaje de programación I). ¡Terrible lenguaje! Cientos de conversiones automáticas de tipos a otros tipos. Un lenguaje de concha, como decían. Varios cientos de operadores: para cualquier operador individual, ¿quién los recordará a todos? Sin embargo, este lenguaje también se hizo bastante popular en la URSS, desde que aparecieron las computadoras ES. Escribí sobre él, pero también pasaron pesadillas. En un procedimiento, describirá la variable global A bin fix (entero), y en otra variable A bin float (punto flotante). Luego buscará un error durante mucho tiempo: el traductor no dirá nada.



En resumen, PL / 1 y en Europa fueron muy desagradables, no solo en la URSS. He estado en los EE. UU. Muchas veces y he oído queno hay programación capitalista y comunista, pero hay diferentes estilos .



El estilo americano es un método de fuerza bruta. Cuando una persona carece de la potencia informática de una máquina, acude a su jefe y le dice: "Cómprame un coche dos veces más potente". Por lo general, lo compran.



En Europa, y en la URSS, por supuesto, esto no fue aceptado. Tenía que pensar con la cabeza, encontrar un algoritmo más eficiente.



Una vez conocí al diseñador jefe de los traductores PL / 1. Su apellido Marx es fácil de recordar para una persona soviética. No es estadounidense, ni inglés, y estos traductores se hicieron no lejos de Londres: había un centro de IBM en Europa. Lo conocimos en Novosibirsk, donde hubo una gran conferencia en la que Marx hizo un informe. Se le preguntó: "¿Cuántos errores se encontraron durante el proceso de depuración?" Él: "No puedo responder a esta pregunta: el secreto de la empresa". - "¿Cuántas personas tenías?" La respuesta es la misma. Entonces Kes Koster, uno de los autores de Algol 68 (yo estaba unido a él como traductor), se levanta de un salto y comienza a gritar en un inglés bastante específico, que todos los niños conocen ahora: "Deshonras nuestro mundo libre frente a estos colegas oprimidos". Y para mí: "¡Traduce!" Yo: "No se acepta aquí, Kes". - “¡Me asignaron a ti, así que traduce!" ¿Ah bueno? Comencé a traducir, según entendí, pero entendí con bastante precisión. Pero nadie me condenó. Luego hubo un descanso con vasos de café y brandy, entonces fue así. Este pobre Marx está parado, y alrededor de un metro hay dos vacíos. Me acerqué a él con dos recipientes: "¡Bebamos!" Golpeó el vaso y dijo: “Déjame contarte todo.En una conversación privada puedo, pero desde la tribuna no puedo ". Y entonces dijo que tenía 51 programadores, que encontraron tantos errores, que esta es una estructura tan salvaje: un traductor con PL / 1.



Luego resultó que tenemos mucho en común. Ambos nacieron en 1949, ambos se graduaron de universidades en 1971; él es Londres, yo soy Leningrado. Yo digo: “¿Cómo es eso? Le ganamos cuatro veces en tiempo de transmisión, tres veces en velocidad de conteo y un número infinito de veces en longitud de código. ¿Por que eres tan estúpido? " Él: "¿Cuántos años ha trabajado en el traductor de Algol 68?" - "Siete años". - “Hace tiempo que te hubiéramos echado de tu trabajo. Año: conduzca la mercancía, de lo contrario estará en la calle ". Fue entonces cuando aprendí por primera vez qué es Time to Market.Es importante trabajar con rapidez, de lo contrario alguien ocupará este nicho en el mercado. Entonces lo harás mejor, pero nadie lo sabrá. En la URSS, no lo sabíamos.



ALGOL 68



Los europeos respondieron al PL / I con el idioma ALGOL 68. Había un grupo de trabajo de este tipo 2.1 IFIP sobre idiomas similares a Algol. Cuando en 1964 se publicó un mensaje revisado sobre Algol 60, decidieron que esta dirección había terminado, algo completamente diferente tenía que desarrollarse. Lanzaron un grito: ¿qué vamos a hacer ahora? La respuesta fue el Libro Blanco - lo tengo en mi estantería, una rareza, no en Internet - con propuestas para el mismo grupo 2.1.



Contiene un largo artículo de Ralph London sobre pruebas de corrección de programas, el artículo de Barbara Liskov "El lenguaje CLU", donde formuló por primera vez el concepto de tipos de datos abstractos. También había un artículo del académico holandés van Weingaarden sobre gramáticas de dos niveles. La gramática de dos niveles es como una máquina de Turing en términos de potencia, con su ayuda puedes describir no solo la sintaxis exacta - ahora no sorprenderás a nadie - sino también la semántica exacta de la ejecución del lenguaje. Y después de muchas reuniones, la gente del Grupo de Trabajo 2.1 decidió tomar las gramáticas de dos niveles de van Weingaarden como base para el futuro idioma . Dicho y hecho.



El grupo incluía a unas 200 personas, incluidos científicos soviéticos: Ershov, Lavrov. Mi asesor científico Grigory Samuilovich Tseitin escribió muchas cartas a los participantes, incluso le dieron las gracias. En diciembre de 1968, IFIP adoptó un nuevo lenguaje llamado Algol 68.



Era un lenguaje inquietante, una pesadilla. Por un lado, era muy formal y preciso, por otro, era imposible escribir en él.



Y entonces Grigory Samuilovich Tseitin llega a nuestro laboratorio de programación de sistemas, en el que luego trabajé como estudiante de tercer año de matemáticas, y dice: “Chicos, aquí han inventado un lenguaje así, nadie puede implementarlo. Implementémoslo ". Nosotros: "Vamos" - y nos pusimos manos a la obra. Mi diploma en 1971 se llamó "Búsqueda de una cadena de fantasmas en un traductor de Algol 68 para una computadora ES". 11 páginas de texto manuscrito y un programa de trabajo. Cinco años después, encontré un error en este diploma, pero cuando me defendí, nadie lo notó.



El idioma era muy difícil y no estábamos solos al pensarlo. El Grupo 2.1 continuó, y en 74 se publicó un informe revisado sobre ALgol 68. Otros seis años de arduo trabajo por parte del gran comité.Este lenguaje ya resultó bastante comprensible, comenzó a implementarse en muchos grupos tanto en Europa como en América. En la URSS, había un grupo de Mikhail Ruvimovich Levinson en el CEMI, Ekaterina Logvinovna Yushchenko en Kiev. Sasha Maslov y su equipo hicieron Algol 68 para Elbrus. Andrey Petrovich Ershov creó un traductor optimizador de Algol 68 en Novosibirsk. En Leningrado, cuando Grigory Tseitin dejó estas obras, la tarea literalmente recayó sobre mí.





"Algol: éxito y fracaso", resumen del informe del científico suizo Peter Naur, presentado en el coloquio "10 años de Algol" en Zurich el 31 de mayo de 1968. Del archivo del académico Andrey Ershov



No tuve que sentarme para convertirme en el jefe del laboratorio. Todo resultó por sí solo cuando comenzamos a depurar IBM / 360 en Moscú NITSEVT. Teníamos un doctor en ciencias, unos cinco candidatos y unos 15 estudiantes, mientras escribíamos artículos y libros, todo estaba bien. Pero luego la gente de la generación anterior comenzó a decaer lentamente. El tiempo en NITSEVT nos fue asignado solo por la noche. Fuimos a Moscú durante tres días: trabajamos de noche, dormimos durante el día, pero a los jóvenes no les importó. Además, me encantaba trabajar de noche. Había dispositivos estadounidenses y soviéticos. Lanza el cable, y trabajarás normalmente con un buen equipo estadounidense, y volverás a cambiar por la mañana. Durante el día no se les permitió hacer esto.Y mis colegas mayores no lo soportaban: cuando entregaron al traductor, yo ya era tanto el diseñador jefe como el jefe del laboratorio.



Hicimos el primer traductor de Algol 68 en la URSS. Con cierto rezago, los grupos de Maslov y Levinson. Yushchenko hizo un desarrollo interesante combinado con una base de datos. En Novosibirsk se llevó a cabo una enorme investigación científica denominada "Proyecto Beta". Intentaron generalizar fuertemente el problema para que ALgol 68, PL / I y Pascal pudieran hacerse con un solo traductor. Tanto en los códigos BESM-6 como en los códigos ES EVM. El proyecto nunca se completó por completo, pero hicieron algunos traductores individuales.



Cuando comenzamos a implementar Algol 68, resultó que nadie realmente necesitaba su confiabilidad, excepto los militares.Pero luego cayeron en la trampa y muchas organizaciones militares se pasaron a él.





Índice del informe revisado sobre ALgol 68 emitido por el grupo de trabajo 2.1. Primero en la lista de editores está Adrian van Weingaarden



Pascal



Niklaus Wirth fue uno de los participantes en el Grupo de trabajo 2.1. Él y varios otros científicos conocidos (Hoare, Dijkstra, desafortunadamente nuestro Lavrov) no estaban de acuerdo con la opinión de la mayoría y en diciembre de 1968 escribieron el llamado Informe de la Minoría. En él, expresaron la idea de que "la montaña dio a luz a un ratón: este lenguaje es tan grande y complejo que nadie lo entenderá jamás en su vida". De hecho, esto es cierto, pero después de seis años de trabajo y el lanzamiento del Mensaje revisado, Algol 68 se ha convertido en un lenguaje bastante agradable y comprensible . En los círculos académicos, ha ganado una popularidad bastante amplia, pero en la programación industrial, especialmente en Estados Unidos, no lo ha hecho. Y entonces el camarada Wirth hizo tal truco con sus oídos: creó un lenguaje que llamó Pascal. Él mismo es de Zúrich, pero en ese momento estaba en prácticas en Stanford.



Pascal - Algol "recortado" 68. Es decir, tomó unas tijeras, cortó esto, esto, esto ... La primera descripción fue - como un cuaderno de 2 kopeks: 24 hojas, delgadas, delgadas. Dado que en ese momento ya habíamos completado el trabajo en Algol 68, uno de mis estudiantes se comprometió a implementar Pascal con nuestros propios métodos. Pero todas las mañanas comenzaba con sus preguntas para mí: "¿por qué puedes escribir muchos operadores entre repetición y hasta sin paréntesis adicionales, y después do - solo uno?", "¿Por qué puedes escribir si después de otra, pero no después de entonces?" ¿Qué hacer si quiero pasar el propio procedimiento como parámetro, por ejemplo, para calcular una integral múltiple? ". Hubo muchas inconsistencias. Algol 68 tenía limitaciones de modo que la memoria infinita no funcionaría, de modo que la autorreducción no funcionaría. En Pascal, no.



En esos años, una broma era popular en la URSS: “Yo trabajo en la fábrica de camas, todos los días llevo los detalles a casa, quiero hacer una cama, pero no importa cómo la arme, consigo una ametralladora”. Entonces, cuando comenzamos a arreglar Pascal, obtuvimos Algol 68 . Todos se rieron, dijeron que era extraño, pero no encuentro nada sorprendente en esto. Es solo que trescientas personas han estado trabajando en Algol 68 durante muchos años, incluidos nosotros.



Es curioso que mi esposa le escribiera a Kes Coster, el autor de la sección de intercambio, sobre los errores que encontró y recibió respuestas: "Estimado Sr. Terekhova". Al principio nos ofendimos y luego nos dijeron: "¿Cómo adivinará que Terekhova es ella?" Luego comenzamos a fichar a Galiy Terekhov, y él entendió todo.



Wirth es un tipo inteligente, trabajó en el refinamiento de Pascal, y en 1974, junto con un hombre llamado Jensenhizo el estándar más grueso, páginas 100-120. Cuando Wirth celebró su 80 cumpleaños, hubo un pequeño simposio en Zurich, donde fui invitado entre 20-30 invitados. Cuando llegué, resultó que Jensen era una mujer, Kathleen. Para ser honesto, fue una sorpresa para mí. Hizo mucho para transformar a Pascal de un juguete a un lenguaje serio.





Discurso de Kathleen Jensen en el simposio dedicado al 80 cumpleaños de Niklaus Wirth



Luego Borland se puso manos a la obra e hizo Borland Pascal, ya dos volúmenes gruesos. Así apareció un lenguaje que ya se podía utilizar . Antes de eso, mimos en la escuela.



Cuando se publicó el informe revisado sobre Pascal Wirth y Jensen, también unos años después de la publicación del primer estándar, Wirth escribió en el prólogo: "Pascal tiene un nivel más alto que Algol 60". El editor de traducción fue el famoso programador soviético Dmitry Podshivalov, un tío bastante malvado. Le encantaba hablar con dureza. Después del comentario de Wirth, apareció una nota a pie de página en la traducción: “Es difícil estar de acuerdo con esta afirmación. Intente escribir un procedimiento de multiplicación de matrices en Pascal ”. El hecho es que en Pascal, como en C, por cierto, puede describir una matriz de cero a cien, a mil, pero no puede describirla hasta N; no hay matrices dinámicas. ¿Cómo describe el procedimiento de multiplicación de matrices? No sabes qué matrices se van a multiplicar. Por lo tanto, Podshivalov tenía toda la razón. ¡También para mí, un lenguaje de nivel superior en el que no se puede escribir un procedimiento de multiplicación de matrices!





Nikolaus Wirth y la computadora Lilith desarrollada en la Escuela Técnica Superior Suiza de Zurich. Wirth creó un nuevo lenguaje, Modula-2, específicamente para la implementación del software para este sistema . 1981



Pascal finalmente se hizo muy popular entre los escolares y estudiantes. Para el aprendizaje básico de la programación, es realmente bueno. Para los tontos, la confiabilidad significa poco: solo piense, un agujero en el idioma: uno, segundo, tercero. Pero se puede leer y escribir fácilmente. En mi opinión, Pascal no entró en programación industrial, donde se requiere responsabilidad y es necesario escribir grandes sistemas de software con alta confiabilidad.



Infierno



Después de que los europeos hicieran Algol 68, los estadounidenses decidieron: ¿por qué somos peores? Y decidieron crear un nuevo lenguaje para el Departamento de Defensa de EE. UU. Ahora es el cliente de TI más grande del mundo, ya que ninguna empresa puede igualarlo en términos de financiación. Los estadounidenses decidieron abordar esto científicamente. Primero, formule los requisitos para el idioma. Fueron llamados así: hombre de paja, hombre de madera, hombre de acero. Y el último es de piedra. He leído estos gruesos tomos, claramente y bien articulados.



Luego anunciaron una competencia con un premio multimillonario. Pero entendieron que, si no se tomaban medidas especiales, IBM definitivamente ganaría.Es como el dicho sobre el fútbol: "Todos juegan, pero los alemanes ganan". En esos años, IBM tuvo 20 veces más facturación financiera que su competidor más cercano. También dijeron "IBM y los 6 enanitos": una empresa con una facturación de 16 mil millones y seis más, mil millones de toneladas cada una, IBM aplastaría a todos. Por eso, el Ministerio de Defensa clasificó a los participantes, nadie sabía quién era quién. En la primera etapa se seleccionaron 17 equipos. Les dieron bastante financiamiento, millones de dólares cada uno. En la segunda etapa, cuatro equipos fueron seleccionados y nombrados por colores: rojo, amarillo, verde, azul. Su financiación ya era de miles de millones y tenían que hacer no solo el idioma, sino también un traductor de prueba para poder probarlo. Sólo cuando terminaron su trabajo se abrieron los sobres.



Hubo un escándalo salvaje, porque de repente ganaron los europeos, el equipo de Jean Ishbia de París. Con un lenguaje muy similar al ALgol 68 y completamente diferente al PL / 1. El idioma se llamó Ada, en honor a la primera programadora del mundo, Ada Lovelace, asistente de Charles Babbage y, por cierto, hija de Lord Byron, pero probablemente lo sepas bien.





Jean David Ishbia era un empleado de la división de investigación del fabricante francés de computadoras Bull



Para crear todos estos "hombres de piedra", es decir, formular requisitos, los estadounidenses convocaron comités. Se necesitaron cientos de especialistas para evaluar todo el asunto. Por lo tanto, grupos enteros de programadores fueron atraídos desde Europa a Estados Unidos. Un comunista fue atrapado en uno de los comités: el húngaro Ivan Bach, miembro del Partido Laborista Socialista Húngaro, terminó prácticamente en el Pentágono. En 1976 di una conferencia en la Universidad de Budapest, donde me presentaron. Nos hicimos amigos, caminamos por Budapest y me dijo cómo se arregla todo con los estadounidenses. Finalmente, me envió una de las descripciones preliminares del lenguaje del infierno en cinta. Trabajamos en ello durante otros tres años más tarde. Nuevamente, recuerda el número 6.



Así que traje a la URSS la primera descripción que hace el país del idioma del infierno. Naturalmente, decidimos hacer un traductor. Ya me he vuelto experto en este asunto y pensé: dado que este es el estándar del Departamento de Defensa de los EE. UU., Nuestros soldados ciertamente querrán usarlo. Entonces les diré: "Tengo un traductor". Pero extrañé mucho: nuestros guerreros no estaban interesados ​​en Ada. En mi opinión, en vano. Robaron todo, era necesario robarlo también.



Cuando decidí hacer un traductor, un empleado de mi laboratorio, cuatro años mayor que yo, dice: “Andrei, supervisaste mucho. ¿Por qué eres todo para ti y para ti mismo? Déjame dirigir este trabajo ". Respondo: “Lo traje, lo pensé, sé cómo hacerlo. Pero está bien, guía ". Me persuadió y ya tenía algo que hacer. Pasaron tres meses y resultó que el grupo, creado cerca de Ada, estaba encabezado por un graduado de casi este año. Fue mi alumno Arkady Popov. Pregunto: “¿Cómo es eso? ¿Por qué le dijiste al idiota? " Y él: "No lo pasé, me lo quitaron". El joven resultó ser muy activo.



Pero la historia no termina ahí. El joven me dice: “Andrey, eres el líder equivocado. Hacemos todo con prototipos, rápidamente queremos ver algo. Es necesario en ciencia: crea un proyecto y síguelo ". Yo: “Tú lideras, hazlo. Veremos al mismo tiempo ".



Un grupo de cuatro personas pasó dos años escribiendo tres volúmenes gruesos: un borrador. Cuidamos de los jóvenes, nos regocijamos por ellos, después de que se completó el diseño incluso bebimos un poco de alcohol. Un momento solemne: se han completado dos años de trabajo. Pero tomó tres meses de implementación, y resultó que estaban equivocados en el proyecto, y en algún tipo de estructura de datos que afecta fuertemente a todo lo demás. Arkady se acercó a mí y me pidió perdón: "Nos engañamos". Pero este grupo, sin embargo, hizo el primer traductor en la URSS del idioma del infierno. Cierto, más tarde de lo que iba a hacer, y de manera normal, como todos los demás.





Oleg Perminov, "Introducción al lenguaje de programación ADA", 1991



Java y Python



Aquí es donde terminan mis idiomas favoritos. El camino posterior ya no era tan revolucionario.



Digamos Java. Basado en una máquina virtual, portabilidad de código. Incluso Wikipedia dice que los códigos p se inventaron en algún momento de 1978. ¡Pero no! Le pregunté al propio Wirth a quién se le ocurrió el código p. Él respondió: "Lo inventé". Cuando Pascal lo hizo, fue al rector de la Universidad de Stanford: “Hay un idioma en el que se puede enseñar bien a los estudiantes. ¿Vamos? " Rector: “¡Vamos! Solo tengo seis tipos de computadoras. Ten Pascal en todos ". Wirth dijo que casi muere; es imposible hacer seis traductores solo. Y fue entonces cuando creó un código p, una máquina virtual. Resultó que tenía un traductor de Pascal a código p escrito en código p, y luego se hizo un intérprete de código p en cada máquina; este es un programa de ensamblaje muy simple, varios cientos de líneas. Y todo funcionó. Todavía usamos esta idea. Niklas afirmaque fue él quien inventó el código p, y no en el 78, sino en el 71. También escuché sobre el código p a principios de los 70; nos llegó algo de información.



Ahora Wirth está haciendo algo similar a lo que estamos haciendo nosotros, y estamos creando una variante del lenguaje C: más seguro, con un control más completo. Resulta que tampoco somos los primeros en esto. Ya existe tal lenguaje: Di, fue inventado por Andrei Alexandrescu. Lo conozco personalmente, lo vi en una conferencia.



Diré solo unas pocas palabras sobre Python. Es un lenguaje que no se puede utilizar para escribir programas grandes. Pero es muy bueno para hacer prototipos: maquilla rápidamente la rodilla y mira qué pasa. Entonces lo usan, básicamente. Un lenguaje ligero con una gran cantidad de bibliotecas. Pero no puedo imaginar que escribirían el control de un cohete o una central telefónica en Python; no está diseñado para un gran sistema de hardware. En realidad, el propio Guido van Rossum me habló de esto cuando me contó cómo y por qué se le ocurrió a Python.



Si



Me extenderé con más detalle sobre la historia del lenguaje C, uno de los más populares. Ken Thompson en 1970 ideó un sistema operativo que ahora se llama Unix. Fue un evento genial. Para ello, utilizó el lenguaje sin tipo B. Un poco más tarde, a Martin Richard se le ocurrió el lenguaje BCPL: el desarrollo del lenguaje Bi, también sin tipo. Entonces Dennis Ritchie decidió reescribir todo en un lenguaje C más eficiente y confiable, que él mismo inventó. Confió en B y BCPL, pero agregó control de tipo.





Los creadores de UNIX, Ken Thompson y Dennis Ritchie, trabajando en el PDP-11. Foto de Peter Hammer, alrededor de 1970



Resultó divertido. La primera publicación de Richie salió en 1978, cuando Xi ya se había hecho popular e incluso llegó a la URSS. Conocía C porque el código fuente de Unix se distribuía libremente; esta fue la primera experiencia de un proyecto de código abierto. La gente estudió C de la siguiente manera: léalo: una matriz se escribe así, un corte es así, un bucle como este. Eso es todo, no se necesita nada más. Pero el primer artículo del autor del idioma apareció solo unos años después de que todos en el mundo ya lo conocían de cerca.



C es un muy buen lenguaje, me gusta, pero tiene agujeros. Quiero arreglar esto, estoy trabajando en ellos ahora y me aseguraré de usar versiones más confiables.



Cobol





La portada del informe sobre el lenguaje Cobol preparado por el Departamento de Defensa de Estados Unidos para la conferencia de abril de 1960.



Cobol, el demonio, también fue inventado por los estadounidenses. El hecho es que Fortran se inventó originalmente para cálculos científicos, mientras que los estadounidenses ya en esos años usaban muchas computadoras en la economía para administrar la producción. Cobol se inventó específicamente para trabajar con datos económicos.



El lenguaje es muy extraño, pero resultó ser bueno para los cálculos económicos. Puede decir mientras quiera que está lleno de agujeros y es descuidado, pero la mitad de los programas financieros del mundo están escritos en él, el Banco Central de Rusia y Sberbank también trabajan en Kobol. Lo sé bien, porque mis alumnos están en todas partes. No escriben programas nuevos en él, pero hay toneladas de programas antiguos.



Kobol me dio la oportunidad de sobrevivir durante la época de la perestroika. A fines de la década de 1980, teníamos un poderoso grupo de traductores: los primeros traductores de Algol 68, de Ada, de lenguajes de inteligencia artificial, control de robots. Todo estaba bien, pero estalló la perestroika y una corriente de programas de Estados Unidos llegó aquí. Las emisoras estadounidenses inundaron el mercado y, dado que nadie pagaba por nada, esta era la era de la piratería, comenzaron a olvidarse de mi equipo. Casi me desesperé, aunque en ese momento había formado la empresa "Terkom": Terekhov y el equipo.



Probablemente habría desaparecido, pero los estadounidenses tenían un problema comercial.Habían acumulado toneladas de programas en Cobol, pero su mantenimiento resultó muy caro, muy poca gente conoce este idioma. Y luego decidieron hacer una reingeniería de este tipo: transferir programas de kobol a plataformas modernas. Lo intentó en la Universidad de Duke, pero falló. Pero en su compañía había un nativo de la URSS. En realidad, fue solo en el sexto o séptimo viaje a los Estados Unidos que conocí a un estadounidense que nació en Estados Unidos. Lenya Erlikh, ex residente de Odessa, dijo: "Si los estadounidenses no pueden, tal vez los rusos tengan éxito". Y lo logramos. En general, el lenguaje es monstruoso, pero me ayudó a sobrevivir en tiempos difíciles.



All Articles