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

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

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

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


当前回答

我认为我们看待这个问题的方式是错误的,得出的结论也是错误的。如果我做对了,循环就会变成:

理念->首次实施->少数人采用->临界质量->商品产品

从最初的想法到商品,你通常会经历几个世纪,假设这个想法能走到那个阶段。达·芬奇可能在1493年就画出了某种直升机,但他花了大约400年的时间才制造出一架能够自己飞离地面的实际机器。

从1580年威廉·伯恩对潜艇的第一次描述到1800年的第一次实施,你有220年的时间,而目前的潜艇仍处于起步阶段:我们几乎对水下旅行一无所知(地球上三分之二的地方都在海底,想想潜在的房地产;)

而且不可能没有更早,更早的想法,只是我们从未听说过。根据一些传说,亚历山大大帝在公元前332年使用了某种潜水钟(这是潜艇的基本概念:一种在海底运送人员和空气供应的装置)。算上这一点,我们从想法(甚至只有一个基本的原型)到生产产品需要2000年的时间。

我想说的是,在1980年之前,那些甚至都不是想法的实现,更不用说产品了……我敢打赌,“快速排序”算法是由中国古代某个无名档案管理员使用的。那又怎样?

当然,40年前就有了联网的计算机,但那无法与今天的互联网相比。基本的理念/技术是存在的,但不管怎样你都不能在线玩《魔兽》游戏。

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

从历史上看,我们从来没有能够如此快速地“找到它们”。我认为这个周期正变得越来越快,但计算技术仍然非常年轻。

目前,我正试图弄清楚如何制作全息图(星球大战那种,没有任何物理支持)。我想我知道该怎么做了。我甚至还没有收集工具、材料和资金,即使我在某种程度上取得了成功,实际的想法也已经有几十年的历史了,至少相关的实现/技术已经被使用了很长时间。

一旦你开始列出实际的产品,你就可以相当肯定概念和最初的实现在一段时间前就已经存在了。没关系。

你可能会以某种理由争辩说,从来没有什么是新的,或者一切都是新的,总是如此。这就是哲学,两种观点都有道理。

从实践的观点来看,真理介于两者之间。真理不是二进制概念,布尔逻辑是该死的。

中国人也许早在很久以前就发明了印刷机,但大多数人能够在家以合理的价格打印出像样的彩色照片也不过10年的时间。

发明无处不在,这取决于你的标准和参照系。

其他回答

成功地将不同的编程范例集成到单一的编程环境中。

(对我来说)这方面的范例是Mozart/Oz编程系统,它将函数式、面向对象、逻辑、并发和分布式编程机制集成为一个连贯的整体。不过还有其他的例子。

自1980年以来,关于社会计算的想法已经取得了进展。油井工程始于1985年。虽然我确信以前有在线社区,但我相信该领域的一些真正的见解发生在1980年之后。社会社区的不利动态方面及其在软件系统上的交互很像塔科马海峡大桥的灾难。

我认为Clay Shirky在该领域的工作阐明了这些影响以及如何减轻它们。我想说,社交软件洞察力的有趣的现实世界的例子包括reCAPTCHA和维基百科,其中重要的有价值的工作是由软件调解的参与者完成的。

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

我没有资格在一般意义上回答这个问题,但仅限于计算机编程?并不多。

为什么?我思考这个问题已经有一段时间了,我认为我们缺少两样东西:历史感和客观评价我们所创造的一切的方法。并非所有情况都是这样,但大体上是这样。

For history, I think it's just something not emphasized enough in popular writing or computer science programs. Take language features, for example. A canonical source might be HOPL, but it's definitely not common knowledge among programmers to be able to mark the point in time or in which language a feature like GC or closures first appeared. And of course after that there's knowledge of progression over time: how has OOP changed since Simula? Compare and contrast our sense of history with that of other fields like maybe political science or philosophy.

至于判断,这确实是我们寻求成功的客观衡量标准的失败。给定foobar,它以什么可衡量的方式改进了编程行为中的某些方面,其中foobar是任何设计模式,敏捷方法,TDD等等。我们有没有试过测量这个?我们到底想测量什么?正确性,程序员的生产力,代码的易读性等等?如何?软件工程确实应该着手解决这些问题,但我还没有看到。

我还会推荐3D鼠标。从20世纪90年代初开始就有几种变体。对于任何使用3D的人来说,像spacenavator这样的东西让生活变得更容易。(免责声明:我与3Dconnexion没有任何关系,只是一个满意的无rsi用户。)