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

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

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

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


当前回答

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

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

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

其他回答

我认为笔记本电脑是在1980年左右发明的,我还认为笔记本电脑和便携式计算机的发展改变了很多人的生活——尤其是那些在IT行业工作的人,或者那些使用电脑和旅行的人。

我喜欢把它叫做互联网

回答“为什么新思想会消亡”和“如何应对”这两个问题?

I suspect a lot of the lack of progress is due to the massive influx of capital and entrenched wealth in the industry. Sounds counterintuitive, but I think it's become conventional wisdom that any new idea gets one shot; if it doesn't make it at the first try, it can't come back. It gets bought by someone with entrenched interests, or just FAILs, and the energy is gone. A couple examples are tablet computers, and integrated office software. The Newton and several others had real potential, but ended up (through competitive attrition and bad judgment) squandering their birthrights, killing whole categories. (I was especially fond of Ashton Tate's Framework; but I'm still stuck with Word and Excel).

怎么办呢?首先想到的是Wm。莎士比亚的建议:“让我们杀了所有的律师。”但恐怕他们现在装备太精良了。实际上,我认为最好的选择是找到某种开源计划。它们似乎比其他选择更好地保持可访问性和增量改进。但是这个行业已经变得足够大了,所以某种有机的合作机制是必要的。

I also think that there's a dynamic that says that the entrenched interests (especially platforms) require a substantial amount of change - churn - to justify continuing revenue streams; and this absorbs a lot of creative energy that could have been spent in better ways. Look how much time we spend treading water with the newest iteration from Microsoft or Sun or Linux or Firefox, making changes to systems that for the most part work fine already. It's not because they are evil, it's just built into the industry. There's no such thing as Stable Equilibrium; all the feedback mechanisms are positive, favoring change over stability. (Did you ever see a feature withdrawn, or a change retracted?)

关于SO的另一个讨论线索是臭鼬工厂综合症(参考:Geoffrey Moore):在大型组织中,真正的创新几乎总是(90%以上)出现在自发出现的未经授权的项目中,这些项目完全由个人或小团队的主动性推动(通常会受到正式的管理等级的反对)。所以:质疑权威,反抗体制。

多代理系统。

你可以回到分布式人工智能的根源,我认为仍然可以安全地呆在80年代。

多智能体系统有很多组成部分,有很多研究涉及语言行为或合作,所以很难指出并说“看,这里,这是不同的,创新的和重要的!”但我还是会试试的。: -)

我认为信念-欲望-意图模型尤其值得注意。智能体在内部构建了世界的模型。他们有特定的愿望或目标,并制定计划,如何与他们所知道的世界互动,以实现这些目标,从而形成意图。

或者打个比方,电影《创》(Tron)中的角色对他们周围的世界是如何运作的有一定的了解。他们不了解整个世界,他们可能会对世界的某些部分产生误解。但他们有愿望和目标,他们提出了进一步实现目标的计划。如果你看过《创》,我相信你会有类似的感觉。

它还没有对计算机产生太大的影响。但是,你看,那些对计算机产生影响的东西似乎需要几十年的时间。参见:OOP, GC,字节码编译。

1980年1月2日我开始编程。我试着思考在我的职业生涯中有哪些重大的新发明。我很难想出一个。大多数我认为重要的东西实际上是在1980年之前发明的,但直到1980年之后才被广泛采用或改进。

Graphical User Interface. Fast processing. Large memory (I paid $200.00 for 16k in 1980). Small sizes - cell phones, pocket pc's, iPhones, Netbooks. Large storage capacities. (I've gone from carrying a large 90k floppy to an 8 gig usb thumb drive. Multiple processors. (Almost all my computers have more than one now, software struggles to keep them busy). Standard interfaces (like USB) to easily attach hardware peripherals. Multiple Touch displays. Network connectivity - leading to the mid 90's internet explosion. IDE's with Intellisense and incremental compiling.

虽然硬件有了巨大的进步,但软件行业一直在努力跟上。我们比1980年领先了几光年,但大多数改进都是改进,而不是发明。自1980年以来,我们一直忙于应用技术进步,而不是发明创造。就其本身而言,这些渐进式的发明大多不重要或不强大,但当你回顾过去29年,它们相当强大。

我们可能需要接受渐进式的改进并引导它们。我相信真正原创的想法可能会来自很少接触计算机的人,而且他们越来越难找到。