Andrey Terekhov: de Fortran a Python





Neste outono, Andrei Terekhov, chefe do Departamento de Programação de Sistemas em Matmekh da Universidade Estadual de São Petersburgo, Professor Doutor em Física e Matemática, contou aos nossos colegas sobre a história das linguagens de programação populares e sua penetração na URSS. Junto com Andrei Nikolaevich, preparamos, com base em sua palestra, material sobre como diferentes línguas cruzaram a Cortina de Ferro, como foram traduzidas em diferentes arquiteturas, como algumas delas entraram na moda. Tendências gerais e impressões pessoais - para todos que desejam ter uma ideia geral da história do assunto.



Para quem prefere assistir ou ouvir, um vídeo da palestra está postado aqui .



Programação em códigos



A primeira máquina verdadeiramente eletrônica foi chamada de Integrador Numérico Eletrônico e Computador e foi feita em 1946 pelos americanos. No coração de tais computadores está um gatilho, que em 1918 foi inventado por um residente de Petrogrado Mikhail Aleksandrovich Bonch-Bruevich. Ao contrário de Popov, ele ainda conseguiu garantir os direitos da invenção. O circuito em si era muito famoso: meu pai, um engenheiro eletrônico militar, usava esses gatilhos antes da guerra.



Já em 1949, o engenheiro soviético Sergei Alekseevich Lebedev fez uma máquina MESM em Kiev. Ele estava apenas três anos atrás dos americanos, embora Kiev tenha sido quase completamente destruída. Lebedev ganhou até um prédio na cidade de Feofania - então ainda ficava a 30 km da cidade - onde antes da guerra havia um hospital psiquiátrico. Mas então simplesmente não havia outros edifícios.





Um edifício em Feofaniya, agora um distrito, e na década de 1950 - um subúrbio de Kiev, onde Sergei Lebedev trabalhou.



Para esses primeiros computadores, as pessoas escreviam em códigos binários. Digamos que o programa se pareça com este: 01 100 101 110. Suponha que 01 seja um código de adição. Então diz aqui: acrescente a palavra no endereço 100 com a palavra no endereço 101 e escreva o resultado no endereço 110. Em geral, tudo é claro, mas como uma pessoa que achou programação em códigos, direi que isso é terrivelmente inconveniente ... Sim, você provavelmente entende isso.



De 1964 a 1966, estudei na 157ª escola de matemática perto de Smolny, uma das mais famosas de Leningrado, subordinada não à RONO, mas à Academia de Ciências Pedagógicas. Lá tínhamos dois "Ural-1" e duas meninas-técnicas que não sabiam programar, mas sabiam consertar essas máquinas. Eu mesmo também tive que aprender primeiro como consertá-los, mas depois escrevemos muitos programas úteis nos Urais, até mesmo para geólogos contamos alguma coisa.



O principal problema de programação em códigos não é "01 02 03" - é fácil de lembrar. Mas se você precisar inserir algo entre duas células - de acordo com a lógica de trabalho, para que alguns arrays sejam sincronizados - todos os endereços abaixo deste insert irão rastrear. Teremos que reescrever tudo e, o mais importante, preencher novamente.



Colocamos programas em um filme de 35 mm, que colávamos em um anel se um laço fosse necessário. Entre no programa - anote a soma de verificação com um lápis. Você insere novamente: se as somas de verificação corresponderem, então tudo está correto. Se eles não corresponderem, você os insere pela terceira vez e assim por diante até que desapareça.



Era tão inconveniente que as pessoas rapidamente sugeriram substituições simbólicas. Em vez de 01, passou a ser possível escrever apenas o símbolo "+", e no lugar do endereço - a, b ou c. Era a linguagem assembly, com um tradutor muito simples o programa podia ser traduzido em códigos de máquina. Demorava duas visões: na primeira você faz uma tabela com todos os identificadores e seus endereços, na segunda, você substitui os identificadores por endereços e pronto.



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





O americano John Backus, que inventou a linguagem FÓRmula TRANslator em 1957, fez uma verdadeira revolução. A IBM, onde ele trabalhou, em geral surgiu com muitas coisas, incluindo, por exemplo, cartões perfurados. O Fortran tornou possível escrever uma fórmula, e a partir dela surgiram os primeiros tradutores, muito mais complexos do que um tradutor da linguagem assembly. Ou seja, as pessoas eram capazes de escrever programas normais em uma linguagem algorítmica normal.





John Backus admitiu que o principal incentivo em sua busca foi a preguiça e o desejo de simplificar o processo de escrever programas. Na foto - De volta na capa da Think, revista corporativa da IBM



Ironicamente, o Fortran ainda é popular hoje, especialmente entre físicos e engenheiros que acreditam que não precisam de mais nada, mesmo que tantos anos tenham se passado. Toneladas de programas padrão se acumularam - bibliotecas enormes.



Mas, como de costume, houve alguns erros significativos. O mais caro aconteceu há mais de meio século. Um engenheiro escreveu este programa:

DO 3 I = 1,4



Este é um ciclo. Operadores até a marca 3 devem ser executados com I igual a 1,2, 3, 4. Mas o americano errou e colocou ponto final em vez de vírgula entre 1 e 4. No Fortran, não há descrição obrigatória, portanto, nenhum erro foi encontrado. Como resultado, o voo espacial para Vênus foi interrompido.



Até Lomonosov descobriu que existe uma atmosfera muito densa ao redor de Vênus, mas ninguém viu a superfície do planeta. Os americanos enviaram um foguete com uma tarefa importante: ele deveria voar até Vênus, fazer algumas revoluções e então mergulhar na atmosfera e fotografar a superfície. O foguete voou por três meses e voou. Quando mergulhei, a aba da câmera não abriu, pois essas linhas foram as responsáveis ​​pela sua abertura. Muitos bilhões de dólares literalmente voaram para o ar. O escândalo foi incrível, a pessoa que cometeu o erro foi encontrada. 6-7 bilhões é uma perda tangível até mesmo para americanos ricos. Mas esse programador não se machucou, pois os documentos continham as assinaturas de todos os chefes possíveis.Depois de longas tentativas, foi decidido que Fortran era o culpado por tudo: as regras para determinar o idioma acabaram sendo muito inconvenientes e pouco confiáveis.



Em meados da década de 1970, fizemos o primeiro tradutor do Algol 68 e traduzimos todos os idiomas antigos para ele. Em particular, a 93ª caixa foi transferida - agora é o Instituto de Rádio Navegação e Tempo Preciso.





O prédio do Instituto de Pesquisa de Rádio e Engenharia de Leningrado - Instituto Russo de Rádio Navegação e Tempo - agora abriga o escritório do banco Rossiya.



Anteriormente, estava localizado em um enorme edifício amarelo em frente a Smolny, agora há um banco nele, e o instituto foi despejado para os arredores da cidade.Então, transferimos dezenas de programas do Fortran para o Algol 68 e sempre ganhamos quatro vezes. Achei que fosse algum tipo de golpe, porque tínhamos que vencer duas vezes - apenas às custas do melhor tradutor. Por que ganhamos às quatro? Entendido. Ensinamos Algol 68 às pessoas - eu dei palestras, minha aluna Leha Rokhlin estava praticando. E em Fortran, eles escreveram como uma galinha com uma pata.



Uma vez, meu ex-aluno, um major do exército soviético na reserva, Andrei Sergeevich Agapov, me ligou: “Andrei, em um dos programas a resposta era quatro vezes diferente do fortran" Como várias dezenas de programas funcionaram bem, respondo: "Não me importa, isso acontece." Ele: “Não, esse é o controle do radar, que determina as coordenadas de tiro. Se, devido a um erro no programa, o foguete voar na direção errada, não parecerá a ninguém. " Comecei a entender. Achei que o ALGOL 68 estava mentindo, afinal, um novo tradutor. Eu verifiquei tudo - não estava mentindo. Comecei a ler produtos da montadora - não, não estou mentindo. Então comecei a ler cuidadosamente o programa Fortran. Nada encontrado. Já brutalizado, passou um mês. Comecei a ler a produção do montador do Fortran, mas é estúpido. Encontrado! Veja.



Foi escrito:

X = 9,3.

Mas X era o dobro e 9,3 era curto. Como resultado, duas equipes nasceram.

LE 0, = E '9,3'

STD 0, X.

No computador ES - havia tal máquina, uma cópia do IBM 360 - uma palavra de 64 bits. E agora o comando LE carregado apenas na metade esquerda do registrador, e lixo esquerdo na metade direita. E o comando STD despejou todo o registro. Como o processo foi mal condicionado, ou seja, pequenas mudanças nos dados de entrada influenciaram fortemente o resultado, a resposta após 11 minutos de tempo de CPU divergiu quatro vezes. Acontece que eu tive que escrever mais seis zeros aqui:

X = 9,3000000

Eu encontrei esse erro e me lembrei dele pelo resto da minha vida, embora tenha sido há 40 anos.




Existe o conceito de "sistema amigável", e existe - "hostil". Este é um exemplo típico de sistema hostil.



Ou um exemplo mais simples de que todos os meus alunos sofrem.

X = 1/3

Qualquer pessoa normal pensa que será de 0,33. Fig você! Haverá zero. Dois inteiros, o que significa que haverá uma divisão de inteiros. E se você quiser obter 0,33, coloque dois pontos:

X = 1. / 3.

Suficiente em um só lugar, então estará correto. Mas, novamente, quem vai notar?



Algol 60



Fortran foi considerado culpado de todos os pecados capitais e as pessoas começaram a inventar novas linguagens de programação. Os europeus criaram o Algol 60. Também há algumas travessuras com os números: eles o inventaram em 1958 - um ano depois de Fortran. Mas era tão desajeitado e ruim que a linguagem começou a ser revisada e foi adotada no congresso da IFIP (International Federation of Information Processing) apenas em 1960 - daí o nome. Mas o trabalho continuou e, em 1964, foi publicada uma mensagem revisada sobre o Algol 60. Trabalhamos nisso por 6 anos. Lembre-se desta figura, ela será encontrada várias vezes mais. Demora seis anos para trazer a versão inicial da linguagem à perfeição.



O primeiro tradutor na URSS de Algol 60 foi feito no Korolev Center (este é um instituto espacial, hoje NPO Energia) sob a liderança de Svyatoslav Sergeevich Lavrov, que a partir de 1972 assumiu a chefia do departamento de software, onde hoje trabalho.





Svyatoslav Lavrov, 1987. Foto do arquivo do acadêmico Andrei Ershov



Lavrov era o chefe do departamento de balística externa - foi ele quem calculou a trajetória do primeiro satélite, a trajetória de Gagarin. Ele contou como era na era anterior ao computador, quando várias centenas de mulheres passavam dias inteiros girando máquinas de somar, contando alguma coisa.Tendo ouvido falar em algum lugar sobre os primeiros computadores, Lavrov se interessou por eles, empolgou-se e acabou mudando a balística externa para programação, tornando-se o primeiro tradutor. Então, em Novosibirsk, Andrey Petrovich Ershov criou um tradutor otimizador “Alpha”. Dizem que até os americanos o reconheceram como o melhor tradutor otimizador. Então, em Moscou, eles fizeram o TA2 a partir do Algol 60 completo, mas naquele momento, o Algol 60 completo com seus recursos estúpidos não era mais necessário para ninguém. Pelo que eu sei, o TA2 nunca foi usado e eu trabalhei no tradutor do Lavrovsky TA1M por muitos anos. Tínhamos duas máquinas M 20 na Mattech, elas eram equipadas com um TA1M, que mais tarde foi chamado de "Sinal".



PL / 1



Os americanos ficaram amargurados quando Algol 60 apareceu na Europa e fez PL / I (Linguagem de Programação I). Linguagem terrível! Centenas de conversões automáticas de tipo para outros tipos. Uma linguagem shell, como eles disseram. Várias centenas de operadores: para qualquer operador individual - quem se lembrará de todos eles? No entanto, essa linguagem se tornou bastante popular também na URSS, desde o surgimento dos computadores ES. Eu escrevi nele, mas pesadelos também aconteceram. Você descreverá em um procedimento a variável global A bin fix (inteiro) e em outra variável A bin float (ponto flutuante). Então você irá procurar por um erro por um longo tempo - o tradutor não dirá nada.



Em suma, o PL / 1 e na Europa eram fortemente odiados, não só na URSS. Já estive nos EUA muitas vezes e ouvi issonão há programação capitalista e comunista, mas existem estilos diferentes .



O estilo americano é um método de força bruta. Quando uma pessoa não tem o poder de computação de uma máquina, ela vai até o chefe e diz: "Compre-me um carro com o dobro da potência." Normalmente, eles realmente compram.



Na Europa - e na URSS, é claro - isso não foi aceito. Tive que pensar com a cabeça, encontrar um algoritmo mais eficiente.



Uma vez conheci o designer-chefe dos tradutores da PL / 1. Seu sobrenome Marx é fácil de lembrar para um soviético. Ele não é americano, inglês, e esses tradutores foram feitos não muito longe de Londres - havia um centro da IBM na Europa. Nós o encontramos em Novosibirsk, onde houve uma grande conferência na qual Marx fez uma reportagem. Foi perguntado a ele: "Quantos erros foram encontrados durante o processo de depuração?" Ele: “Não posso responder a esta pergunta - o segredo da empresa”. - "Quantas pessoas você teve?" A resposta é a mesma. Então Kes Koster, um dos autores de Algol 68 (fui contratado por ele como tradutor), salta e começa a gritar em um inglês bastante específico, que todas as crianças agora sabem: "Você desgraça nosso mundo livre diante desses colegas oprimidos." E para mim: "Traduza!" Eu: "Não é aceito aqui, Kes." - “Eles designaram você para mim, então traduza!" Ah bem? Comecei a traduzir, como entendi, mas entendi com bastante precisão. Mas ninguém me condenou. Depois houve uma pausa com copos de café e conhaque - então foi assim. Este pobre Marx está de pé e a cerca de um metro existem dois vazios. Aproximei-me dele com dois recipientes: "Vamos beber!" Ele bateu o vidro e disse: “Deixa eu te contar tudo.Em uma conversa particular eu posso, mas da tribuna eu não posso . " E então ele disse que tinha 51 programadores, que eles encontraram tantos erros, que esta é uma estrutura tão selvagem - um tradutor com PL / 1.



Então descobrimos que temos muito em comum. Ambos nasceram em 1949, ambos se formaram em universidades em 1971 - ele é Londres, eu sou Leningrado. Eu digo: “Como é isso? Vencemos você quatro vezes em tempo de transmissão, três vezes em velocidade de contagem e um número infinito de vezes em tamanho de código. Porque você é tão estupido? " Ele: "Há quantos anos você trabalha no tradutor do Algol 68?" - "Sete anos". - “Nós teríamos expulsado você do seu trabalho há muito tempo. Ano - conduza as mercadorias, caso contrário, você estará na rua. " Foi quando eu aprendi o que é tempo de mercado.É importante trabalhar rápido, caso contrário alguém vai ocupar esse nicho no mercado. Então você fará melhor, mas ninguém saberá sobre isso. Na URSS, não sabíamos disso.



ALGOL 68



Os europeus responderam a PL / I com a linguagem ALGOL 68. Existia um grupo de trabalho 2.1 IFIP sobre linguagens semelhantes ao Algol. Quando em 1964 uma mensagem revisada sobre Algol 60 foi publicada, eles decidiram que essa direção havia acabado, algo completamente diferente tinha que ser desenvolvido. Eles gritaram: o que vamos fazer a seguir? A resposta foi o Livro Branco - tenho em minha estante, uma raridade, não na internet - com propostas para o mesmo grupo 2.1.



Ele contém um longo artigo de Ralph London sobre provas de correção do programa, o artigo de Barbara Liskov "The CLU Language", onde ela formulou pela primeira vez o conceito de tipos de dados abstratos. Houve também um artigo do estudioso holandês van Weingaarden sobre gramáticas de dois níveis. A gramática de dois níveis é como uma máquina de Turing em termos de poder, com sua ajuda você pode descrever não apenas a sintaxe exata - agora você não surpreenderá ninguém - mas também a semântica exata da execução da linguagem. E depois de muitas reuniões, as pessoas do Grupo de Trabalho 2.1 decidiram tomar as gramáticas de dois níveis de van Weingaarden como base para a linguagem futura . Não antes de dizer que acabou.



O grupo incluía cerca de 200 pessoas, incluindo cientistas soviéticos: Ershov, Lavrov. Meu orientador científico Grigory Samuilovich Tseitin escreveu muitas cartas aos participantes - eles até lhe agradeceram. Em dezembro de 1968, o IFIP adotou uma nova linguagem chamada Algol 68.



Era uma linguagem estranha, um pesadelo. Por um lado, era muito formal e preciso, por outro, era impossível escrever nele.



E assim Grigory Samuilovich Tseitin chega ao nosso laboratório de programação de sistemas, no qual trabalhei como aluno do terceiro ano de matemática, e diz: “Gente, eles inventaram essa linguagem aqui - ninguém consegue implementá-la. Vamos implementar. " Nós: "Vamos" - e começamos o assunto. Meu diploma em 1971 chamava-se "Busca por uma cadeia de fantasmas em um tradutor de Algol 68 para um computador ES". 11 páginas de texto manuscrito e um programa de trabalho. Cinco anos depois, encontrei um erro neste diploma, mas quando me defendi, ninguém percebeu.



A linguagem era muito difícil e não éramos os únicos a pensar assim. O Grupo 2.1 continuou e um relatório revisado sobre ALgol 68 foi publicado em 74. Mais seis anos de trabalho árduo por um grande comitê.Esta linguagem já se revelou bastante compreensível, começou a ser implementada em muitos grupos tanto na Europa como na América. Na URSS, havia um grupo de Mikhail Ruvimovich Levinson no Instituto Central de Economia e Matemática, Ekaterina Logvinovna Yushchenko em Kiev. Sasha Maslov e sua equipe fizeram Algol 68 para Elbrus. Andrey Petrovich Ershov criou um tradutor otimizador do Algol 68 em Novosibirsk. Em Leningrado, quando Grigory Tseitin deixou essas obras, a tarefa literalmente caiu sobre mim.





"Algol: Sucesso e Fracasso", resumo do relatório do cientista suíço Peter Naur, apresentado no colóquio "10 anos de Algol" em Zurique em 31 de maio de 1968. Do arquivo do acadêmico Andrey Ershov



Não precisei me sentar com ninguém para me tornar o chefe do laboratório. Tudo acabou por si mesmo quando começamos a depurar o IBM / 360 em Moscou NITSEVT. Tínhamos um doutor em ciências, cerca de cinco candidatos e cerca de 15 alunos, enquanto escrevíamos artigos e livros, tudo bem. Mas então as pessoas da geração mais velha começaram lentamente a cair. O tempo no NITSEVT foi alocado para nós apenas à noite. Fomos a Moscou por três dias - trabalhamos à noite, dormimos durante o dia, mas os jovens não ligavam. Além disso, adorava trabalhar à noite. Havia dispositivos americanos e soviéticos. Jogue o cabo fora e você trabalhará normalmente com um bom equipamento americano e volte de manhã. Durante o dia, eles não tinham permissão para fazer isso.E meus colegas mais velhos não suportaram: quando entregaram o tradutor, eu já era o designer-chefe e o chefe do laboratório.



Fizemos o primeiro tradutor na URSS a partir de Algol 68. Com alguma defasagem, os grupos de Maslov e Levinson. Yushchenko fez um desenvolvimento interessante combinado com um banco de dados. Uma enorme pesquisa científica chamada "Projeto Beta" foi realizada em Novosibirsk. Eles tentaram generalizar fortemente o problema, de forma que ALgol 68 e PL / I e Pascal pudessem ser feitos com um tradutor. Tanto nos códigos BESM-6 como nos códigos ES EVM O projeto nunca foi totalmente concluído, mas eles fizeram alguns tradutores individuais.



Quando começamos a implementar o Algol 68, descobrimos que ninguém realmente precisava de sua confiabilidade, exceto os militares.Mas então eles caíram nessa, e muitas organizações militares mudaram para ela.





Índice do relatório revisto sobre ALgol 68 emitido pelo grupo de trabalho 2.1. O primeiro da lista de editores é Adrian van Weingaarden



Pascal



Um dos participantes do Grupo de Trabalho 2.1 foi Niklaus Wirth. Ele e vários outros cientistas conhecidos - Hoare, Dijkstra, infelizmente, nosso Lavrov - não concordaram com a opinião da maioria e em dezembro de 1968 redigiram o chamado Relatório da Minoria. Nele, eles expressaram a ideia de que “a montanha deu à luz um rato: essa linguagem é tão grande e complexa que ninguém jamais vai entender em sua vida”. Na verdade, isso é verdade, mas após seis anos de trabalho e o lançamento da Mensagem Revisada, Algol 68 tornou-se uma linguagem bastante agradável e compreensível . Nos círculos acadêmicos, ganhou uma popularidade bastante ampla, mas na programação industrial, especialmente na América, não. E então o camarada Wirth fez um truque com os ouvidos - ele criou uma linguagem que chamou de Pascal. Ele próprio é de Zurique, mas naquele momento era estagiário em Stanford.



Pascal - "aparou" Algol 68. Quer dizer, ele pegou uma tesoura, cortou isso, isso, isso ... A primeira descrição foi - como um caderno para 2 copeques: 24 folhas, fino, fino. Como já tínhamos concluído o trabalho no Algol 68 naquela época, um dos meus alunos se comprometeu a implementar Pascal com nossos próprios métodos. Mas todas as manhãs começavam com suas perguntas para mim: "por que você pode escrever muitos operadores entre repetir e até sem parênteses adicionais, e depois fazer - apenas um?", "Por que você pode escrever se depois de então, mas não depois disso?" o que fazer se quiser passar o próprio procedimento como parâmetro, por exemplo, para calcular uma integral múltipla? ". Houve muitas inconsistências. Algol 68 tinha limitações para que a memória infinita não funcionasse, para que a auto-redução não funcionasse. Em Pascal, não.



Naqueles anos na URSS havia uma anedota popular: "Trabalho na fábrica de camas, todos os dias levo os detalhes para casa, quero fazer uma cama, mas não importa como eu monte, consigo uma metralhadora." Então, quando começamos a consertar o Pascal, obtivemos o Algol 68 . Todos riram, disseram que era estranho, mas eu simplesmente não acho nada de surpreendente nisso. Acontece que trezentas pessoas trabalham no Algol 68 há muitos anos, incluindo nós.



É engraçado que minha esposa escreveu para Kes Coster, a autora da seção de intercâmbio, sobre os erros que ela encontrou e recebeu respostas: "Caro Sr. Terekhova." A princípio ficamos ofendidos e depois nos disseram: "Como ele vai adivinhar que Terekhova é ela?" Então começamos a assinar Galiy Terekhov, e ele entendeu tudo.



Wirth é um cara inteligente, ele trabalhou no refinamento de Pascal, e em 1974, junto com um homem chamado Jensentornou o padrão mais espesso, páginas 100–120. Quando Wirth comemorou seu 80º aniversário, houve um pequeno simpósio em Zurique, onde fui convidado entre 20 a 30 convidados. Quando cheguei, descobri que Jensen era uma mulher, Kathleen. Para ser honesto, foi uma surpresa para mim. Ela fez muito para transformar Pascal de um brinquedo em uma linguagem séria.





O discurso de Kathleen Jensen no simpósio dedicado ao aniversário de 80 anos de Niklaus Wirth



Então a Borland começou a trabalhar e fez Borland Pascal - já dois volumes grossos. Assim , apareceu uma linguagem que já podia ser usada . Antes disso - mimos da escola.



Quando o relatório revisado sobre Pascal Wirth e Jensen foi publicado - também alguns anos após a publicação do primeiro padrão - Wirth escreveu no prefácio: "Pascal tem um nível superior a Algol 60". O editor de tradução era o famoso programador soviético Dmitry Podshivalov, um tio bastante perverso. Ele gostava de falar abertamente. Depois da observação de Wirth, uma nota de rodapé apareceu na tradução: “É difícil concordar com essa afirmação. Tente escrever um procedimento de multiplicação de matrizes em Pascal ”. O fato é que em Pascal, como em C, a propósito, você pode descrever um array de zero a cem, a mil, mas não pode descrevê-lo até N - não há arrays dinâmicos. Como você descreve o procedimento de multiplicação de matrizes? Você não sabe quais matrizes serão multiplicadas. Portanto, Podshivalov estava absolutamente certo. Também para mim, uma linguagem de nível superior em que você não pode escrever um procedimento de multiplicação de matrizes!





Nikolaus Wirth e o computador Lilith foram desenvolvidos na Escola Técnica Superior Suíça de Zurique. Wirth criou uma nova linguagem, Modula-2, especificamente para implementar o software para este sistema . 1981



Pascal acabou se tornando muito popular entre crianças em idade escolar e estudantes. Para aprender a programar, ele é muito bom. Para idiotas, confiabilidade significa pouco: basta pensar, um buraco na linguagem - um, segundo, terceiro. Mas pode ser facilmente lido e escrito. Na minha opinião, Pascal não entrou na programação industrial - onde a responsabilidade é exigida e você precisa escrever grandes sistemas de software com alta confiabilidade.



Inferno



Depois que os europeus fizeram o Algol 68, os americanos decidiram - por que somos piores? E eles decidiram criar uma nova linguagem para o Departamento de Defesa dos EUA. Ainda é o maior cliente de TI do mundo, já que nenhuma empresa pode igualar em termos de financiamento. Os americanos decidiram abordar isso cientificamente. Primeiro, formule os requisitos para o idioma. Eles eram chamados assim: homem de palha, homem de madeira, homem de aço. E o último é pedra. Li esses tomos grossos, claros e bem articulados.



Então, eles anunciaram uma competição com um prêmio multimilionário. Mas eles entenderam que, se nenhuma medida especial fosse tomada, a IBM definitivamente venceria.É como o ditado sobre futebol: "Todo mundo joga, mas os alemães ganham". Naqueles anos, a IBM tinha 20 vezes mais rotatividade financeira do que seu concorrente mais próximo. Eles também disseram "IBM e os 6 anões": uma empresa com um faturamento de 16 bilhões e mais seis - 1 bilhão. Incluir a IBM esmagaria a todos. Portanto, o Ministério da Defesa classificou os participantes, ninguém sabia quem era quem. Na primeira fase, foram selecionadas 17 equipes. Eles deram a eles bastante financiamento - milhões de dólares cada. Na segunda etapa, quatro equipes foram selecionadas e nomeadas por cores: vermelho, amarelo, verde, azul. Seu financiamento já estava na casa dos bilhões, e eles tiveram que fazer não só o idioma, mas também um tradutor de teste para que pudesse ser testado. Só quando terminaram o trabalho os envelopes foram abertos.



Houve um grande escândalo, porque de repente os europeus venceram - o time de Jean Ishbia de Paris. Com uma linguagem muito semelhante ao ALgol 68 e completamente diferente do PL / 1. A linguagem foi batizada de Ada - em homenagem à primeira programadora do mundo, Ada Lovelace, assistente de Charles Babbage e, a propósito, filha de Lord Byron, mas você provavelmente sabe disso muito bem.





Jean David Ishbia era funcionário da divisão de pesquisa da fabricante francesa de computadores Bull



Para criar todos esses "homens de pedra", ou seja, formular demandas, os americanos convocaram comitês. Centenas de especialistas foram necessários para avaliar todo o assunto. Portanto, grupos inteiros de programadores foram atraídos da Europa para os Estados Unidos. Um comunista foi pego em um dos comitês - o húngaro Ivan Bach, membro do Partido Trabalhista Socialista Húngaro, acabou praticamente no Pentágono. Em 1976, lecionei na Universidade de Budapeste, onde fui apresentado a ele. Ficamos amigos, andamos por Budapeste e ele me contou como está tudo combinado com os americanos. Finalmente, ele me enviou uma das descrições preliminares da linguagem do Inferno em fita. Trabalhamos nisso por mais três anos depois. Novamente, lembre-se do número 6.



E então eu trouxe para a URSS a primeira descrição do país da linguagem do Inferno. Naturalmente, decidimos fazer um tradutor. Já me tornei hábil neste assunto e pensei: como esse é o padrão do Departamento de Defesa dos Estados Unidos, nossos soldados certamente vão querer usá-lo. Então direi a eles: "Tenho um tradutor." Mas eu perdi muito - nossos guerreiros não estavam interessados ​​em Ada. Na minha opinião, em vão. Eles roubaram tudo - era preciso roubar também.



Quando decidi fazer tradutor, um funcionário do meu laboratório, quatro anos mais velho que eu, disse: “Andrei, você supervisionava muito. Por que você é só para você e para você? Deixe-me liderar este trabalho. " Eu respondo: “Trouxe, refleti, sei fazer. Mas tudo bem, lidere. " Ele me convenceu e eu já tinha algo a fazer. Três meses se passaram e descobriu-se que o grupo, criado perto de Ada, era comandado por um graduado quase este ano. Foi meu aluno Arkady Popov. Eu pergunto: “Como assim? Por que você disse ao idiota? " E ele: “Eu não passei - eles tiraram de mim. O jovem revelou-se muito ativo.



Mas a história não termina aí. O jovem me disse: “Andrey, você é o líder errado. Fazemos tudo por protótipos, queremos ver algo rapidamente. É necessário na ciência: criar um projeto e segui-lo. " Eu: “Você lidera - faça. Veremos ao mesmo tempo. "



Um grupo de quatro pessoas passou dois anos digitando três volumes grossos - um rascunho. Cuidamos dos jovens, ficamos felizes por eles, depois que o desenho ficou pronto até bebemos um pouco. Um momento solene - dois anos de trabalho foram concluídos. Mas levou três meses de implementação e descobriram que eles cometeram um erro no projeto e em alguma estrutura de dados que afeta fortemente todo o resto. Arkady veio até mim, pediu perdão: "Nós enganamos." Mesmo assim, este grupo fez o primeiro tradutor na URSS da língua do Inferno. É verdade, mais tarde do que ela estava indo, e de maneiras normais, como todo mundo.





Oleg Perminov, "Introduction to the ADA Programming Language", 1991



Java e Python



É aqui que terminam minhas línguas favoritas. O caminho posterior não era mais tão revolucionário.



Digamos Java. Baseado em uma máquina virtual, portabilidade de código. Até a Wikipedia diz que os códigos-p foram inventados em 1978. Mas não! Perguntei ao próprio Wirth quem inventou o código-p. Ele respondeu: "Eu inventei." Quando Pascal o fez, ele foi ao reitor da Universidade de Stanford: “Há uma língua na qual os alunos podem ser bem ensinados. Vamos? " Reitor: “Vamos! Tenho apenas seis tipos de computadores. Tenha Pascal com todos. " Wirth disse que quase morreu - é impossível fazer seis tradutores sozinho. E foi aí que ele criou um p-código, uma máquina virtual. Acontece que ele tinha um tradutor de Pascal para código-p escrito em código-p, e então um interpretador para código-p foi feito em cada máquina - este é um programa de montagem muito simples, várias centenas de linhas. E tudo funcionou. Ainda usamos essa ideia. Niklas afirmaque foi ele quem inventou o código p, e não em 78, mas em 71. Também ouvi falar do p-code no início dos anos 70 - algumas informações chegaram até nós.



Agora Wirth está fazendo algo semelhante ao que estamos fazendo, e estamos fazendo uma versão da linguagem C - mais segura, com controle mais completo. Acontece que também não somos os primeiros nisso. Já existe essa linguagem - Di, foi inventada por Andrei Alexandrescu. Eu o conheço pessoalmente - eu o vi em alguma conferência.



Direi apenas algumas palavras sobre Python. É uma linguagem que não pode ser usada para escrever programas grandes. Mas é muito bom para a prototipagem: maquie rapidamente na altura do joelho e veja o que acontece. Então, eles o usam, basicamente. Uma linguagem leve com um grande número de bibliotecas. Mas não posso imaginar que eles escreveriam o controle de um foguete ou uma central telefônica em Python - não se destina a um grande sistema de hardware. Na verdade, o próprio Guido van Rossum me contou sobre isso quando me contou como e por que o Python o criou.



Si



Vou me deter em mais detalhes sobre a história da linguagem C - uma das mais populares. Ken Thompson em 1970 inventou o sistema operacional, que agora é chamado de Unix. Foi um evento legal. Para isso, ele usou a linguagem sem tipo B. Um pouco mais tarde, Martin Richard inventou a linguagem BCPL - o desenvolvimento da linguagem Bi, também sem tipo. Então Dennis Ritchie decidiu reescrever tudo em uma linguagem C mais eficiente e confiável, que ele mesmo inventou. Ele confiou em B e BCPL, mas adicionou o controle de tipo.





Os criadores do UNIX Ken Thompson e Dennis Ritchie trabalhando no PDP-11. Foto de Peter Hammer, por volta de 1970



Acabou sendo engraçado. A primeira publicação de Richie saiu em 1978, quando Xi já havia se popularizado e até chegado à URSS. Eu conhecia C porque o código-fonte Unix era distribuído gratuitamente - esta foi a primeira experiência de um projeto de código aberto. As pessoas estudaram C da seguinte maneira: leia - um array é escrito assim, um corte como este, um loop como este. É isso, nada mais é necessário. Mas o primeiro artigo do autor da linguagem apareceu apenas alguns anos depois que todos no mundo já haviam se familiarizado de perto com ela.



C é uma linguagem muito boa, gosto dela, mas tem lacunas. Quero consertar isso, estou trabalhando nisso agora e irei garantir que versões mais confiáveis ​​sejam usadas.



Cobol





A capa do relatório sobre a linguagem Cobol preparada pelo Departamento de Defesa dos Estados Unidos para a conferência de abril de 1960.



Cobol, o demônio, também foi inventado pelos americanos. O fato é que o Fortran foi originalmente inventado para cálculos científicos, enquanto os americanos já naquela época usavam muitos computadores na economia - para controlar a produção. Cobol foi inventado especificamente para trabalhar com dados econômicos.



A linguagem é muito estranha, mas acabou sendo boa para cálculos econômicos. Você pode dizer, enquanto quiser, que está cheio de buracos e desleixado, mas metade dos programas financeiros do mundo está escrito nele, o Banco Central da Rússia e o Sberbank também trabalham no Kobol. Eu sei disso bem, porque meus alunos estão em toda parte. Eles não escrevem novos programas nele, mas existem muitos programas antigos.



Kobol me deu a oportunidade de sobreviver durante a época da perestroika. No final da década de 1980, tínhamos um poderoso grupo de tradutores - os primeiros tradutores do Algol 68, da Ada, das linguagens de inteligência artificial, controle de robôs. Tudo estava bem, mas estourou a perestroika e uma torrente de programas dos Estados Unidos chegou aqui. As emissoras americanas inundaram o mercado e, como ninguém pagava por nada - essa era a era da pirataria -, começaram a se esquecer da minha equipe. Quase desanimei, embora nessa altura já tivesse formado a empresa "Terkom" - Terekhov e a equipa.



Eu provavelmente teria desaparecido, mas os americanos tiveram um problema de negócios.Eles haviam acumulado toneladas de programas em Cobol, mas sua manutenção acabou sendo muito cara, poucas pessoas conhecem essa linguagem. E então eles decidiram fazer essa reengenharia - para transferir programas kobol para plataformas modernas. Tentou na Duke University, mas falhou. Mas em sua companhia havia um nativo da URSS. Na verdade, foi apenas na minha sexta ou sétima viagem aos Estados Unidos que conheci um americano nascido na América. Lenya Erlikh, ex-residente de Odessa, disse: "Se os americanos não puderem, talvez os russos tenham sucesso." E nós fizemos isso. Em geral, a linguagem é monstruosa, mas me ajudou a sobreviver em tempos difíceis.



All Articles