这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
当前回答
Damas-Milner type inference (often called Hindley-Milner type inference) was published in 1983 and has been the basis of every sophisticated static type system since. It was a genuinely new idea in programming languages (admitted based on ideas published in the 1970s, but not made practical until after 1980). In terms of importance I put it up with Self and the techniques used to implement Self; in terms of influence it has no peer. (The rest of the OO world is still doing variations on Smalltalk or Simula.)
类型推断的变化仍在上演;我最喜欢的变体是Wadler和Blott的解决重载的类型类机制,后来发现它为类型级别的编程提供了非常强大的机制。这个故事的结局还在书写中。
其他回答
Eclipse IDE
将Smalltalk这样的IDE带给大众;)
互联网。
就是这样。
前提:自1980年以来几乎没有新发明。
要做的第一件事是定义发明,否则你就会误入歧途。Dictionary.com对发明的第二个定义是:
美国专利法。一种新的、有用的工艺、机器、改进等,以前不存在,被认为是某种独特的直觉或天才的产物,区别于普通的机械技能或工艺。
因此,自1980年以来,计算机领域的新发明很少。都发生了什么?显然,有大量的新技术和新事物出现,但它们是什么呢?
我们不再发明了,我们只是在改进已经存在的东西。
举个简单的例子:
光盘最早出现于1977年,但直到1982年才被业界接受。此时,第一家刻录cd的工厂刚刚准备就绪。最终,到1985年,CD-ROM(只读存储器)被接受为一种媒介。5年后,CD-RW问世。(来源:维基百科)
现在怎么办呢?好吧,考虑到我们有更大的硬盘驱动器(仍然只是在范式上的改进),我们需要更多的空间来取代VHS市场,使视频与计算机兼容。于是就有了DVD,尽管我删去了对现有CD技术的许多改进。
DVD是在1995年被“发明”出来的。(来源:维基百科)
从那时起,我们有:
可写dvd和可重写dvd 双层dvd 三层和四层dvd(尚未发布,但通过简单的驱动程序修订是可行的) hd - dvd 蓝光光盘
显然,这个列表并不包括所有的内容。但是注意新发明,记住我上面给出的定义,在那个列表中。你不能!它们都是光盘概念的变体,都是相同硬件的变体,都是现有软件的变体。
WHY?
成本。你看,对现有产品进行渐进式改进在经济上更便宜。如果我可以卖给你一张HD DVD或蓝光光盘,因为你认为它是必要的或很酷,那么我就没有必要发布我的三层或四层DVD计划。事实上,我可以收取很高的费用来获得新技术,因为您是早期采用者,您需要我的“新的和改进的!”硬件。
这就是所谓的市场营销或产品关系。
但是软件呢?
怎么了?在1980年之前,有很多软件创新在进行,但从那以后,它主要只是对已经存在的东西进行改进或重新发明轮子。看看任何操作系统或办公软件包就知道了。
结论
As far as I'm concerned, there have been virtually no new inventions in the past 29 years. I could wax long and cross a great many industries, but why should I bother? Once you start thinking about it, and start comparing an "invention" to a prior, similar product ... you'll find it is so similar that it isn't even funny. Even the internal combustion engine has been around since 1906 with no new inventions in that field since then; many improvements and variations of this "wheel" yes, but no new inventions.
甚至连美国在伊拉克部署的新武器——利用微波让人感到震惊,就像触摸灯泡一样——都不是新武器。同样的想法被用于安全系统,然后被分类并退出市场,用超声波让入侵者感到身体不适。这是一种定向形式的武器,具有不同的波长和应用,不是一项新发明。
也许是从客户端服务器到点对点的转变。我讨厌整个云/SAS的原因之一是,它是一种客户端/服务器的回归。
我口袋里有VAX你却让我假装是VT-100?
为了开始思考这个问题,我需要一个关于“创新”意味着什么的模型。
我所见过的最好的模式是技术采用生命周期。你可以在这篇维基百科文章中得到一个概述。
利用这个模型,我开始问自己……软件本身处于生命周期的哪个阶段?我们可以把“软件”看作一种不同于机械的技术,这种技术可以一直追溯到巴贝奇(Babbage),或者更准确地说,追溯到Ada Lovelace夫人。
但至少在1951年之前,它仍然处于非常早期的开拓阶段。这是编程计算机“商业化”的一年,即销售计算机产品的模型,并制造大量该模型的单元。我在想Univac卖给人口普查局的那台机器。
从1951年到1985年,软件创新层出不穷。它们主要与将计算的范围扩展到一个更广阔的领域有关。与此同时,大规模营销和大规模生产不断降低入门成本,直到苹果和IBM-PC使可编程设备成为一种常见的设备。
在1980年到1985年之间,我认为软件从创新者的领域过渡到“早期大多数”领域。抱歉,伙计们,这让你们所有参与MS-DOS, Mac, Windows, c++和Java早期的大多数人而不是创新者。这并不妨碍你在自己的领域和自己的项目中进行重大创新。这只是意味着这个领域本身已经从最早的阶段发展起来了。
虽然互联网的前身早在20世纪70年代就出现了,但直到阿尔·戈尔发明了互联网(抱歉),人们才开始上网。在那个阶段,软件从早期的主流变成了晚期的主流。正如钟形曲线的顶部所显示的那样,这种变化是微妙的。并非所有商店都同时从早期多数转变为晚期多数。
我认为软件还没有完全进入“落后”阶段,但我认为真正的创新者正在解决今天在不同战线上产生进步的问题。
我能想到的两个方面是生物工程和信息设备。这两个领域都需要软件,但主要的推力不是软件创新。它正在把软件应用到未知领域。可能还有很多我不知道的战线。