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

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

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

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


当前回答

收缩包装软件

在1980年以前,软件大多是专门编写的。如果你经营一家企业,想要计算机化,你通常会有一台计算机、编译器和数据库,然后自己写东西。业务软件通常是为适应业务实践而编写的。这并不是说没有固定的软件(我在1980年之前使用SPSS),但这不是常态,我看到的往往是基础设施和研究软件。

现在,你可以去电脑商店,在货架上找到经营小生意所需的一切。它的设计并不是为了无缝地适应您曾经拥有的任何实践,但是一旦您学会或多或少地按照它的工作流程工作,它就会很好地工作。像SAP和仁科(PeopleSoft)这样的大企业比过去更接近于收缩包装。

这并不是一个彻底的突破,但在1980年之后,有一个非常明确的转变,从昂贵的定制软件到低成本的现成软件,灵活性从软件转移到业务流程。

它还影响了软件的经济性。定制软件解决方案可以盈利,但无法规模化。你只能向一个客户收取这么多钱,你不能把同样的东西卖给多个客户。使用收缩包装软件,你可以卖出很多很多相同的东西,在一个非常大的销售基础上摊销开发成本。(你必须提供支持,但这是有限度的。就当这是销售软件的边际成本吧。)

Theoretically, where there are big winners from a change, there are going to be losers. So far, the business of software has kept expanding, so that as areas become commoditized other areas open up. This is likely to come to an end sometime, and moderately talented developers will find themselves in a real crunch, unable to work for the big boys and crowded out of the market. (This presumably happens for other fields; I suspect the demand for accountants is much smaller than it would be without QuickBooks and the like.)

其他回答

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

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

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

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

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

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

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

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

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

我相信单元测试、TDD和持续集成是1980年之后的重大发明。

我认为没有什么重要的东西被发明出来。但自80年代以来,人们对软件的看法发生了很大变化。那时有更多的理论家参与其中,现在你在一个程序员论坛上问这个问题。

当时的大多数想法都没有得到实施,或者即使实施了,它们也没有任何真正的重要性,因为当时的软件行业还不存在,市场营销、人力资源、开发阶段或alpha版本也不存在:)。

Another reason for this lack of inventions is the fact that most people use Windows:) dont get me wrong, i do hate M$, but look at it this way: you have a perfectly working interface, with nothing new to add to it, maybe just some new colored buttons. Its also closed enough so you wont be able to to anything with it without breaking it. Thats why i prefer open apps, this way you get more "open" people, to whom yo can actually talk, ask then questions, propose new ideeas that actually gets implemented, or at least put on an open todo-list, thus you get some kind of "evolution". You dont really see anything new because you are stuck with the same basic interface "invented" lots of years ago... did anyone actually tried ION window-manager in a production environment? It has a new kind of interface, and actually lets you do things faster, event it it looks quirky

M$, Adobe..you name it,holds lots of patents so you wont be able to base your work on them, or derivatives(you also wont know what kind of undeveloped tehnologies they hold). Look at MP3 and GIF as examples( i belive that they are both free formats now, but they are also kinda dead..) MP3 is the 'king' of audio evend if there are few algorithms out there much better that it..but didnt get enough traction because they weren't pushed on the consumer market. The GIF... come on, 256 colors??? From this point of voew i'm curios how many people from this thread are working on something "open" that will get to be reused in some other projects, and how many on "closed", protected by NDA's projects?

即使这听起来有点像“免费的威利”,但在80年代,软件是免费的,所有东西都有文档,所有硬件都更简单,更容易使用……同时也更加有限,所以人们并没有浪费时间去执行3d游戏或网页,而是致力于真正的算法。

Eclipse IDE

将Smalltalk这样的IDE带给大众;)

Ctrl-C + Ctrl-V + Ctrl-X组合:)