这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
这个问题来自于对过去50年左右计算领域各种进展的评论。
其他一些与会者请我把这个问题作为一个问题向整个论坛提出。
这里的基本思想不是抨击事物的现状,而是试图理解提出基本新思想和原则的过程。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
当前回答
不确定1980年的情况,但人工智能社区几十年来一直是一个创意生成器,他们仍然在做。
其他回答
我认为我们看待这个问题的方式是错误的,得出的结论也是错误的。如果我做对了,循环就会变成:
理念->首次实施->少数人采用->临界质量->商品产品
从最初的想法到商品,你通常会经历几个世纪,假设这个想法能走到那个阶段。达·芬奇可能在1493年就画出了某种直升机,但他花了大约400年的时间才制造出一架能够自己飞离地面的实际机器。
从1580年威廉·伯恩对潜艇的第一次描述到1800年的第一次实施,你有220年的时间,而目前的潜艇仍处于起步阶段:我们几乎对水下旅行一无所知(地球上三分之二的地方都在海底,想想潜在的房地产;)
而且不可能没有更早,更早的想法,只是我们从未听说过。根据一些传说,亚历山大大帝在公元前332年使用了某种潜水钟(这是潜艇的基本概念:一种在海底运送人员和空气供应的装置)。算上这一点,我们从想法(甚至只有一个基本的原型)到生产产品需要2000年的时间。
我想说的是,在1980年之前,那些甚至都不是想法的实现,更不用说产品了……我敢打赌,“快速排序”算法是由中国古代某个无名档案管理员使用的。那又怎样?
当然,40年前就有了联网的计算机,但那无法与今天的互联网相比。基本的理念/技术是存在的,但不管怎样你都不能在线玩《魔兽》游戏。
我认为我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要而有力的想法。如果我们真的找不到他们,那么我们应该问“为什么?”和“我们应该做什么?”
从历史上看,我们从来没有能够如此快速地“找到它们”。我认为这个周期正变得越来越快,但计算技术仍然非常年轻。
目前,我正试图弄清楚如何制作全息图(星球大战那种,没有任何物理支持)。我想我知道该怎么做了。我甚至还没有收集工具、材料和资金,即使我在某种程度上取得了成功,实际的想法也已经有几十年的历史了,至少相关的实现/技术已经被使用了很长时间。
一旦你开始列出实际的产品,你就可以相当肯定概念和最初的实现在一段时间前就已经存在了。没关系。
你可能会以某种理由争辩说,从来没有什么是新的,或者一切都是新的,总是如此。这就是哲学,两种观点都有道理。
从实践的观点来看,真理介于两者之间。真理不是二进制概念,布尔逻辑是该死的。
中国人也许早在很久以前就发明了印刷机,但大多数人能够在家以合理的价格打印出像样的彩色照片也不过10年的时间。
发明无处不在,这取决于你的标准和参照系。
我认为自20世纪80年代以来发明的最好的想法将是我们不知道的。要么是因为它们很小,无处不在,以至于不引人注意,要么是因为它们的受欢迎程度还没有真正起飞。
前者的一个例子是单击并拖动以选择文本的一部分。我相信这是1984年首次出现在麦金塔电脑上。在此之前,您有单独的按钮用于选择选择的开始和结束。相当繁重。
后者的一个例子是(可能是)可视化编程语言。我不是说像hypercard,我是说像Max/MSP, Prograph, Quartz Composer, yahoo pipes等。目前它们确实是小众的,但我认为,除了思想分享之外,没有什么能阻止它们像标准编程语言一样具有表现力和强大的功能。
可视化编程语言有效地加强了引用透明性的函数式编程范式。这对于代码来说是一个非常有用的属性。他们执行这一点的方式也不是人为的——这只是由于他们使用的比喻。
VPL让那些本来不会编程的人也能编程,比如有语言障碍的人,比如阅读困难的人,甚至只是需要简单节省时间的门外汉。专业程序员可能会对此嗤之以鼻,但就我个人而言,我认为如果编程成为一种真正无处不在的技能,就像识字一样,那就太好了。
就目前来看,VPL只是一个小众的兴趣,还没有真正成为主流。
我们应该做些什么不同的事情
all computer science majors should be required to double major- coupling the CS major with one of the humanities. Painting, literature, design, psychology, history, english, whatever. A lot of the problem is that the industry is populated with people that have a really narrow and unimaginative understanding of the world, and therefore can't begin to imagine a computer working any significantly differently than it already does. (if it helps, you can imagine that I'm talking about someone other than you, the person reading this.) Mathematics is great, but in the end it's just a tool for achieving. we need experts who understand the nature of creativity, who also understand technology.
But even if we have them, there needs to be an environment where there's a possibility that doing something new would be worth the risk. It's 100 times more likely that anything truly new gets rejected out of hand, rather viciously. (the newton is an example of this). so we need a much higher tolerance for failure. We should not be afraid to try an idea which has failed in the past. We should not fully reject our own failures- and we should learn to recognize when we have failed. We should not see failure as a bad thing, and so we shouldn't lie to ourselves or to others about it. We should just get used to it, because it is just about the only constant in this ever changing industry. Post mortems are useful in this regard.
One of the more interesting things, about smalltalk, I think, was not the language itself, but the process that was used to arrive at the design of smalltalk. The iterative design process, going through many many revisions- But also very carefully and critically identifying the flaws of the existing system, and finding solutions in the next one. The more perspectives, and the broader the perspectives we have on the situation, the better we can judge where the mistakes and problems are. So don't just study computer science. Study as many other academic subjects as you can get yourself to be interested in.
自由软件基金会(成立于1985年)
即使你不是他们哲学的全心全意的支持者,他们一直在推动的理念,自由软件,开源已经对软件行业和一般内容产生了惊人的影响(例如维基百科)。
开源社区开发。
设计模式使计算机科学更接近计算机工程。 GPS和互联网地址查找基于位置的交互。 面向服务的体系结构。