Andrey Terekhov:从Fortran到Python





今年秋天,圣彼得堡国立大学Matmekh系统编程系主任,教授,物理学和数学博士Andrei Terekhov向我们的同事介绍了流行编程语言的历史及其在苏联的渗透。我们与安德烈·尼古拉耶维奇(Andrei Nikolaevich)一起根据他的演讲准备了有关不同语言如何穿越铁幕,如何将它们翻译成不同的体系结构,其中一些如何流行的材料。总体趋势和个人印象-适用于每个希望对问题的历史有总体了解的人。



对于那些喜欢看或听的人,此处发布了讲座视频



用代码编程



第一台真正的电子机器被称为电子数字积分器和计算机,由美国人于1946年制造。这种计算机的核心是触发器,该触发器由彼得格勒的居民Mikhail Aleksandrovich Bonch-Bruevich于1918年发明。与波波夫不同,他甚至设法确保了发明的权利。电路本身非常有名:我的父亲是一名军事电子工程师,在战前曾使用过这些触发器。



早在1949年,苏联工程师Sergei Alekseevich Lebedev就在基辅制造了MESM机器。尽管基辅几乎被彻底摧毁,但他仅比美国人落后三年。甚至在Leofdev镇的Feofania镇上得到了一座建筑物-那时它仍然离城市30公里-战前那里有一家精神病医院。但是那时根本没有其他建筑物。





1950年代,现在是费奥菲尼亚(Feofania)的一栋建筑,当时是基辅市郊,谢尔盖·列别杰夫(Sergei Lebedev)曾



在此工作。假设程序看起来像这样:01 100 101110。假设01是附加代码。然后在这里说:将地址100的单词与地址101的单词相加,然后将结果写在地址110上。总的来说,一切都很好,但是作为一个发现代码编程的人,我会告诉你这非常不方便...是的,您自己可能了解这一点。



从1964年到1966年,我在斯莫尔尼附近的第157所数学学校学习,该学校是列宁格勒最著名的学校之一,不是隶属于RONO,而是隶属于教育学院。在那里,我们有两名“ Ural-1”和两名女技术员,他们不知道如何编程,但可以修复这些机器。我本人也必须首先学习如何修复它们,但随后我们在乌拉尔山脉编写了许多有用的程序,即使对于地质学家来说,我们也算得了一些东西。



代码中的主要编程问题不是“ 01 02 03”-很容易记住。但是,如果您需要在两个单元格之间插入某些内容(根据工作逻辑,以便使某些数组同步),则此插入内容下面的所有地址都会被抓取。我们必须重写所有内容,最重要的是,重新填充。



我们将程序填充在35毫米胶片上,如果需要循环,可以将其粘贴到环中。输入程序-用铅笔写下校验和。您再次输入:如果校验和匹配,则一切正确。如果不匹配,则第三次输入,以此类推,直到下降。



如此不便,人们很快想出了象征性的替代品。代替01,可以只写符号“ +”,而不写地址-a,b或c。它是汇编语言,使用非常简单的翻译器,即可将程序翻译为机器代码。它有两个视图:在第一个视图中,您将创建所有标识符及其地址的表,在第二个视图中,将标识符替换为地址,仅此而已。



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





美国人约翰·巴科斯(John Backus)于1957年发明了FORmula TRANslator语言,进行了一场真正的革命。在他工作过的IBM,总的来说,他提出了很多东西,包括打孔卡。Fortran使编写公式成为可能,并且从中创建了第一个翻译器,这比汇编语言中的翻译器复杂得多。也就是说,人们能够用普通的算法语言编写普通程序。





John Backus承认搜索的主要动机是懒惰和简化程序编写过程的渴望。图-Backus在IBM公司杂志Think的封面上



具有讽刺意味的是,Fortran在今天仍然很受欢迎,特别是在物理学家和工程师看来,尽管已经过去了很多年,他们仍然不需要其他东西。大量的标准程序已积累-庞大的库。



但是,像往常一样,存在一些重大错误。最昂贵的一次发生在半个多世纪以前。一位工程师编写了该程序:

DO 3 I = 1.4



这是一个循环。等于3的运算符必须以等于1,2,3,4的I来执行。但是美国人犯了一个错误,并用句号代替了介于1和4之间的逗号。在Fortran中,没有强制性的描述,因此没有发现错误。结果,飞往金星的太空飞行受到干扰。



甚至连罗蒙诺索夫都发现金星周围有非常浓密的大气层,但没人能看到行星的表面。美国人派出了火箭,执行了一项重要任务:它应该飞往金星,进行一些旋转,然后潜入大气层并拍摄地表。火箭飞行了三个月,然后飞行。当我潜水时,相机翻盖没有打开,因为正是这些线导致了相机的打开。数以十亿计的美元从字面上飞了出去。丑闻令人难以置信,发现犯错的人。甚至对于富裕的美国人来说,6-70亿美元也是一笔明显的损失。但是这位程序员并没有受到伤害,因为这些文档具有所有可能的老板的签名。经过长时间的尝试,决定将Fortran归咎于一切:确定语言的规则非常不方便且不可靠。



在1970年代中期,我们从Algol 68制作了第一台翻译器,并且我们将所有古老的语言都翻译成了它。特别是第93个盒子已移交-现在是无线电导航和精确时间研究所。





列宁格勒研究无线电工程学院的大楼-俄罗斯无线电导航与时间学院-现在拥有Rossiya银行的办公室。



以前,它坐落在Smolny对面的一幢巨大的黄色建筑物中,现在有一个银行,并且该研究所被逐出了城市的郊区。然后,我们将数十个程序从Fortran转移到Algol 68,并且始终赢得四次。我认为这是一种骗局,因为我们不得不赢了两次-只是牺牲了最好的翻译。为什么我们四点获胜?明白了我们教人Algol 68-我讲课,我的学生Leha Rokhlin正在练习。在Fortran中,他们写得像只鸡用爪子。



有一次,我以前的学生,一个主要的储备苏联军队的,安德烈·谢尔盖耶维奇Agapov,打电话给我:“安德烈,在节目的一个答案是从FORTRAN不同四倍”。由于几十个程序运行良好,我回答:“我不在乎,它确实发生了。”他:“不,这是雷达的控制权,它确定了拍摄的坐标。如果由于程序错误而使火箭向错误的方向飞行,对任何人来说这似乎还不够。”我开始理解。我以为ALGOL 68毕竟是在说谎一个新的翻译器。我检查了所有内容-这不是在撒谎。我开始阅读汇编器产品-不,这不是在撒谎。然后,我开始仔细阅读Fortran程序。一无所获。已经残酷无情,花了一个月。我开始阅读Fortran的汇编程序产品,但这很愚蠢。找到了!看。



写道:

X = 9.3。

但是X是两倍,而9.3是短。结果,诞生了两个团队。

LE 0,=

E'9.3'STD 0,X.

在ES计算机上-有一台这样的机器,是IBM 360的副本-一个64位字。现在,LE命令仅加载到寄存器的左半部分,而左垃圾则加载到右半部分。 STD命令转储了整个寄存器。由于该过程的条件差,也就是说,输入数据的细微变化会严重影响结果,因此11分钟的CPU时间后答案是四倍。原来,我不得不在这里再写六个零:

X = 9.3000000

我发现了这个错误,并在我的余生中都记起了,尽管那是40年前。




这里有“友好系统”的概念,并且有“不友好”的概念。这是不友好系统的典型示例。



还是我所有学生都遭受的一个更简单的例子。

X = 1/3

任何正常人都认为它将是0.33。无花果你!将为零。两个整数,这意味着将有一个整数除法。如果要获得0.33,请输入两个点:

X = 1/3。

放在一个地方足够,那么它将是正确的。但是,再次-谁会注意到?



阿尔高60



人们发现Fortran犯下了所有致命的罪行,人们开始发明新的编程语言。欧洲人想出了Algol60。数字上也有一些恶作剧:他们于1958年提出,即Fortran的第二年。但是它是如此笨拙和糟糕,以至于仅在1960年IFIP(国际信息处理联合会)大会上才开始对该语言进行修改和接受,因此得名。但是工作仍在继续,1964年发布了有关Algol 60的修订信息,我们为此工作了6年。记住这个数字,它将再遇到几次。使该语言的初始版本完善需要6年的时间。



Algol 60在苏联的第一笔翻译是在科罗廖夫中心(这是一个太空研究所,现在是NPO Energia)在Svyatoslav Sergeevich Lavrov的领导下完成的,他从1972年开始担任计算机软件部门的负责人,我现在在这里工作。





斯维亚托斯拉夫·拉夫罗夫(Svyatoslav Lavrov),1987年。照片来自安德烈·埃尔肖夫·



拉夫罗夫院士(Andrei Ershov Lavrov)是外部弹道学部门的负责人-是他计算了第一颗卫星的轨迹,即加加林的轨迹。他讲述了计算机时代之前的情况,当时有数百名妇女整天花时间纺纱加算机,数着东西。拉夫罗夫(Lavrov)听说过第一台计算机后就对它们产生了兴趣,被带走了,最终将外部弹道技术改为编程,从而制作了第一台翻译器。然后在新西伯利亚,安德烈·彼得罗维奇·埃尔绍夫创建了一个优化翻译器“ Alpha”。他们说,即使美国人也认为它是最佳的优化翻译器。然后,在莫斯科,他们用完整的Algol 60制成TA2,但是到那时,任何人都不需要具有愚蠢功能的完整Algol 60。据我所知,从未使用过TA2,但是我从事Lavrovsky TA1M转换器的工作已经很多年了。我们在mattech拥有两台M 20机器,它们配备了TA1M,后来称为“ Signal”。



PL / 1



当Algol 60出现在欧洲时,美国人感到不安,并制作了PL / I(编程语言I)。糟糕的语言!数以百计的自动类型转换为其他类型。正如他们所说,这是一种外壳语言。几百个操作员:对于任何一个单独的操作员-谁都会记住他们?然而,自从ES计算机出现以来,这种语言在苏联也很流行。我在上面写了,但是噩梦也发生了。您将在一个过程中描述全局变量A bin修订(整数),在另一个过程中描述A变量bin浮点(浮点)。然后,您会寻找很长时间的错误-翻译者什么也不会说。



简而言之,不仅在苏联,PL / 1和在欧洲都非常不受欢迎。我去过美国很多次了没有资本主义和共产主义的计划,但是有不同的风格



美式风格是一种蛮力方法。当一个人缺乏机器的计算能力时,他去找老板说:“给我买辆汽车的功率是它的两倍。”通常他们真的会买。



在欧洲-当然在苏联-这是不被接受的。我不得不思考,找到一种更有效的算法。



一旦我遇到了PL / 1转换器的首席设计师。苏联人容易记住他的姓氏马克思。他不是美国人,也不是英国人,这些翻译员离伦敦不远-欧洲有一个IBM中心。我们在新西伯利亚会见了他,那里有一个大型会议,马克思在会议上作了报告。他被问到:“在调试过程中发现了多少个错误?”他:“我无法回答这个问题-公司的秘密。” -“你有几个人?”答案是一样的。然后,凯尔·科斯特(Kes Koster),《阿尔高68》的作者之一(我曾与他结缘,是翻译),跳起来并用一种非常特定的英语大吼大叫,所有孩子现在都知道:“面对这些被压抑的同事,您会羞辱我们的自由世界。”对我来说:“翻译!”我:“这里不接受,凯斯。” -“他们将您分配给我,请翻译!“ 呃,好吧?据我了解,我开始翻译,但我理解得非常准确。但是没人谴责我。然后休息了一下,喝杯咖啡和白兰地-然后是这样。这位可怜的马克思站着,一米左右有两个空隙。我用两个容器走到他身边:“我们喝吧!”他猛击玻璃杯,说:“让我告诉你一切。在私人谈话中我可以,但在讲台上我不能。“因此他说他有51位程序员,他们发现了很多错误,这是一个疯狂的结构-使用PL / 1的转换器。



事实证明,我们有很多共同点。两人均出生于1949年,均于1971年大学毕业-他是伦敦,我是列宁格勒。我说:“那怎么样?在广播时间上,我们击败了您四次,在计数速度方面,您击败了三倍,并且代码长度达到了无数次。你怎么这么傻?”他:“您从事Algol 68的翻译工作了多少年?” - “7年”。 -“我们很久以前就将您踢出工作。年-开车,否则你会在街上。”那是我第一次了解什么是上市时间。快速工作很重要,否则有人会占领这个市场。这样您会做得更好,但是没人会知道。在苏联,我们不知道这一点。



阿尔戈尔68



欧洲人用ALGOL 68语言回应了PL / I。有一个类似Algol语言的2.1 IPIP工作组。1964年发布有关Algol 60的修订信息时,他们认为这个方向已经结束,必须开发出完全不同的东西。他们大喊一声:接下来我们要做什么?答案是白皮书-我将它放在书架上,很少见,而不是在互联网上-对同一小组2.1的建议。



它包含Ralph London关于程序正确性证明的长篇文章,Barbara Liskov的文章“ The CLU Language”,她首先提出了抽象数据类型的概念。荷兰学者范·温加登(van Weingaarden)也发表了一篇有关二级语法的文章。就能力而言,两级语法就像图灵机一样,借助它的帮助,您不仅可以描述确切的语法(现在您不会感到惊讶),而且可以描述语言执行的确切语义。经过多次会议,2.1工作组的人员决定将van Weingaarden的两级语法作为未来语言的基础。说到做到。



该小组约有200人,其中包括苏联科学家:埃尔绍夫,拉夫罗夫。我的科学顾问Grigory Samuilovich Tseitin给参加者写了很多封信-他们甚至感谢他。 1968年12月,IFIP采用了一种称为Algol 68的新语言。



这是一种令人毛骨悚然的噩梦。一方面,这是非常正式和精确的,另一方面,它是不可能写的。



因此Grigory Samuilovich Tseitin来到了我们的系统编程实验室,那时我是数学三年级的学生,他说:“伙计们,他们是在这里发明这种语言的,没人能实现。让我们实现它。”我们:“走吧”-从事这项业务。 1971年,我获得了文凭:“在Algol 68的翻译机中为ES计算机寻找鬼链”。 11页手写文本和一个工作程序。五年后,我在这份文凭中发现了一个错误,但是当我为自己辩护时,没人注意到它。



语言非常困难,我们并不孤单地思考。 2.1组继续进行,并在74年发布了有关ALgol 68的修订报告。另外还有一个大型委员会六年的艰苦工作。这种语言已经被证明是可以理解的,并且在欧洲和美国的许多团体中都开始使用。在苏联,基辅的叶卡捷琳娜·洛格维诺夫娜·尤先科(Ekaterina Logvinovna Yushchenko)的中央经济和数学学院的米哈伊尔·鲁维莫维奇·莱文森(Mikhail Ruvimovich Levinson)组成了一个小组。萨沙·马斯洛夫(Sasha Maslov)和他的团队为埃尔布鲁斯(Albrus)制造了Algol 68。 Andrey Petrovich Ershov从新西伯利亚的Algol 68开发了一种优化翻译器。在列宁格勒,当格里高利·蔡汀(Grigory Tseitin)离开这些作品时,任务实际上落在了我身上。





瑞士科学家Peter Naur的报告摘要摘要“ Algol:成功与失败”,于1968年5月31日在苏黎世举行的“ Algol十年”研讨会上发表。来自安德烈·埃尔肖夫院士档案



我不必与某人坐下来成为实验室负责人。当我们开始在莫斯科NITSEVT中调试IBM / 360时,一切都变成了事实。我们有一个自然科学博士,大约有5名候选人和大约15名学生,而我们在撰写文章和书籍时,一切都很好。但是后来老一辈的人开始慢慢脱落。 NITSEVT的时间仅在晚上分配给我们。我们去了莫斯科三天-我们晚上工作,白天睡觉,但是年轻人不在乎。而且,我喜欢晚上工作。有美国和苏联的装置。扔掉电缆,您就可以在优质的美国设备上正常工作,并在早上切换回去。白天,他们不允许这样做。但是我的老同事们受不了:当他们移交翻译人员时,我既是首席设计师又是实验室负责人。



我们是Algol 68公司在苏联制造的第一款翻译器。马斯洛夫(Mslov)和莱文森(Levinson)的团队有些滞后。尤先科结合数据库进行了有趣的开发。在新西伯利亚进行了一项名为“ Beta项目”的巨大科学研究。他们试图大力推广该问题,以便可以使用一个翻译器来完成ALgol 68,PL / I和Pascal。无论是BESM-6代码还是ES EVM代码。该项目从未完全完成,但是他们做了一些翻译。



当我们开始实施Algol 68时,事实证明,除了军事方面,没有人真正需要它的可靠性。但是后来他们爱上了它,许多军事组织转向了它。





工作组发布的有关ALgol 68的修订报告的目录2.1。编辑名单上的第一位是Adrian van Weingaarden



帕斯卡



Niklaus Wirth是2.1工作组的参与者之一。他和其他几位著名的科学家-霍尔(Hoare),迪克斯特拉(Dijkstra),不幸的是我们的拉夫罗夫(Lavrov)不同意多数派的意见,于1968年12月撰写了所谓的《少数派报告》。在其中,他们表达了这样的想法:“山催生了老鼠:这种语言是如此之大和复杂,以至于在他们的生活中没有人会理解它。”实际上,这是真的,但是经过6年的工作和修订消息的发布,Algol 68变成了一种相当不错且易于理解的语言。在学术界,它已经获得了广泛的普及,但是在工业编程中,尤其是在美国,它却没有。因此,沃思同志用他的耳朵做了个骗术-他创造了一种叫做Pascal的语言。他本人来自苏黎世,但那时他是斯坦福大学的实习生。



Pascal-“修剪过的” Algol68。就是说,他拿了剪刀,剪下了这个,这个,这个...第一个描述是-像一个笔记本的2戈比:24张,薄,薄。从那时起,我们已经完成了有关Algol 68的工作,我的一位学生承诺用我们自己的方法来实现Pascal。但是,每天早晨,他开始对我发问:“为什么要在重复和直到没有附加括号之间编写许多运算符,而在这样做之后,只能写一个?”,“为什么要在其他之后编写,而在之后则不编写?”如果我想将过程本身作为参数传递,例如计算一个整数,该怎么办?”。有很多不一致之处。 Algol 68有局限性,因此无限内存将不起作用,因此自我简化将不起作用。在帕斯卡(Pascal),不。



在那些年里,一个笑话在苏联流行:“我在床厂工作,每天把细节带回家,我想做一张床,但是无论如何组合在一起,我都会得到一挺机枪”。因此,当我们开始修复Pascal时,我们得到了Algol 68。每个人都笑了,说这很奇怪,但是我对此一点都没有感到惊讶。包括我们在内,只有300人从事Algol 68多年的工作。



有趣的是,我的妻子写信给交换专栏作者凯斯·科斯特(Kes Coster),讲述了她发现的错误并得到了答案:“亲爱的特雷霍瓦先生。”起初我们很生气,然后他们告诉我们:“他怎么会猜到捷列霍娃是她?”然后我们开始签下Galiy Terekhov,他了解了一切。



沃思(Wirth)是个聪明人,他从事帕斯卡(Pascal)的修整工作,并于1974年与一个名叫詹森(Jensen)的男人一起使标准更厚,第100–120页。当Wirth庆祝自己的80岁生日时,在苏黎世举行了一次小型座谈会,我在这里受到20-30位客人的邀请。当我到达时,事实证明詹森是个女人,凯瑟琳。老实说,这让我感到惊讶。她做了很多工作,将Pascal从玩具变成一种严肃的语言。





凯瑟琳·詹森(Kathleen Jensen)在专门讨论尼克劳斯·沃思(Niklaus Wirth)诞辰80周年的研讨会上的讲话。



然后,博兰德(Borland)开始做生意,制作了博兰德·帕斯卡(Borland Pascal)-已经两卷厚了。因此出现了一种可以使用的语言。在此之前-学校宠爱。



当有关Pascal Wirth和Jensen的修订报告出台时-也是在第一个标准发布几年之后-Wirth在前言中写道:“ Pascal的含量高于Algol 60”。翻译编辑是著名的苏联程序员德米特里·波希瓦洛夫(Dmitry Podshivalov),一个相当邪恶的叔叔。他喜欢大声疾呼。沃思说完话后,译文中出现了一个脚注:“很难同意这一说法。尝试在Pascal中编写矩阵乘法程序。事实是,顺便说一下,在Pascal中,就像在C中一样,您可以描述一个从零到一百到一千的数组,但是不能描述到N的数组-没有动态数组。您如何描述矩阵乘法过程?您不知道将要相乘的矩阵。因此,波希瓦洛夫是绝对正确的。对我来说,也是一种您不能编写矩阵乘法过程的高级语言!





Nikolaus Wirth和Lilith计算机是在苏黎世瑞士高级技术学校开发的。沃思创建了一种新语言Modula-2,专门用于实现该系统的软件1981年,



帕斯卡(Pascal)最终在学童和学生中大受欢迎。对于编程的基础学习来说,他真的很棒。对于假人而言,可靠性几乎没有什么意义:只需思考一下,这是该语言的一个漏洞-一,二,三。但是它可以很容易地读写。在我看来,Pascal并没有从事工业编程,因为在工业编程中需要负责,并且有必要编写具有高可靠性的大型软件系统。



地狱



欧洲人制造Algol 68之后,美国人决定-我们为什么变得更糟?他们决定为美国国防部创建一种新的语言。它仍然是世界上最大的IT客户,因为在资金方面没有公司能与之匹敌。美国人决定科学地解决这一问题。首先,制定语言要求。他们被这样称呼:稻草人,木人,钢铁人。最后一个是石头。我已清楚,清晰地阅读了这些粗大的书目。



然后他们宣布了一项竞赛,奖金高达数百万美元。但是他们知道,如果不采取任何特殊措施,IBM一定会赢。就像关于足球的谚语:“每个人都踢球,但德国人获胜。”在那些年中,IBM的财务营业额是其最接近的竞争对手的20倍。他们还说“ IBM和六个小矮人”:一个营业额为160亿美元的公司,另外六个营业额-每个10亿吨,IBM将压垮所有人。因此,国防部对参与者进行了分类,没人知道谁是谁。在第一阶段,选择了17个团队。他们给了他们很多资金-每笔数百万美元。在第二阶段,选择了四个团队并按颜色命名:红色,黄色,绿色,蓝色。他们的资金已经达到数十亿美元,他们不仅需要制作语言,还必须制作测试翻译器,以便对其进行测试。只有完成工作后,信封才打开。



有一个疯狂的丑闻,因为欧洲人突然获胜-来自巴黎的让·伊什比亚(Jean Ishbia)的团队。其语言与ALgol 68非常相似,而与PL / 1完全不同。该语言被命名为Ada,以纪念世界上第一个程序员Ada Lovelace,Charles Babbage的助手以及拜伦勋爵的女儿,但是您可能知道这一点。





Jean David Ishbia是法国计算机制造商Bull的研究部门的员工



为了创造所有这些“石头人”,即提出要求,美国人召集了委员会。需要数百名专家来评估整个问题。因此,整个程序员群体都被从欧洲引诱到美国。一名共产党员被困在其中一个委员会中-匈牙利社会主义工党成员匈牙利人伊万·巴赫(Ivan Bach)实际上进入了五角大楼。 1976年,我在布达佩斯大学任教,并向他介绍了他。我们成为朋友,在布达佩斯走来走去,他告诉我与美国人的一切安排。最后,他给我寄了一份关于地狱磁带录音带的初步描述。三年后,我们对此进行了研究。同样,请记住数字6。



因此,我将苏联对地狱的语言的首次描述带到了苏联。自然,我们决定做一名翻译。我已经在这件事上变得精通,并想到:由于这是美国国防部的标准,我们的士兵肯定会想要使用它。然后我会告诉他们:“我有翻译。”但是我很想念-我们的战士对艾达不感兴趣。我认为是徒劳的。他们偷了一切-也有必要偷。



当我决定做翻译时,我实验室的一位比我大四岁的员工说:“安德烈,你监督很多。为什么你们所有人都为自己和自己?让我来领导这项工作。” 我回答:“我带来了它,经过深思熟虑,我知道该怎么做。但是,好吧,铅。” 他说服了我,我已经有事要做。三个月过去了,事实证明,在阿杜附近成立的该小组由几乎今年的毕业生领导。是我的学生Arkady Popov。我问:“如何?你为什么要说这个混蛋?” 他说:“我没有通过-他们把它从我身边夺走了”。这个年轻人原来很活跃。



但是故事还没有结束。那个年轻人对我说:“安德烈,你是错误的领袖。我们通过原型来完成所有工作,我们希望快速看到一些东西。在科学中是必要的:创建一个项目并遵循它。” 我:“您带头-做吧。我们将同时看到。”



四个人组成的小组花了两年的时间来输入三个厚的卷-草稿。我们照顾年轻的年轻人,为他们感到高兴,在设计完成之后,我们甚至喝了一点酒。庄严的时刻-两年的工作已经完成。但是实施过程花了三个月的时间,结果证明它们在项目中以及某些会严重影响其他一切的数据结构中被误认为是错误的。Arkady来找我,请求原谅:“我们上当了。” 但是,这个团体还是用地狱的语言在苏联做了第一位翻译。没错,比其他人都晚了,而且通常情况下都比她要晚。





Oleg Perminov,“ ADA编程语言简介”,1991年



Java和Python



这是我最喜欢的语言的终点。进一步的道路不再是革命性的。



假设是Java。基于虚拟机的代码可移植性。甚至维基百科也说p码是在1978年的某个时候发明的。但不是!我亲自问了沃思本人,谁提出了P码。他回答:“我做了。”帕斯卡(Pascal)做完这件事后,他去了斯坦福大学(Stanford University)校长:“有一种语言可以很好地教给学生。让我们?”校长:“快点!我只有六种类型的计算机。让帕斯卡感动所有人。”沃思说他差点死了-单靠六个翻译是不可能的。那就是他创建p代码,虚拟机的时候。原来,他有一个从Pascal到使用p代码编写的p代码的翻译器,然后在每台机器上制作了p代码解释器-这是一个非常简单的汇编程序,需要数百行。而且一切正常。我们仍然使用这个想法。尼克拉斯州那是他发明了p代码,不是在78中,而是在71中。我还听说了70年代初的p代码-一些信息传给了我们。



现在,Wirth正在做与我们正在做的事情类似的事情,并且我们正在制作C语言的一种变体-更安全,具有更完整的控制。事实证明,我们也不是第一个。已经有一种语言-Di,它是Andrei Alexandrescu发明的。我个人认识他-我在某个会议上见过他。



我只想谈谈Python。它是不能用于编写大型程序的语言。但这对于原型制作非常有用:快速弥补膝盖,看看会发生什么。所以他们基本上使用它。具有大量库的轻量级语言。但是我无法想象他们会用Python编写对火箭或电话交换机的控制权-它不适用于大型硬件系统。实际上,Guido van Rossum在告诉我Python产生的方式和原因时亲自向我谈到了这一点。





我将更详细地介绍最流行的一种C语言的历史。肯·汤普森(Ken Thompson)在1970年提出了一种现在称为Unix的操作系统。这是一个很酷的事件。为此,他使用了无类型语言B。不久之后,马丁·理查德(Martin Richard)提出了BCPL语言-Bi语言的发展,也没有类型。然后,丹尼斯·里奇(Dennis Ritchie)决定用他自己发明的一种更有效,更可靠的C语言重写所有内容。他依靠B和BCPL,但增加了类型控制。





UNIX的创建者Ken Thompson和Dennis Ritchie正在研究PDP-11。彼得·哈默(Peter Hammer)摄影,1970年左右



原来好笑。Richie的第一本书出版于1978年,那时习近平已经流行起来甚至到达了苏联。我知道C是因为Unix源代码是自由分发的-这是一个开源项目的初次体验。人们通过以下方式研究C:读取-数组是这样写的,cut是这样的,loop是这样的。就是这样,不需要任何其他操作。但是该语言作者的第一篇文章出现在世界上每个人都已经非常熟悉它的几年之后。



C是一门非常好的语言,我喜欢它,但是它有漏洞。我想解决此问题,现在正在研究它们,并确保使用更可靠的版本。



科博尔





美国国防部为1960年4月的会议编写的关于Cobol语言的报告的封面



,也是美国人发明的。事实是,Fortran最初是为科学计算而发明的,而当时的美国人在经济中已经使用了许多计算机来控制生产。 Cobol是专门为处理经济数据而发明的。



这种语言很奇怪,但事实证明对经济计算是有好处的。您可以说,只要它满是漏洞和马虎,但是上面写着世界一半的金融计划,俄罗斯中央银行和Sberbank也在研究Kobol。我非常了解,因为我的学生无处不在。他们没有在上面编写新程序,但是有很多旧程序。



Kobol给我提供了在改革时期生存的机会。到1980年代末,我们拥有了一支强大的翻译团队,第一批来自Algol 68,Ada,人工智能语言,机器人控制的翻译。一切都很好,但改革爆发了,来自美国的大量节目涌入这里。美国广播公司淹没了市场,由于没有人为此付出任何代价-那是纯粹的盗版时代-他们开始忘记我的团队了。我几乎感到绝望,尽管那时我已经组建了企业“ Terkom”-Terekhov和团队。



我可能会消失了,但后来美国人遇到了业务问题。他们在Cobol中积累了许多程序,但是维护却非常昂贵,很少有人知道这种语言。然后,他们决定进行这样的重新设计-将kobol程序转移到现代平台。在杜克大学试过,但失败了。但是在他们的公司里有苏联人。实际上,只有在第六次或第七次美国之行中,我遇到了一个在美国出生的美国人。敖德萨(Odessa)的前居民莱尼亚(Lenya Erlikh)说:“如果美国人不能,也许俄罗斯人会成功。” 而我们做到了。总的来说,这门语言很可怕,但它帮助我在困难时期生存了下来。



All Articles