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

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

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

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


当前回答

在人机交互中使用物理学提供了另一种可理解的隐喻。这与手势和触觉相结合,很可能会取代70年代发明的、从80年代中后期开始普遍使用的当前常见GUI隐喻。

1980年的计算能力还不足以让这成为可能。我相信游戏可能引领了这一方向。iPod Touch/iPhone中的列表滚动交互便是一个很好的例子。交互机制依赖于动量和摩擦如何在现实世界中工作的直觉,以提供滚动项目列表的简单方法,而可用性依赖于导致滚动的物理手势。

其他回答

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

让我们看看,连接机器(大规模并行)就是其中之一。

不管怎样,这整个问题似乎是艾伦·凯的自大狂,因为他发明了一切。

有一件事让我吃惊,那就是简陋的电子表格。非程序员的人用一个简单的公式网格就可以为现实世界的问题构建狂野而奇妙的解决方案。在桌面应用程序中复制他们的努力通常需要比编写电子表格多10到100倍的时间,最终的应用程序通常更难使用,充满bug !

我相信电子表格成功的关键是自动依赖分析。如果电子表格的用户被迫使用观察者模式,他们就没有机会得到正确的结果。

因此,最大的进步是自动依赖分析。现在,为什么没有任何现代平台(Java, .Net, Web Services)将其构建到系统的核心中呢?特别是在一个通过并行化扩展的时代——依赖关系图导致并行重新计算变得微不足道。

编辑:我刚查过。VisiCalc发布于1979年——让我们假设它是1980年后的发明。

Edit2:似乎艾伦已经注意到了电子表格——如果让他来这个论坛的问题是正确的!

有效的并行化和量子计算——我认为这是两个已经取得进展的领域,而且还将取得更大的进展,从而使我们对计算能力的使用发生重大变化。

有效的并行化意味着在不需要特殊编程技术的情况下并行和分布处理,但将其内置到编译器/框架中。

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

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

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等等。我们有没有试过测量这个?我们到底想测量什么?正确性,程序员的生产力,代码的易读性等等?如何?软件工程确实应该着手解决这些问题,但我还没有看到。