本文转载自雷锋网。编者按:近日,英国科技网站TheRegister采访了麻省理工学院教授BarbaraLiskov。Barbara因其在编程语言和系统设计方面的贡献而获得2009年的图灵奖。在这次采访中,Barbara总结和回顾了他在1970年代创建CLU编程语言的早期工作,并发表了一些关于CLU编程语言的文章。最新见解。在即将召开的CNCC2021(中国计算机大会)上,Barbara也将作为特邀嘉宾发表演讲。为帮助与会者更好地了解芭芭拉对编程理念的最新研究和思考,AI科技评论特此在TheRegister上发表文章编译。BarbaraLiskov因对编程语言和系统设计的贡献而获得图灵奖已有12年,最近她发表了一些关于CLU编程语言的新见解:为什么编程仍然很酷?现年80多岁的Liskov领导麻省理工学院的编程方法论小组。最近,她一直在研究并行计算。在1990年代,她与一名学生合作开发了拜占庭容错(ByzantineFaultTolerance),她现在说这对区块链世界具有重要意义。近年来,随着GitHub上CLU的出现,人们开始关注Liskov的早期工作,他在1970年代初期指导和学徒创建了该语言。今天,我们将详细讨论为什么编程在今天仍然很重要。1、传统编程不追溯错误源头,也没有泛型。CLU刚起步的时候,整个编程语言的状态太差了,很多东西需要创新。比如我们要正视泛型的问题。在抽象数据类型的概念之前实际上需要泛型。如果您编写排序例程,您不希望每次替换不同类型的数组时都重写它。然后是异常处理。Liskov回忆起关于恢复模型与替代方案的争论:“问题是,在抛出异常之后,控制权是返回到抛出异常的代码,还是只是以该代码结束?”如果没有一种方法来分离各个异常,那么追踪通常发生在远离错误源的地方的错误就会变得更加困难。不幸的是,这种情况今天仍然会发生,需要您一一调试。数据抽象是一件大事,其他一切都随之而来。利斯科夫说。“如果你回顾一下90年代Java发生的事情,他们想使用参数多态性,但他们没有也从未想过优化异常处理”。2.发明一门新的计算机语言Liskov察觉到现代编程语言缺乏基础,无法支撑整??个现代应用软件产业,因此他将重点放在CLU的研究上,并带领学生一起投入其中。然而,到了20世纪70年代末,科学研究的道路出现了一个岔路口:要么尝试将语言商业化,要么坚持研究。Liskov选择了研究,“在我的组里,没有一个学生想创业。”直到现在,Liskov一直称赞她的学生RussAtkinson、AlanSnyder、CraigSchaffert和StephenZilles。后者也在麻省理工学院,并于1973年与她一起改进CLU的基本概念。BobScheifler、EliotMoss和TobyBloom也出现在1979年10月的CLU参考手册中。她指出,现在发生的事情也不例外。现在把一些东西放到网上并建立一个智库社区是一个相对简单的过程。但在70年代,你必须被一家公司捆绑,即使那样,也很难获得启动资金。直到1990年代初,情况才有所改善。话说回来,CLU的本质就是没有完全拥抱困扰其他语言多年的糟粕。“一旦一种语言起作用,它就会开始产生遗留问题,你必须继续支持你编写的所有代码。这会造成负担,”Liskov说。在过去的20年里,Liskov参与的大部分开发工作都与c++相关。她说,“程序开发不再用机器语言来完成,这是向前迈出的一大步。只要提高抽象层次,模块化的原则就很好理解了。”然而,时至今日,Liskov期望改变的一件事是:封装由语言强制执行。但是大家在搭建一些底层平台的时候,必然会违反封装。Liskov认为,封装是编程方法的关键工作——模块化,即将数据和处理数据的方法捆绑到一个单元中,并将对数据内部结构的访问限制在这些方法中。这与要求编译器强制执行它不同。然而,其他领域也有所改善。与1970年代可用的产品相比,如今巨大的存储容量意味着在设计模块时,“紧凑”可以让位于“优雅”。我们总是希望它可用,但尽可能简单。3.结论Liskov仍然热衷于编程和技术。她说:“编程和软件工程仍然是一个令人兴奋的职业。我认为牢记接口和实现之间的区别,让行为与实现分开定义是很重要的。”如果你没有使用强制封装的语言(不幸的是,大多数语言都这样做),那么你将不得不自己强制封装,这有助于维护区块链系统的完整性。从广义上讲,超类的对象应该可以在不破坏应用程序的情况下被子类的对象替换。“
