这个问题来自于对过去50年左右计算领域各种进展的评论。

其他一些与会者请我把这个问题作为一个问题向整个论坛提出。

这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。

我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”


当前回答

采用面向对象。

这个想法早前就出现了(例如Simula),但在20世纪90年代成为主流。(恕我直言,它最大的好处之一是在开发人员之间提供了一个通用的词汇表,所以它的广泛采用使它更有价值。)

其他回答

函数式编程研究者对单子的重新发现。单子有助于让一种纯粹的、懒惰的语言(Haskell)成为一种实用的工具;它还影响了组合子库的设计(一元解析器组合子甚至在Python中找到了自己的方式)。

Moggi的“程序模块的范畴理论解释”(1989)通常被认为是将单子引入有效计算的观点;Wadler的作品(例如,“命令式函数式编程”(1993))将单子作为实用工具。

除了硬件创新之外,我倾向于发现太阳底下几乎没有新的东西。大多数真正伟大的想法都可以追溯到冯·诺依曼和艾伦·图灵这样的人。

如今,许多被贴上“技术”标签的东西实际上只是某人编写的程序或库,或者是用新的隐喻、首字母缩写或品牌名称对旧思想进行翻新。

软件:

虚拟化和仿真 P2P数据传输 社区驱动的项目,如维基百科、SETI@home…… 网络爬行和网络搜索引擎,即索引信息分布在世界各地

硬件:

模块化PC 电子纸

什么都没有。

我认为这是因为人们改变了他们的态度。人们过去相信,只要找到“好点子”,就能一夜暴富。如今,人们相信,回报最大的是执行过程,而不是发现过程。你有诸如“想法一毛钱一打”和“第二只老鼠得到奶酪”这样的咒语。因此,人们专注于开发现有的想法,而不是想出新的想法。

过去30年里处理器速度的大幅提升不容忽视。各种聪明的想法,如流水线和抢占式分支,以及处理器设计电子方面的改进,意味着今天的程序员可以更多地担心程序的设计和可维护性,而不必担心计算时钟周期。