软件的鲜为人知的秘密

采访计算机编程界的“印第安纳·琼斯”——格雷迪·布奇


关于支持科学新闻报道

如果您喜欢这篇文章,请考虑通过以下方式支持我们屡获殊荣的新闻报道: 订阅。 通过购买订阅,您将帮助确保有关塑造当今世界的发现和想法的具有影响力的故事的未来。


大多数人上网冲浪、用手机聊天以及在自动取款机 (ATM) 上取款时,几乎不会想到他们是如何完成这些操作的。 他们只是理所当然地认为这些设备会在触摸按钮时就能工作。

温馨提示:如果没有软件指示计算机与网络通信、手机查找信号以及 ATM 确认客户已获准接收和存入资金,这些设备将毫无用处。

换句话说,软件是当今各种小工具的心脏和灵魂——而且,软件的编写方式对其运行至关重要。 然而,问题是,没有一本手册规定应该如何编写软件。 本质上,程序员现在只是将命令串在一起,使设备执行消费者期望它们执行的操作。 软件开发人员没有规则可循,例如指导大多数工程学科的规则,也没有历史参考框架供代码编写者研究以确定哪些方法有效,哪些方法无效。

IBM 研究员兼自称“软件考古学家”的 格雷迪·布奇 解释了为什么需要改变这种情况,以及将软件编写带入 21 世纪需要做些什么。


您说在编写软件方面存在一个“鲜为人知的秘密”。 您愿意和我们分享一下吗?
在其他学科,尤其是工程学中,存在关于架构的论著。 这不是目前软件的情况,软件在过去几十年中才有机地发展起来。 所有软件密集型系统都有架构,但大多数时候它是偶然的,而不是有意的。 这导致了大多数软件编程知识成为部落知识,更多地存在于程序员的头脑中,而不是在一些参考手册或公开可用的资源中。
由于没有成文的软件编写方法,我们是在玩火。 这是怎么回事?
我们的社会现在靠软件运行。 根据一般经验法则,在全球范围内,软件开发人员每年生成约 330 亿行新的或修改后的代码,并且随着对软件提出新的需求,它很快就会过时。 如果我没有架构意识,并且不断堆积代码,它就会变成一团糟。 这种停滞对大型企业的危险在于,如果一家规模较小、更灵活的竞争对手以更好的方式做事,那么大型企业就很难适应,并且很容易失去在特定市场中的领导地位。 那么软件架构就有了根本的经济原因。 这对于完全基于软件的成长型企业来说尤其困难,例如 eBayGoogle 等公司,它们实际上不生产任何有形的东西,但却依赖软件作为其业务的核心。

随意编写软件的问题有多严重?
如今,软件的累积量很大。 鉴于已对现有软件进行了大量的资本投资,因此很难轻易更改它。微软一度认为 Word [文字处理软件] 变得摇摇欲坠,并尝试从头开始重写它 [作为 1991 年 Pyramid 计划的一部分]。 这种方法的问题在于,他们的新 Word 始终无法与原始软件相匹配。 他们不得不回去使用他们已经拥有的代码。

Web 对软件架构有什么影响?
Web 没有改变软件架构的基本思想,而是代表了一种特定的软件架构类型,系统可以基于这种类型构建。 话虽如此,Web 的确存在一些设计“缺陷”; 这些“缺陷”与其说是邪恶,不如说是根本无法先验地知道。 Web 的表示层和语义层之间存在较差的分离,而这两层需要被允许独立更改。 另一个挑战是 Web 的底层 TCP/IP [传输控制协议/互联网协议] 协议,该协议的设计初衷并非支持 YouTube 等网站上流行的流媒体视频。 当 TCP/IP 接收到请求然后提供响应时,它会中断信息流,这在您尝试播放流媒体视频时是一个问题。

可以做些什么来改进软件?
需要有一种一致的软件编写方式,这种方式可以在不同的系统和不同的情况下运行,并考虑许多不同的因素:软件是在具有多个处理器的单台机器上运行,还是在单处理器机器集群上运行? 所有软件源代码都将放入计算机上的单个文件中,还是将其分解并作为多个脚本执行? 软件将如何定义和使用它遇到的不同数据? 这些是在编写软件之前必须回答的问题。 在土木工程中,如果您要求某人建造一栋维多利亚式房屋,则对其外观有固有的理解。 如果您要求不同的程序员为高吞吐量系统 [例如处理金融交易的系统] 设计软件,则对于应该如何构建该软件没有达成共识。
如何才能更好地让未来的计算机科学家做好准备,以便采用更通用的软件编写方法?
由于多年来商业界出于必要性推动了软件的进步,因此学术界不得不奋起直追,而不是教授和建立软件架构以供后代遵循。 一种方法是通过诸如“Alice”之类的教程来教导年轻的程序员,“Alice”是一种 3-D 软件编写程序,旨在轻松创建动画,用于讲述故事、玩互动游戏或制作视频以在 Web 上分享。 Alice 由 兰迪·波什 [卡内基梅隆大学计算机科学、人机交互和设计教授] 领导的程序员团队创建,是一种免费提供的教学工具,旨在成为学生首次接触基本编程概念的工具。

您被称为软件考古学家。 这是否意味着您携带牛鞭并像信息技术印第安纳·琼斯一样追逐文物?
我找到了 计算机历史博物馆 [位于加利福尼亚州山景城] 的董事会,并告诉他们他们也应该建立一个软件博物馆。 如果我们无法访问例如 Word 的原始源代码,这将是一件可悲的事情……[对于]……后代来说。 我找不到 [IBM 大型机操作系统] 的原始源代码; 甚至 IBM 也没有。 很难访问其中一些软件,因为它具有专有性,并且企业不希望竞争对手看到它。 我们正在对软件进行考古挖掘,以便后代可以研究它并加以改进。

© . All rights reserved.