当我看到一个巨大的新酒店和公寓综合体正在我办公室所在的大楼附近建造时,我一直在考虑脚手架。这是一个漫长的过程,首先要挖一个深洞,在洞的边缘用敲入地面的钢梁支撑,然后在钢梁之间用厚木板条防止洞的边缘坍塌。先打好基础,然后在此基础上,在铺设钢筋和混凝土时,建立一组临时支柱来支撑下一层楼。我对化学反应中催化剂的相似性感到震惊,这些催化剂促进了反应,但在反应过程中却没有被耗尽。因此,临时脚手架将东西固定在适当的位置,直到它们不再需要,并被移除,一次又一次地重复使用。
在互联网开发的早期,开发团队大量使用其前身阿帕网(Arpanet),通过电子邮件、远程分时访问、文件传输和其他应用程序支持互联网开发。一旦指定并测试了互联网协议,阿帕网脚手架(即所谓的NCP协议)就被拆除,取而代之的是TCP/IP,并对早期的阿帕网应用程序进行了适当的修改,使其与新的互联网协议兼容。同样的过程在20世纪80年代早期被用于开发MCI邮件应用程序。在MCI Mail开发期间,实现团队使用了Digital Equipment Corporation的一种名为All-in-One的电子邮件服务来协调工作。一旦我们有了MCI Mail,我们就可以像拆除脚手架一样将早期的系统退役。
对于许多其他类型的软件开发来说,这必须是一个共同的范例,在这些软件开发中,临时支持系统被采用,甚至可能被开发来促进下一个演进步骤。我看到类似的过程发生在太阳系互联网的发展中,正在现有的互联网上进行测试,大部分是在地面上(以及一些近地轨道或近地资产)。引入延迟或中断的人工机制允许对面向空间的捆绑协议套件进行测试,为其在太空非互联网环境中的部署做准备。
这种思路也让我注意到编译器的工作,我曾经使用编译器来检测FORTRAN程序,通过一个特殊的编译器来运行它们,该编译器将额外的源代码注入到它正在编译的程序中,以构建在执行期间进行的性能测量。有时候,想想在编译器-编译器期间(创建产生编译器的代码)会发生什么是很有挑战性的编译时间,将产生源代码,包括特别注入的源测量代码,然后将转换为可执行代码进行测量执行时间。记住哪个阶段会产生什么样的结果有时会让人困惑,需要几张图来弄清发生了什么和什么时候发生了什么——就像那些涉及时间旅行的科幻小说故事一样,你必须弄清楚发生了什么和什么时候发生回到未来电影系列。
用于构建新系统的工具通常需要临时脚手架,以达到预期的系统可以自我支持的程度。
这些回忆使我相信,构建新系统的工具通常需要临时脚手架,以达到预期的系统可以支持自己的地步。如果我没有记错的话,Alan Kay的Smalltalk语言最终能够使用用它自己的语言编写的编译器来编译自己。我很有兴趣从读者那里听到他们自己创建软件支架的经验,这些软件支架使他们能够开发新系统。我想知道这是否就像一个新物种诞生于一个较早的物种,但两者是不同的,不可互操作的?
数字图书馆是由计算机协会出版的。版权所有©2023 ACM, Inc.
没有找到条目