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

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

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

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


当前回答

为了开始思考这个问题,我需要一个关于“创新”意味着什么的模型。

我所见过的最好的模式是技术采用生命周期。你可以在这篇维基百科文章中得到一个概述。

利用这个模型,我开始问自己……软件本身处于生命周期的哪个阶段?我们可以把“软件”看作一种不同于机械的技术,这种技术可以一直追溯到巴贝奇(Babbage),或者更准确地说,追溯到Ada Lovelace夫人。

但至少在1951年之前,它仍然处于非常早期的开拓阶段。这是编程计算机“商业化”的一年,即销售计算机产品的模型,并制造大量该模型的单元。我在想Univac卖给人口普查局的那台机器。

从1951年到1985年,软件创新层出不穷。它们主要与将计算的范围扩展到一个更广阔的领域有关。与此同时,大规模营销和大规模生产不断降低入门成本,直到苹果和IBM-PC使可编程设备成为一种常见的设备。

在1980年到1985年之间,我认为软件从创新者的领域过渡到“早期大多数”领域。抱歉,伙计们,这让你们所有参与MS-DOS, Mac, Windows, c++和Java早期的大多数人而不是创新者。这并不妨碍你在自己的领域和自己的项目中进行重大创新。这只是意味着这个领域本身已经从最早的阶段发展起来了。

虽然互联网的前身早在20世纪70年代就出现了,但直到阿尔·戈尔发明了互联网(抱歉),人们才开始上网。在那个阶段,软件从早期的主流变成了晚期的主流。正如钟形曲线的顶部所显示的那样,这种变化是微妙的。并非所有商店都同时从早期多数转变为晚期多数。

我认为软件还没有完全进入“落后”阶段,但我认为真正的创新者正在解决今天在不同战线上产生进步的问题。

我能想到的两个方面是生物工程和信息设备。这两个领域都需要软件,但主要的推力不是软件创新。它正在把软件应用到未知领域。可能还有很多我不知道的战线。

其他回答

一些回答提到了量子计算机,好像它们还在遥远的未来,但我不敢苟同。

There were vague mentions of possibility of quantum computers in 1970s and 1980s (see timeline on Wikipedia), however the first "working" 3-qubit NMR quantum computer was built in 1998. The field is still in infancy, and almost all progress is still theoretical and confined to academia, but in 2007 company called D-Wave Systems presented a prototype of a working 16-qubit, and later during the year 28-qubit adiabatic quantum computer. Their effort is notable since they claim that their technology is commercially viable and scalable. As of 2010, they have 7 rigs, current generation of their chips has 128 qubits. They seem to have partnered with Google to find interesting problems to test their hardware on.

我推荐这段简短的24分钟视频和维基百科上关于D-Wave的文章作为快速概述,在这个由D-Wave创始人和首席财务官撰写的博客上有更多的资源。

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

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

标签,信息分类的方式。是的,就是每个问题下面的小方框。

令人惊讶的是,标签发明花了大约30年的时间。我们使用了目录和目录;我们使用了为印刷书籍优化的东西。

然而,30年比人们意识到印刷书籍可以用更小的格式的时间短得多。人们可以把书放在手里。

我认为核心CS玩家低估了标签概念。所有的研究都集中在自然语言处理(自顶向下的方法)。但是标签是第一种计算机和人类都能很好理解的语言。这是一种自底向上的方法,使计算机使用自然语言。

上世纪八十年代初,施乐帕洛阿尔托研究中心对计算机蠕虫进行了研究。

摘自John Shoch和Jon Hupp的“蠕虫”程序——分布式计算的早期经验”(ACM通讯,1982年3月,第25卷第3期,172-180页,1982年3月):

In The Shockwave Rider, J. Brunner developed the notion of an omnipotent "tapeworm" program running loose through a network of computers - an idea which may seem rather disturbing, but which is also quite beyond our current capabilities. The basic model, however, remains a very provocative one: a program or a computation that can move from machine to machine, harnessing resources as needed, and replicating itself when necessary. In a similar vein, we once described a computational model based upon the classic science-fiction film, The Blob: a program that started out running in one machine, but as its appetite for computing cycles grew, it could reach out, find unused machines, and grow to encompass those resources. In the middle of the night, such a program could mobilize hundreds of machines in one building; in the morning, as users reclaimed their machines, the "blob" would have to retreat in an orderly manner, gathering up the intermediate results of its computation. Holed up in one or two machines during the day, the program could emerge again later as resources became available, again expanding the computation. (This affinity for nighttime exploration led one researcher to describe these as "vampire programs.")

引用艾伦·凯的话:“预测未来最好的方法就是创造未来。”

声明性编程。

1979年,“计算机程序”势在必行。程序员应该指导编译器做什么和怎么做。(N1)

今天,ASP。NET WebForms和WPF程序员经常在不知道或不关心它将如何实现的情况下编写代码。维基百科还有其他不那么主流的例子。此外,所有sgml派生的“标记”语言都是声明性的,我怀疑1979年的许多程序员是否能预测到它们在30年后的重要性或普遍性。

尽管声明式编程的概念在1980年之前就存在了(参见这篇1975年的论文),但它的发明是在1985年Caml的引入(有争议)或1990年Haskell的引入(争议较少)时出现的。从那时起,声明式编程越来越受欢迎。而且,当大规模多核处理器最终到来时,我们都将成为声明式程序员。

-- 注: 我不能直接证明这一点,因为1979年我还是个胎儿。 从其他答案来看,人们似乎混淆了概念和发明。达·芬奇构想了直升机,但他没有发明它。这个问题是关于计算机发明的。 请不要在评论中提到Prolog (rel. 1975),除非你真的用它开发了一个应用程序。