Andrey Terekhov: de Fortran à Python





Cet automne, Andrei Terekhov, chef du département de programmation système de l'Université d'État Matmek de Saint-Pétersbourg, professeur, docteur en physique et mathématiques, a raconté à nos collègues l'histoire des langages de programmation populaires et leur pénétration en URSS. Avec Andrei Nikolaevich, nous avons préparé, sur la base de sa conférence, du matériel sur la façon dont différentes langues ont traversé le rideau de fer, comment elles ont été traduites dans différentes architectures, comment certaines d'entre elles sont devenues à la mode. Tendances générales et impressions personnelles - pour tous ceux qui souhaitent se faire une idée générale de l'histoire du problème.



Pour ceux qui préfèrent regarder ou écouter, une vidéo de la conférence est publiée ici .



Programmation en codes



La première machine véritablement électronique s'appelait Electronic Numerical Integrator and Computer et fut fabriquée en 1946 par les Américains. Au cœur de ces ordinateurs se trouve un déclencheur qui, en 1918, a été inventé par un habitant de Petrograd Mikhail Aleksandrovich Bonch-Bruevich. Contrairement à Popov, il a même réussi à obtenir les droits sur l'invention. Le circuit lui-même était assez célèbre: mon père, un ingénieur en électronique militaire, utilisait ces déclencheurs avant la guerre.



Déjà en 1949, l'ingénieur soviétique Sergei Alekseevich Lebedev fabriquait une machine MESM à Kiev. Il n'avait que trois ans de retard sur les Américains, bien que Kiev ait été presque complètement détruite. Lebedev a même reçu un bâtiment dans la ville de Feofania - alors à 30 km de la ville - où avant la guerre il y avait un hôpital psychiatrique. Mais il n'y avait tout simplement pas d'autres bâtiments.





Un bâtiment à Feofaniya, aujourd'hui un quartier, et dans les années 1950 - une banlieue de Kiev, où travaillait Sergei Lebedev



Pour ces premiers ordinateurs, les gens écrivaient en codes binaires. Disons que le programme ressemble à ceci: 01 100 101 110. Supposons que 01 est un code d'addition. Ensuite, il dit ici: ajoutez le mot à l'adresse 100 avec le mot à l'adresse 101 et écrivez le résultat à l'adresse 110. En général, tout est clair, mais en tant que personne qui a trouvé la programmation dans les codes, je vous dirai que c'est terriblement gênant ... Oui, vous le comprenez probablement vous-même.



De 1964 à 1966, j'ai étudié à la 157e école de mathématiques près de Smolny, l'une des plus célèbres de Leningrad, subordonnée non pas à RONO, mais à l'Académie des sciences pédagogiques. Là, nous avions deux "Ural-1" et deux techniciennes qui ne savaient pas comment les programmer, mais qui pouvaient réparer ces machines. J'ai moi-même dû d'abord apprendre à les réparer, mais ensuite nous avons écrit de nombreux programmes utiles dans l'Oural, même pour les géologues, nous avons compté quelque chose.



Le principal problème de programmation dans les codes n'est pas "01 02 03" - il est facile à retenir. Mais si vous avez besoin d'insérer quelque chose entre deux cellules - selon la logique du travail, afin que certains tableaux soient synchronisés - toutes les adresses en dessous de cet insert seront analysées. Nous devrons tout réécrire et surtout, re-remplir.



Nous avons bourré des programmes sur un film 35 mm, que nous avons collé dans un anneau si une boucle était nécessaire. Entrez dans le programme - notez la somme de contrôle avec un crayon. Vous entrez à nouveau: si les sommes de contrôle correspondent, alors tout est correct. S'ils ne correspondent pas, vous le saisissez pour la troisième fois, et ainsi de suite jusqu'à ce qu'il tombe.



C'était tellement gênant que les gens ont rapidement proposé des remplacements symboliques. Au lieu de 01, il est devenu possible d'écrire uniquement le symbole "+", et au lieu de l'adresse - a, b ou c. C'était un langage d'assemblage, avec un traducteur très simple, le programme pouvait être traduit en codes machine. Il a fallu deux vues: dans le premier, vous faites un tableau de tous les identifiants et de leurs adresses, dans le second, vous remplacez les identifiants par des adresses, et c'est tout.



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





L'américain John Backus, qui a inventé le langage FORmula TRANslator en 1957, a fait une véritable révolution. IBM, où il travaillait, a en général proposé beaucoup de choses, y compris, par exemple, des cartes perforées. Fortran a permis d'écrire une formule, et les premiers traducteurs ont été créés à partir de celle-ci, beaucoup plus complexe qu'un traducteur du langage d'assemblage. Autrement dit, les gens étaient capables d'écrire des programmes normaux dans un langage algorithmique normal.





John Backus a admis que la principale motivation dans sa recherche était la paresse et le désir de simplifier le processus d'écriture des programmes. Photo - Backus en couverture de Think, magazine d'entreprise IBM



Ironiquement, Fortran est toujours populaire aujourd'hui, en particulier auprès des physiciens et des ingénieurs qui pensent qu'ils n'ont besoin de rien d'autre, même si tant d'années se sont écoulées. Des tonnes de programmes standard se sont accumulés - d'énormes bibliothèques.



Mais, comme d'habitude, il y a eu des erreurs importantes. Le plus cher s'est produit il y a plus d'un demi-siècle. Un ingénieur a écrit ce programme:

DO 3 I = 1.4



Ceci est un cycle. Les opérateurs jusqu'à la marque 3 doivent être exécutés avec I égal à 1,2, 3, 4. Mais l'Américain a fait une erreur et a mis un point au lieu d'une virgule entre 1 et 4. Dans Fortran, il n'y a pas de description obligatoire, donc aucune erreur n'a été trouvée. En conséquence, le vol spatial vers Vénus a été interrompu.



Même Lomonosov a découvert qu'il y avait une atmosphère très dense autour de Vénus, mais personne n'a vu la surface de la planète. Les Américains ont envoyé une fusée avec une tâche importante: elle était censée voler vers Vénus, faire quelques révolutions, puis plonger sous l'atmosphère et photographier la surface. La fusée a volé pendant trois mois et a volé. Quand j'ai plongé, le volet de la caméra ne s'est pas ouvert, car ce sont ces lignes qui étaient responsables de son ouverture. Tant de milliards de dollars ont littéralement volé dans les airs. Le scandale était incroyable, la personne qui avait commis l'erreur a été retrouvée. 6-7 milliards est une perte tangible même pour les riches américains. Mais ce programmeur n'a pas été blessé, car les documents avaient les signatures de tous les patrons possibles.Après de longs procès, il a été décidé que Fortran était responsable de tout: les règles de détermination de la langue se sont avérées très gênantes et peu fiables.



Au milieu des années 1970, nous avons créé le premier traducteur d'Algol 68, et nous y avons traduit tout le monde des anciennes langues. En particulier, la 93e boîte a été transférée - maintenant c'est l'Institut de la navigation radio et du temps précis.





Le bâtiment de l'Institut d'ingénierie radio de recherche de Leningrad - l'Institut russe de navigation radio et du temps - abrite aujourd'hui le bureau de la Rossiya Bank.



Auparavant, il était situé dans un immense bâtiment jaune en face de Smolny, il y a maintenant une banque et l'institut a été expulsé vers la périphérie de la ville.Ensuite, nous avons transféré des dizaines de programmes de Fortran à Algol 68 et avons toujours gagné quatre fois. Je pensais que c'était une sorte d'arnaque, parce que nous devions gagner deux fois - juste aux dépens du meilleur traducteur. Pourquoi gagne-t-on à quatre? Compris. Nous avons enseigné aux gens Algol 68 - j'ai donné des conférences, mon élève Leha Rokhlin pratiquait. Et à Fortran, ils ont écrit comme un poulet avec une patte.



Une fois, mon ancien élève, un major de l'armée soviétique dans la réserve, Andrei Sergeevich Agapov, m'appelle: «Andrei, sur l'un des programmes, la réponse était quatre fois différente de celle du fortran". Puisque plusieurs dizaines de programmes se sont bien déroulés, je réponds: "Je m'en fiche, ça arrive." Lui: «Non, c'est le contrôle du radar, qui détermine les coordonnées de prise de vue. Si, en raison d'une erreur dans le programme, la fusée vole dans la mauvaise direction, cela ne semblera à personne. " J'ai commencé à comprendre. Je pensais qu'ALGOL 68 mentait, après tout, un nouveau traducteur. J'ai tout vérifié - ce n'est pas un mensonge. J'ai commencé à lire les produits de l'assembleur - non, ce n'est pas un mensonge. Puis j'ai commencé à lire attentivement le programme Fortran. Rien trouvé. Déjà brutalisé, passé un mois. J'ai commencé à lire la production de l'assembleur de Fortran, mais c'est stupide. A trouvé! Regardez.



Il était écrit:

X = 9,3.

Mais X était double et 9,3 était court. En conséquence, deux équipes sont nées.

LE 0, = E '9,3'

STD 0, X.

Sur l'ordinateur ES - il y avait une telle machine, une copie de l'IBM 360 - un mot de 64 bits. Et maintenant, la commande LE chargée uniquement dans la moitié gauche du registre, et la poubelle gauche dans la moitié droite. Et la commande STD a vidé le registre entier. Comme le processus était mal conditionné, c'est-à-dire que de petits changements dans les données d'entrée ont fortement influencé le résultat, la réponse après 11 minutes de temps CPU a divergé quatre fois. Il s'avère que j'ai dû écrire six zéros supplémentaires ici:

X = 9.3000000

J'ai trouvé cette erreur et je m'en suis souvenu pour le reste de ma vie, même si c'était il y a 40 ans.




Il y a le concept de «système amical», et il y a - «hostile». Ceci est un exemple typique de système hostile.



Ou un exemple plus simple dont tous mes élèves souffrent.

X = 1/3

Toute personne normale pense que ce sera 0,33. Figez-vous! Il y en aura zéro. Deux entiers, ce qui signifie qu'il y aura une division entière. Et si vous voulez obtenir 0,33, mettez deux points:

X = 1/3.

Assez en un seul endroit, alors ce sera correct. Mais encore une fois - qui le remarquera?



Algol 60



Fortran a été reconnu coupable de tous les péchés capitaux et les gens ont commencé à inventer de nouveaux langages de programmation. Les Européens ont inventé Algol 60. Il y a aussi un méfait avec les chiffres: ils l'ont inventé en 1958 - un an après Fortran. Mais c'était tellement maladroit et mauvais que le langage n'a été révisé et adopté au congrès de l'IFIP (Fédération internationale du traitement de l'information) qu'en 1960 - d'où son nom. Mais le travail a continué et en 1964, un message révisé sur Algol 60 a été publié, nous y avons travaillé pendant 6 ans. Souvenez-vous de ce chiffre, il sera rencontré plusieurs fois. Il faut six ans pour perfectionner la version initiale du langage.



Le premier traducteur en URSS d'Algol 60 a été réalisé au Centre Korolev (il s'agit d'un institut spatial, maintenant NPO Energia) sous la direction de Svyatoslav Sergeevich Lavrov, qui depuis 1972 est devenu chef du département des logiciels informatiques, où je travaille maintenant.





Svyatoslav Lavrov, 1987. Photo des archives de l'académicien Andrei Ershov.Lavrov



était le chef du département de balistique externe - c'est lui qui a calculé la trajectoire du premier satellite, la trajectoire de Gagarine. Il a raconté à quoi cela ressemblait à l'époque avant l'ordinateur, lorsque plusieurs centaines de femmes passaient des journées entières à faire tourner des machines à ajouter, à compter quelque chose.Ayant entendu quelque part parler des premiers ordinateurs, Lavrov s'est intéressé à eux, s'est emporté et a finalement changé la balistique externe en programmation, faisant du premier traducteur. Puis à Novossibirsk, Andrey Petrovich Ershov a créé un traducteur d'optimisation "Alpha". Ils disent que même les Américains l'ont reconnu comme le meilleur traducteur optimisant. Ensuite, à Moscou, ils ont fabriqué TA2 à partir de l'Algol 60 complet, mais à ce moment-là, le plein Algol 60 avec ses caractéristiques stupides n'était plus nécessaire. Autant que je sache, TA2 n'a jamais été utilisé, et j'ai travaillé sur le traducteur Lavrovsky TA1M pendant de nombreuses années. Nous avions deux machines M 20 au mattech, elles étaient équipées d'un TA1M, qui fut plus tard appelé "Signal".



PL / 1



Les Américains sont devenus aigris quand Algol 60 est apparu en Europe, et a fait PL / I (Programming Language I). Terrible langue! Des centaines de conversions automatiques de types vers d'autres types. Un langage shell, comme on disait. Plusieurs centaines d'opérateurs: pour tout opérateur individuel - qui se souviendra de tous? Néanmoins, cette langue est également devenue très populaire en URSS, depuis l'apparition des ordinateurs ES. J'ai écrit dessus, mais des cauchemars se sont également produits. Vous décrirez dans une procédure la variable globale A bin fix (entier), et dans une autre variable A bin float (virgule flottante). Ensuite, vous rechercherez une erreur pendant longtemps - le traducteur ne dira rien.



En bref, PL / 1 et en Europe étaient fortement détestés, pas seulement en URSS. Je suis allé aux États-Unis plusieurs fois et j'ai entendu çail n'y a pas de programmation capitaliste et communiste, mais il existe des styles différents .



Le style américain est une méthode de force brute. Lorsqu'une personne n'a pas la puissance de calcul d'une machine, elle s'adresse à son patron et dit: "Achetez-moi une voiture deux fois plus puissante." Habituellement, ils l'achètent.



En Europe - et en URSS, bien sûr - cela n'a pas été accepté. J'ai dû réfléchir avec ma tête, trouver un algorithme plus efficace.



Une fois, j'ai rencontré le concepteur en chef des traducteurs PL / 1. Son nom de famille Marx est facile à retenir pour un Soviétique. Ce n'est pas un Américain, un Anglais, et ces traducteurs ont été faits non loin de Londres - il y avait un centre IBM en Europe. Nous l'avons rencontré à Novossibirsk, où il y a eu une grande conférence au cours de laquelle Marx a fait un rapport. On lui a demandé: "Combien d'erreurs ont été trouvées pendant le processus de débogage?" Lui: "Je ne peux pas répondre à cette question - le secret de l'entreprise." - "Combien de personnes aviez-vous?" La réponse est la même. Puis Kes Koster, l'un des auteurs d'Algol 68 (j'étais attaché à lui en tant que traducteur), bondit et se met à crier dans un anglais assez spécifique, que tous les enfants connaissent désormais: «Vous déshonorez notre monde libre face à ces collègues opprimés». Et pour moi: "Traduisez!" Moi: "Ce n'est pas accepté ici, Kes." - «Ils vous ont assigné à moi, alors traduisez!" Et bien? J'ai commencé à traduire comme je l'avais compris, mais j'ai bien compris. Mais personne ne m'a condamné. Puis il y a eu une pause avec des verres de café et de cognac - puis c'était ainsi. Ce pauvre Marx est debout, et autour d'un mètre il y a deux vides. Je suis allé vers lui avec deux contenants: "Buvons!" Il a claqué le verre et a dit: «Laissez-moi tout vous dire.Dans une conversation privée, je peux, mais de la tribune je ne peux pas . " Et donc il a dit qu'il avait 51 programmeurs, qu'ils ont trouvé tellement d'erreurs, que c'est une structure tellement sauvage - un traducteur avec PL / 1.



Ensuite, il s'est avéré que nous avons beaucoup en commun. Tous deux sont nés en 1949, tous deux diplômés de l'université en 1971 - il est à Londres, je suis Leningrad. Je dis: «Comment est-ce? Nous vous avons battu quatre fois en temps de diffusion, trois fois en vitesse de comptage et un nombre infini de fois en longueur de code. Pourquoi es-tu si stupide? " Lui: "Depuis combien d'années travaillez-vous sur le traducteur d'Algol 68?" - "Sept ans". - «Nous vous aurions expulsé de votre travail il y a longtemps. Année - conduisez les marchandises, sinon vous serez dans la rue. " C'est à ce moment-là que j'ai appris ce qu'est le Time to Market.Il est important de travailler rapidement, sinon quelqu'un occupera ce créneau sur le marché. Alors vous ferez mieux, mais personne ne le saura. En URSS, nous ne le savions pas.



ALGOL 68



Les Européens ont répondu à PL / I avec la langue ALGOL 68. Il y avait un tel groupe de travail 2.1 IFIP sur les langues de type Algol. Lorsqu'en 1964 un message révisé sur Algol 60 a été publié, ils ont décidé que cette direction était terminée, quelque chose de complètement différent devait être développé. Ils ont lancé un cri: qu'allons-nous faire ensuite? La réponse était le Livre blanc - je l'ai sur mon étagère, une rareté, pas sur Internet - avec des propositions au même groupe 2.1.



Il contient un long article de Ralph London sur les preuves de l'exactitude des programmes, l'article de Barbara Liskov "The CLU Language", où elle a d'abord formulé le concept de types de données abstraits. Il y avait aussi un article du savant néerlandais van Weingaarden sur les grammaires à deux niveaux. La grammaire à deux niveaux est comme une machine de Turing en termes de puissance, avec son aide, vous pouvez décrire non seulement la syntaxe exacte - maintenant vous ne surprendrez personne - mais aussi la sémantique exacte de l'exécution du langage. Et après de nombreuses réunions, les membres du groupe de travail 2.1 ont décidé de prendre les grammaires à deux niveaux de van Weingaarden comme base pour la future langue . À peine dit que c'était fait.



Le groupe comprenait environ 200 personnes, dont des scientifiques soviétiques: Ershov, Lavrov. Mon conseiller scientifique Grigory Samuilovich Tseitin a écrit beaucoup de lettres aux participants - ils l'ont même remercié. En décembre 1968, l'IFIP a adopté un nouveau langage appelé Algol 68.



C'était un langage étrange, un cauchemar. D'une part, c'était très formel et précis, d'autre part, il était impossible d'y écrire.



Et donc Grigory Samuilovich Tseitin vient dans notre laboratoire de programmation système, dans lequel j'ai ensuite travaillé en tant qu'étudiant de troisième année en mathématiques, et dit: «Les gars, ils ont trouvé un tel langage - personne ne peut l'implémenter. Mettons-le en œuvre. " Nous: «Allons-y» - et nous nous sommes mis à cette affaire. Mon diplôme de 1971 s'intitulait "Recherche d'une chaîne de fantômes chez un traducteur d'Algol 68 pour un ordinateur ES". 11 pages de texte manuscrit et un programme de travail. Cinq ans plus tard, j'ai trouvé une erreur dans ce diplôme, mais quand je me suis défendu, personne ne l'a remarqué.



Le langage était très difficile et nous n'étions pas les seuls à le penser. Le groupe 2.1 s'est poursuivi et un rapport révisé sur ALgol 68 a été publié en 74. Encore six années de travail acharné par le grand comité.Ce langage s'est déjà avéré assez compréhensible, il a commencé à être mis en œuvre dans de nombreux groupes tant en Europe qu'en Amérique. En URSS, il y avait un groupe de Mikhail Ruvimovich Levinson à l'Institut économique central, Ekaterina Logvinovna Yushchenko à Kiev. Sasha Maslov et son équipe ont fait Algol 68 pour Elbrus. Andrey Petrovich Ershov a créé un traducteur d'optimisation d'Algol 68 à Novossibirsk. A Leningrad, lorsque Grigory Tseitin a quitté ces œuvres, la tâche m'est littéralement revenue.





«Algol: Success and Failure», résumé du rapport du scientifique suisse Peter Naur, présenté au colloque «10 ans d'Algol» à Zurich le 31 mai 1968. Provenant des archives de l'académicien Andrei Ershov



Je n'ai pas eu à m'asseoir pour devenir le chef du laboratoire. Tout s'est avéré tout seul lorsque nous avons commencé le débogage d'IBM / 360 à Moscou NITSEVT. Nous avions un doctorat en sciences, environ cinq candidats et une quinzaine d'étudiants, pendant que nous écrivions des articles et des livres, tout allait bien. Mais ensuite, les personnes de l'ancienne génération ont lentement commencé à tomber. Le temps au NITSEVT ne nous était alloué que la nuit. Nous sommes allés à Moscou pendant trois jours - nous travaillons la nuit, nous dormons la journée, mais les jeunes s'en moquaient. De plus, j'adorais travailler la nuit. Il y avait des appareils américains et soviétiques. Jetez le câble, et vous travaillez normalement sur du bon matériel américain, et revenez le matin. Pendant la journée, ils n'étaient pas autorisés à le faire.Mais mes collègues plus âgés ne pouvaient pas le supporter: lorsqu'ils ont remis le traducteur, j'étais déjà à la fois le concepteur en chef et le chef du laboratoire.



Nous avons fait le premier traducteur d'Algol 68 en URSS. Avec un peu de retard, les groupes de Maslov et Levinson. Iouchtchenko a fait un développement intéressant combiné avec une base de données. Une vaste recherche scientifique appelée "Beta Project" a été menée à Novossibirsk. Ils ont essayé de généraliser fortement le problème afin que ALgol 68 et PL / I et Pascal puissent être réalisés avec un seul traducteur. Tant dans les codes BESM-6 que dans les codes ES EVM. Le projet n'a jamais été complètement achevé, mais ils ont fait quelques traducteurs uniques.



Lorsque nous avons commencé à mettre en œuvre Algol 68, il s'est avéré que personne n'avait vraiment besoin de sa fiabilité, à l'exception des militaires.Mais ensuite, ils sont tombés sous le charme et de nombreuses organisations militaires y sont passées.





Table des matières du rapport révisé sur ALGOL 68 publié par le groupe de travail 2.1. Adrian van Weingaarden est le premier sur la liste des éditeurs



Pascal



L'un des participants au groupe de travail 2.1 était Niklaus Wirth. Lui et plusieurs autres scientifiques bien connus - Hoare, Dijkstra, malheureusement, notre Lavrov - n'étaient pas d'accord avec l'opinion de la majorité et en décembre 1968 ont rédigé le soi-disant rapport minoritaire. Ils y expriment l'idée que «la montagne a donné naissance à une souris: cette langue est si vaste et si complexe que personne ne la comprendra jamais de sa vie». En fait, c'est vrai, mais après six ans de travail et la publication du Message Révisé, Algol 68 est devenu un langage assez agréable et compréhensible . Dans les cercles universitaires, il a acquis une assez grande popularité, mais dans la programmation industrielle, en particulier en Amérique, ce n'est pas le cas. Et donc le camarade Wirth a fait un tel tour avec ses oreilles - il a créé un langage qu'il a appelé Pascal. Lui-même est de Zurich, mais à ce moment-là, il était stagiaire à Stanford.



Pascal - Algol "taillé" 68. Autrement dit, il a pris des ciseaux, il a coupé ceci, ceci, ceci ... La première description était - comme un cahier pour 2 kopecks: 24 feuilles, fines, fines. Comme à ce moment-là nous avions déjà terminé le travail sur Algol 68, un de mes étudiants a entrepris d'implémenter Pascal avec nos propres méthodes. Mais chaque matin a commencé par ses questions à moi: "pourquoi pouvez-vous écrire de nombreux opérateurs entre répéter et jusqu'à sans parenthèses supplémentaires, et après faire - un seul?" que faire si je veux passer la procédure elle-même comme paramètre, par exemple pour calculer une intégrale multiple? ". Il y avait de nombreuses incohérences. Algol 68 avait des limites pour que la mémoire infinie ne fonctionne pas, de sorte que l'auto-réduction ne fonctionne pas. Chez Pascal, non.



Au cours de ces années en URSS, il y avait une anecdote populaire: "Je travaille à la fabrique de lits, chaque jour je porte les détails à la maison, je veux faire un lit, mais peu importe comment je le compose, je reçois une mitrailleuse." Donc, quand nous avons commencé à réparer Pascal, nous avons obtenu Algol 68 . Tout le monde a ri, dit que c'était étrange, mais je ne trouve rien de surprenant à cela. C'est juste que trois cents personnes travaillent sur Algol 68 depuis de nombreuses années, y compris nous.



C'est drôle que ma femme ait écrit à Kes Coster, l'auteur de la section d'échange, sur les erreurs qu'elle a trouvées et a reçu des réponses: "Cher M. Terekhova." Au début, nous avons été offensés, puis on nous a dit: "Comment va-t-il deviner que Terekhova est elle?" Ensuite, nous avons commencé à signer Galiy Terekhov, et il a tout compris.



Wirth est un gars intelligent, il a travaillé sur le raffinement de Pascal, et en 1974 avec un homme nommé Jensena rendu la norme plus épaisse, pages 100 à 120. Lorsque Wirth a célébré son 80e anniversaire, il y a eu un petit symposium à Zurich, où j'ai été invité parmi 20 à 30 invités. Quand je suis arrivé, il s'est avéré que Jensen était une femme, Kathleen. Pour être honnête, ce fut une surprise pour moi. Elle a beaucoup fait pour transformer Pascal d'un jouet en un langage sérieux.





Discours de Kathleen Jensen au symposium dédié au 80e anniversaire de Niklaus Wirth



Puis Borland s'est mis au travail et a fait Borland Pascal - déjà deux gros volumes. Ainsi est apparu une langue qui pouvait déjà être utilisée . Avant cela - choyer à l'école.



Lorsque le rapport révisé sur Pascal Wirth et Jensen est sorti - également quelques années après la publication du premier standard - Wirth a écrit dans l'avant-propos: "Pascal a un niveau supérieur à Algol 60". L'éditeur de traduction était le célèbre programmeur soviétique Dmitri Podshivalov, un oncle plutôt méchant. Il aimait s'exprimer brusquement. Après la remarque de Wirth, une note de bas de page est apparue dans la traduction: «Il est difficile d'être d'accord avec cette affirmation. Essayez d'écrire une procédure de multiplication matricielle en Pascal ». Le fait est qu'en Pascal, comme en C, au fait, vous pouvez décrire un tableau de zéro à cent, à mille, mais vous ne pouvez pas le décrire jusqu'à N - il n'y a pas de tableaux dynamiques. Comment décrivez-vous la procédure de multiplication matricielle? Vous ne savez pas quelles matrices vont être multipliées. Par conséquent, Podshivalov avait tout à fait raison. Aussi pour moi, un langage de niveau supérieur dans lequel vous ne pouvez pas écrire une procédure de multiplication matricielle!





Nikolaus Wirth et l'ordinateur Lilith mis au point à l'École technique supérieure suisse de Zurich. Wirth a créé un nouveau langage, Modula-2, spécifiquement pour implémenter le logiciel de ce système . 1981



Pascal est finalement devenu très populaire auprès des écoliers et des étudiants. Pour l'apprentissage de base au programme, il est vraiment bon. Pour les nuls, la fiabilité signifie peu: il suffit de penser, un trou dans la langue - un, deuxième, troisième. Mais il peut être facilement lu et écrit. À mon avis, Pascal n'est pas allé dans la programmation industrielle - où la responsabilité est requise et il est nécessaire d'écrire de grands systèmes logiciels avec une grande fiabilité.



Enfer



Après que les Européens aient fait Algol 68, les Américains ont décidé - pourquoi sommes-nous pires? Et ils ont décidé de créer un nouveau langage pour le département américain de la Défense. Il reste le plus gros client informatique au monde, car aucune entreprise ne peut l'égaler en termes de financement. Les Américains ont décidé d'aborder cela de manière scientifique. Tout d'abord, formulez les exigences relatives à la langue. Ils s'appelaient ainsi: homme de paille, homme de bois, homme d'acier. Et le dernier est la pierre. J'ai lu ces gros volumes, clairement et bien articulés.



Puis ils ont annoncé un concours avec un prix de plusieurs millions de dollars. Mais ils ont compris que si aucune mesure particulière n'était prise, IBM gagnerait définitivement.C'est comme le dicton sur le football: "Tout le monde joue, mais les Allemands gagnent". Au cours de ces années, IBM avait 20 fois plus de chiffre d'affaires financier que son concurrent le plus proche. Ils ont également dit «IBM et les 6 Nains»: une entreprise avec un chiffre d'affaires de 16 milliards et six autres - 1 milliard de tonnes chacune. IBM écraserait tout le monde. Par conséquent, le ministère de la Défense a classé les participants, personne ne savait qui était qui. Lors de la première étape, 17 équipes ont été sélectionnées. Ils leur ont donné beaucoup de financement - des millions de dollars chacun. Lors de la deuxième étape, quatre équipes ont été sélectionnées et nommées par des couleurs: rouge, jaune, vert, bleu. Leur financement s'élevait déjà à des milliards, et ils ont dû faire non seulement la langue, mais aussi un traducteur test pour qu'il puisse être testé. Ce n'est qu'une fois leur travail terminé que les enveloppes ont été ouvertes.



Il y a eu un scandale sauvage, parce que tout à coup les Européens ont gagné - l'équipe de Jean Ishbia de Paris. Avec un langage très similaire à ALgol 68 et totalement différent de PL / 1. Le langage a été nommé Ada - en l'honneur du premier programmeur au monde Ada Lovelace, assistante de Charles Babbage et, au fait, fille de Lord Byron, mais vous le savez probablement bien.





Jean David Ishbia était un employé de la division recherche du constructeur informatique français Bull



Pour créer tous ces «hommes de pierre», c'est-à-dire formuler des exigences, les Américains ont convoqué des comités. Des centaines de spécialistes ont été nécessaires pour évaluer l'ensemble de la question. Par conséquent, des groupes entiers de programmeurs ont été attirés d'Europe vers les États-Unis. Un communiste a été pris dans l'un des comités - le Hongrois Ivan Bach, membre du Parti travailliste socialiste hongrois, s'est pratiquement retrouvé au Pentagone. En 1976, j'ai donné des cours à l'Université de Budapest, où je lui ai été présenté. Nous sommes devenus amis, nous nous sommes promenés dans Budapest et il m'a dit comment tout était arrangé avec les Américains. Enfin, il m'a envoyé une des descriptions préliminaires de la langue de l'Enfer sur bande. Nous avons travaillé dessus pendant encore trois ans plus tard. Encore une fois, rappelez-vous le chiffre 6.



J'ai donc apporté à l'URSS la première description du pays de la langue de l'Enfer. Naturellement, nous avons décidé de faire un traducteur. Je suis déjà devenu compétent dans ce domaine et je me suis dit: puisque c'est la norme du département américain de la Défense, nos soldats voudront certainement l'utiliser. Ensuite, je leur dirai: «J'ai un traducteur». Mais j'ai manqué beaucoup - nos guerriers n'étaient pas intéressés par Ada. À mon avis, en vain. Ils ont tout volé - il fallait aussi le voler.



Quand j'ai décidé de faire un traducteur, un employé de mon laboratoire, quatre ans plus âgé que moi, m'a dit: «Andrei, tu as beaucoup supervisé. Pourquoi êtes-vous tout pour vous et pour vous-même? Laissez-moi diriger ce travail. " Je réponds: «Je l'ai apporté, réfléchi, je sais comment le faire. Mais d'accord, avancez. " Il m'a convaincu, et j'avais déjà quelque chose à faire. Trois mois se sont écoulés et il s'est avéré que le groupe, créé près d'Ada, était dirigé par un diplômé de presque cette année. C'était mon élève Arkady Popov. Je demande: «Comment ça? Pourquoi as-tu dit au crétin? " Et lui: "Je ne l'ai pas réussi - ils me l'ont enlevé". Le jeune homme s'est avéré très actif.



Mais l'histoire ne s'arrête pas là. Le jeune homme me dit: «Andrey, tu n'es pas le bon leader. On fait tout avec des prototypes, on a vite envie de voir quelque chose. C'est nécessaire en science: créez un projet et suivez-le. " Moi: «Vous dirigez - faites-le. Nous verrons en même temps. "



Un groupe de quatre personnes a passé deux ans à taper trois gros volumes - un brouillon. Nous nous sommes occupés des jeunes, nous nous sommes réjouis pour eux, une fois la conception terminée, nous avons même bu un peu d'alcool. Un moment solennel - deux ans de travail ont été accomplis. Mais cela a pris trois mois de mise en œuvre, et il s'est avéré qu'ils ont fait une erreur dans le projet et dans une structure de données qui affecte fortement tout le reste. Arkady est venu vers moi, a demandé pardon: "Nous avons trompé." Mais ce groupe a néanmoins fait le premier traducteur en URSS à partir de la langue de l'Enfer. C'est vrai, plus tard qu'elle ne le ferait, et de manière normale, comme tout le monde.





Oleg Perminov, "Introduction au langage de programmation ADA", 1991



Java et Python



C'est là que finissent mes langues préférées. L'autre chemin n'était plus aussi révolutionnaire.



Disons Java. Basé sur une machine virtuelle, portabilité du code. Même Wikipedia dit que les p-codes ont été inventés en 1978. Mais non! J'ai demandé personnellement à Wirth qui avait inventé le p-code. Il a répondu: "Je l'ai inventé." Lorsque Pascal l'a fait, il est allé voir le recteur de l'Université de Stanford: «Il existe une langue dans laquelle les étudiants peuvent bien apprendre. Allons? " Recteur: «Allez! Je n'ai que six types d'ordinateurs. Ayez Pascal sur tout le monde. " Wirth a dit qu'il a failli mourir - il est impossible de faire six traducteurs seul. Et c'est là qu'il a créé un p-code, une machine virtuelle. Il s'est avéré qu'il avait un traducteur de Pascal vers p-code écrit en p-code, puis un interpréteur de p-code a été créé sur chaque machine - il s'agit d'un programme d'assemblage très simple, plusieurs centaines de lignes. Et tout a fonctionné. Nous utilisons toujours cette idée. Revendications de Niklasque c'est lui qui a inventé le code p, et non pas en 78, mais en 71. J'ai aussi entendu parler du p-code au début des années 70 - certaines informations nous sont parvenues.



Maintenant, Wirth fait quelque chose de similaire à ce que nous faisons, et nous créons une version du langage C - plus sécurisée, avec un contrôle plus complet. Il s'avère que nous ne sommes pas les premiers non plus. Il existe déjà un tel langage - Di, il a été inventé par Andrei Alexandrescu. Je le connais personnellement - je l'ai vu à une conférence.



Je dirai juste quelques mots sur Python. C'est un langage qui ne peut pas être utilisé pour écrire de gros programmes. Mais c'est très bien pour le prototypage: rattrapez-vous rapidement le genou et voyez ce qui se passe. Donc ils l'utilisent, fondamentalement. Un langage léger avec un grand nombre de bibliothèques. Mais je ne peux pas imaginer qu'ils écriraient le contrôle d'une fusée ou d'un central téléphonique en Python - ce n'est pas destiné à un grand système matériel. En fait, Guido van Rossum lui-même m'en a parlé quand il m'a dit comment et pourquoi Python l'avait inventé.



Si



Je m'attarderai plus en détail sur l'histoire du langage C - l'un des plus populaires. Ken Thompson a mis au point en 1970 un système d'exploitation qui s'appelle maintenant Unix. C'était un événement cool. Pour cela, il a utilisé le langage sans type B. Un peu plus tard, Martin Richard a proposé le langage BCPL - le développement du langage Bi, également sans type. Puis Dennis Ritchie a décidé de tout réécrire dans un langage C plus efficace et plus fiable, qu'il a lui-même inventé. Il s'est appuyé sur B et BCPL, mais a ajouté un contrôle de type.





Les créateurs UNIX Ken Thompson et Dennis Ritchie travaillent sur le PDP-11. Photo de Peter Hammer, vers 1970



Cela s'est avéré drôle. La première publication de Richie est sortie en 1978, lorsque Xi était déjà devenu populaire et avait même atteint l'URSS. Je connaissais C parce que le code source Unix était librement distribué - c'était la première expérience d'un projet open source. Les gens ont étudié C de la manière suivante: lisez-le - un tableau est écrit comme ça, une coupe est comme ça, une boucle est comme ça. Voilà, rien d'autre n'est nécessaire. Mais le premier article de l'auteur de la langue n'est paru que quelques années après que tout le monde dans le monde en ait déjà pris connaissance de près.



C est une très bonne langue, je l'aime bien, mais elle a des trous. Je veux résoudre ce problème, je travaille dessus maintenant et je vais m'assurer que des versions plus fiables sont utilisées.



Cobol





La couverture du rapport sur le langage Cobol préparé par le Département américain de la Défense pour la conférence d'avril 1960.



Cobol, ce démon, a également été inventé par les Américains. Le fait est que Fortran a été inventé à l'origine pour des calculs scientifiques, alors que les Américains déjà à l'époque utilisaient de nombreux ordinateurs dans l'économie - pour contrôler la production. Cobol a été inventé spécifiquement pour travailler avec des données économiques.



Le langage est très étrange, mais il s'est avéré bon pour les calculs économiques. Vous pouvez dire tant que vous le souhaitez qu'il est plein de trous et de négligence, mais la moitié des programmes financiers mondiaux y sont écrits, la Banque centrale de Russie et la Sberbank travaillent également sur Kobol. Je le sais bien, car mes étudiants sont partout. Ils n'écrivent pas de nouveaux programmes dessus, mais il y en a des tonnes d'anciens.



Kobol m'a donné l'opportunité de survivre pendant les périodes de perestroïka. À la fin des années 1980, nous avions un groupe puissant de traducteurs - les premiers traducteurs d'Algol 68, d'Ada, des langages de l'intelligence artificielle, du contrôle des robots. Tout allait bien, mais la perestroïka a éclaté et un flux de programmes en provenance des États-Unis a afflué ici. Les radiodiffuseurs américains ont inondé le marché et, comme personne ne payait pour quoi que ce soit - c'était l'époque du pur piratage - ils ont commencé à oublier mon équipe. J'étais presque désespéré, même si à ce moment-là j'avais formé l'entreprise "Terkom" - Terekhov et l'équipe.



J'aurais probablement disparu, mais les Américains ont ensuite eu un problème commercial.Ils avaient accumulé des tonnes de programmes en Cobol, mais leur maintenance s'est avérée très coûteuse, très peu de gens connaissent cette langue. Et puis ils ont décidé de faire une telle réingénierie - de transférer les programmes kobol sur des plates-formes modernes. Essayé à l'Université Duke, mais échoué. Mais en leur compagnie, il y avait un natif de l'URSS. En fait, ce n'est que lors du sixième ou septième voyage aux États-Unis que j'ai rencontré un Américain né en Amérique. Lenya Erlikh, une ancienne résidente d'Odessa, a déclaré: "Si les Américains ne peuvent pas, peut-être que les Russes réussiront." Et nous l'avons fait. En général, la langue est monstrueuse, mais elle m'a aidé à survivre dans les moments difficiles.



All Articles