观点丨图灵奖得主Barbara Liskov:为什么编程仍然很重要

科技工作者之家 2021-09-28

    转自 AI科技评论近日,英国科技网站The Register对麻省理工学院教授Barbara Liskov进行了采访。

    Barbara于2009年因其对编程语言和系统设计的贡献而获得图灵奖,在本次采访中,Barbara结回顾了其在70年代创建CLU编程语言早期工作,并发表了一些关于CLU编程语言的最新见解。

    自从Barbara Liskov因其对编程语言和系统设计的贡献而获得图灵奖已经有12年了,最近,她又发表了一些关于CLU编程语言的最新见解:为什么编程仍然很酷?

    现年80多岁的Liskov, 正领导着麻省理工学院的编程方法论小组。

    最近,她一直在研究并行计算。

    在90年代时她曾与一名学生一起开发了拜占庭容错系统(Byzantine Fault Tolerance),如今她表示,这对充满区块链的世界来说意义重大。

    近年来,随着CLU在GitHub上的出现,人们的注意力转向了Liskov师徒在20世纪70年代初创造的这门语言时的早期工作。

    今天,我们详细谈谈为什么直到今天,编程仍然很重要。

    1传统的编程并不溯源 error,也没有泛型当初CLU起步时,整个编程语言的状态太差,许多东西需要创新。

    例如,我们不得不正视泛型的问题。

    在抽象数据类型的概念出现之前,实际上已经需要泛型了。

    如果你写一个排序例程,并不希望更替不同类型的数组时都要重写。

    然后是异常处理。

    Liskov回忆起关于恢复模型与替代方案的争论:“问题是,在引发异常之后,控制权是否随后恢复到引发异常的代码,还是只是结束了该代码?

    "如果没有一种方法从主流中分离单个异常情况,那么经常出现在远离错误源的bug就越难追踪。

    不幸的是,今天这种情况仍然会发生,还需要你一个一个debug。

    数据抽象是一件大事,所有其他东西也都是随之而来的。

    Liskov说道,“如果你回顾一下 90 年代 Java 发生的事情,他们想使用采用参数多态的方式,但他们没有做,也从来想过优化异常处理”。

    2发明新的计算机语言Liskov 感知现代编程语言的缺乏基础,无法支撑起整个现代应用软件行业,因此将目光放在了CLU的研究上,并带领学生一起投入其中。

    然而,到了20世纪70年代末,科研道路出现了岔路口: 要么尝试将这门语言商业化,要么坚持研究。

    Liskov选择了研究,“在我的小组里,没有一个学生想要创业。

    "直到现在,Liskov 还一直赞扬她的学生 Russ Atkinson、Alan Snyder 和 Craig Schaffert 以及Stephen Zilles。

    后者也在麻省理工学院,并于 1973 年与她一起改进 CLU 基础概念。

    Bob Scheifler, Eliot Moss和Toby Bloom也出现在1979年10月的CLU参考手册上。

    她指出,现在发生的事情别无二致。

    现如今把东西放到网上,并建立一个智囊社区是一个相对简单的过程。

    但是在70年代,你必须挂靠一家公司,但即便如此,也很难获得启动资金。

    直到90年代初,情况才有好转。

    话说回来,CLU的本质是它没有全盘接受多年来困扰其他语言的糟粕。

    Liskov说 ,“一门语言一旦运行,它就开始衍生遗留问题,致使你必须继续支持所有已经编写的代码。

    这就产生了负担。

    "在过去的20年里,Liskov参与的大部分开发工作都与c++有关。

    她说,“程序开发不再是用机器语言完成的。

    这是一个很大的进步。

    只是提高了抽象的层次,模块化的原则就已经被很好地理解了。

    "然而,直到今天,Liskov一直希望改变的事情是:语言被强制执行封装。

    但是当大家在构建一些低级平台时,又必须违反封装。

    Liskov认为封装是编程方法的关键工作--模块化,即将数据和处理数据的方法捆绑到单个单元中,并将对数据内部的访问限制在这些方法中。

    这与让编译器强制执行是两码事。

    不过,其他方面也有所改善。

    与 1970 年代可用的存储能力相比,今天的巨大存储能力意味着在设计模块时,“紧凑性”可以让“优雅”退居二线。

    我们总是希望它可用,但尽可能简单。

    3结语Liskov现在仍对编程和技术充满热情,她说:“编程和软件工程仍然是一个令人兴奋的职业。

    我认为要牢记接口和实现之间的区别,让行为与实现分开定义。

    “如果你没有使用强制封装的语言(不幸的是,大多数语言都强制封装),那么你就必须自己强制封装,这有助于维持区块链系统完整性,广义地说,超类的对象应该可以被子类的对象替换而不破坏应用程序。

    ”编译来源:https://www.theregister.com/2021/09/16/barbara_liskov_interview/扫码加入我们个人会员:1000元/届(5年)学生会员:50元/届(5年)终身会员:2000元


来源:CAAI-1981 中国人工智能学会

原文链接:http://mp.weixin.qq.com/s?__biz=MjM5ODIwNjEzNQ==&mid=2649838633&idx=3&sn=b8827cf91b2d4c80390b91d7ea7feedb

版权声明:除非特别注明,本站所载内容来源于互联网、微信公众号等公开渠道,不代表本站观点,仅供参考、交流、公益传播之目的。转载的稿件版权归原作者或机构所有,如有侵权,请联系删除。

电话:(010)86409582

邮箱:kejie@scimall.org.cn