这位80岁的MIT的女教授,让我们彻底摆脱了goto语句的支配

  • 日期:01-09
  • 点击:(1551)


如果你上过编程课,老师一定警告过你:不要使用goto语句!

因为goto语句不仅使代码非常不可读,而且如果你随意跳出来也会给程序带来隐患。

但是这种几乎被现代编程禁止的句子在计算机诞生之初很常见。

早期的程序员使用goto来解决代码的意外后果。如果出现任何问题,他们使用goto将程序跳转到指定的语句。

直到麻省理工学院的一名女教授,我们才完全摆脱了后藤句的支配。她就是芭芭拉利科夫。

△芭芭拉利科夫,图源:量子杂志

刚刚80岁。她是美国首批获得计算机科学博士学位的女性之一。她获得了冯诺依曼奖和图灵奖。

甚至可以说她发明了构成现代程序基础的建筑。

但是在那之前,她是一个因为性别而被拒绝的人。

芭芭拉利科夫是什么样的传奇计算机科学家?

在她80岁生日的时候,让我们看看她改变编程的故事。

好的设计造就好的代码。

20世纪40年代,美国发明了第一台电子计算机ENIAC。虽然早期的计算机体积很大,但提供的功能很简单,而且当时的程序设计不需要考虑太复杂的结构。

goto语句是最简单的方法,只需将程序的执行导向相应的句子。

广泛使用的goto语句很简单,但没有逻辑组织。以这种方式编写的程序难以阅读,容易造成危险,甚至致命。

曾经有一种叫做Therac-25的软件控制放射治疗机,它使用过时的编程方法,导致6名患者接受了严重过量的放射治疗,导致死亡事故。

没有编程的基本框架,计算机硬件的发展已经超出了程序员的能力。

最后在20世纪60年代,计算机编程引入了一种新理论,b?两位计算机科学家Hm和Jacopini提出goto语句可以完全被结构化程序代替,只需要使用三种结构,顺序、选择和循环。

这个结构一直使用到现在。

1974年,一位35岁的麻省理工学院女教授和她的学生将这个想法付诸实践。他们发明了一种新的编程语言CLU。

CLU完全放弃了goto语句。虽然这种编程语言尚未被广泛使用,但它在编程语言的发展中发挥了非常重要的作用。

CLU中的一些概念在许多方面影响了后来的编程语言,并对后来的面向对象编程语言做出了许多贡献。

后来出现的爪哇、爪哇、爪哇、蟒蛇都是CLU的后代。

CLU的主要贡献包括抽象数据类型、共享调用、迭代器、多个返回值、类型安全的参数化类型和变量类型。

Liskov对编程的贡献不止于此。现代面向对象编程的五个原则中的第一个是以她的名字命名的李斯科夫替换原则。

1987年,利斯科夫在一次会议上的主旨演讲中首次提出了这个原则,即继承必须确保超类拥有的属性在子类中仍然有效。

根据里克特替换原理编写的程序克服了继承中重写父类造成的可重用性差的缺点。

此外,这个原则也保证了程序的正确性。扩展子类不会给现有系统带来新的错误,也不会降低代码错误的可能性。

直到今天,所有面向对象的程序员仍然遵循着利科夫提出的这个原则。

传奇女人芭芭拉利科夫

现在利科夫的学术成就得到了广泛认可。

但是在那个时候,作为一名科学家和一名女性,这真的不容易,因为普林斯顿数学研究生的申请因为性别而被拒绝。

利斯科夫在伯克利学习时,是100个班级中仅有的一两个女同学之一。

她完成了所有与数学和科学相关的课程,但当时学校并不鼓励女生这样做。

没有人对她说,“嘿,你做得很好。你不考虑和我们一起工作吗?”或者类似的东西。

幸运的是,利科夫的母亲并不反对她的脸(尽管她只是被鼓励在学校表现良好)。

但是直到她从斯坦福大学研究生院毕业才意识到“性别”问题的存在。

因为当她毕业时,没有人和她谈论她的工作。

像她这样的男同学(雷伊雷蒂)可以被招聘到学术职位。

你知道,在那些日子里,就业有点像“包分发”,名顾问通过与全国各地的部门合作安排毕业生的工作。

但是对于利科夫来说,可以说“没人在乎”

在此之前,利斯科夫已经向麻省理工学院申请了一份工作,但他收到的反馈是“不考虑当教授”。

当这种情况发生时,你会认为“我自己不够好”。

"但同时,我也相信计算机科学是开放的."

幸运的是,利斯科夫在米特里的第一份工作还不错。在米特里逗留期间,她深入研究了编程方法。

△芭芭拉利科夫正在设计抽象数据类型

这项研究为她赢得了一等奖论文。

1971年,她就这项研究发表了演讲,并受到麻省理工学院和伯克利分校的邀请。

从那以后,事情发生了变化。

当我第一次进入麻省理工学院时,大约1000名员工中只有10名女教师。但事实上,麻省理工学院有许多杰出的女性,她们不在教职员工之列。

在科学领域,很少有人能意识到女性所做的一些基本贡献。

20世纪90年代,她回到斯坦福参加一个部门庆祝活动。一群老教授在谈论“老男孩网络”的八卦他们说:“有一个年轻女人做得很好,但那是因为她嫁给了一位教授。

利斯科夫认为这真的很愚蠢。

在利斯科夫成为计算机科学部主任之前的10年里,该部只发现了一名值得雇用的女性。

从2001年到2004年,在她担任系主任期间,利斯科夫总共雇用了7名妇女。她没有统计数字,三名初级教师表现出色。

后来,利科夫获得了图灵奖,尽管他有如此巨大的荣誉,质疑的声音是不可避免的。

△2008年美国计算机学会图灵奖)

我对她的工作一无所知。她为什么赢得图灵奖?

哦,她没有做这项工作,是一个男同事为她做的。

“这完全是胡说八道,”利科夫说。

即使在今天,当她足够开放的时候,她认为情况并不比那时好:

也许我很幸运。如果我大学一毕业就结婚,我可能会有完全不同的结果。

你如何看待人工智能的未来

那么,利斯科夫对人工智能和机器学习的发展有什么看法?

我的博士正在和约翰麦卡锡一起研究人工智能。

约翰提出了“象棋终局”的主题。因为我从来没有下过象棋,所以我阅读了相关书籍,并将一些象棋算法翻译成计算机算法。

当时,人们认为让程序按照人类的意愿运行是明智的,但现在情况并非如此。

当前的机器学习程序在大多数情况下运行良好。然而,在某些情况下,效果并不理想,人们不知道问题在哪里。

如果我在研究一个问题时需要知道它是如何工作的,那么我就不会使用机器学习。

人工智能是一种应用,而不是核心科学。

对于计算机科学的发展,利斯科夫更担心互联网,包括虚假新闻和安全问题。

如果一对离婚夫妇,丈夫向妻子发布一些诽谤性的内容,包括她的地址等个人信息,这很可能会导致一些非常可怕的事情。

这可以追溯到20世纪80年代。当时,15所大学和几个政府实验室通过互联网连接在一起。我们都是好朋友。他们当时的态度是网站不应该对内容负责,这会扼杀他们的发展。

现在,这种态度还在继续。

当我们解决当前的问题时,我们不仅需要技术,还需要法律来解决人们的不良行为以及隐私和安全问题。

还有一件事

分享利斯科夫对女性职业发展的建议:

保持低调,直到你真正站起来。然后拥抱成功。

门户

博客: . quanta magazine . org/Barbara-Liskov-is-the architect-of-modern-algorithms-/

维基百科:芭芭拉_Liskov

个人主页:

youtube.com