这个问题源于对过去50年左右的各种计算进展的评论。
其他一些参与者要求我将其作为整个论坛的一个问题提出。
这里的基本思想不是抨击事物的当前状态,而是试图了解有关提出基本的新思想和新原理的进展的一些信息。
我声称在大多数计算领域中我们确实需要新的想法,并且我想知道最近做过的任何重要而强大的想法。如果我们找不到它们,那么我们应该问“为什么?” 和“我们应该怎么做?”
这个问题源于对过去50年左右的各种计算进展的评论。
其他一些参与者要求我将其作为整个论坛的一个问题提出。
这里的基本思想不是抨击事物的当前状态,而是试图了解有关提出基本的新思想和新原理的进展的一些信息。
我声称在大多数计算领域中我们确实需要新的想法,并且我想知道最近做过的任何重要而强大的想法。如果我们找不到它们,那么我们应该问“为什么?” 和“我们应该怎么做?”
Answers:
互联网本身早于1980年,但蒂姆·伯纳斯·李(Tim Berners-Lee)提出并实施的万维网(“通过简单机制的分布式超文本”)始于1989/90年。
尽管超文本的想法早已存在(Nelson的Xanadu曾尝试实现分布式方案),但是WWW是实现分布式超文本系统的一种新方法。Berners-Lee以强大且易于实现的方式将简单的客户端-服务器协议,标记语言和寻址方案相结合。
我认为大多数创新都是通过以原始方式重新组合现有作品而产生的。WWW的每个部分以前都以某种形式存在,但是这种组合只有在事后才很明显。
而且我确定您现在正在使用它。
自由软件基金会(成立于1985年)
即使您不是他们的哲学的全心全意的支持者,他们所倡导的自由软件,开放源代码的思想也对软件行业和整个内容(例如Wikipedia)产生了惊人的影响。
我认为可以公平地说,在1980年,如果您正在使用计算机,则要么为此而获得报酬,要么是一个极客……所以,发生了什么变化?
打印机和消费者级桌面出版。意味着您不需要印刷机即可生产大批量,高质量的印刷材料。那是很大的 -当然,如今,我们完全将其视为理所当然,而且大多数情况下,我们甚至都不必理会打印部分,因为每个人都在线。
颜色。说真的 彩色屏幕极大地改变了非极客对游戏和应用程序的认知。突然之间,游戏似乎不像是艰苦的工作,而更像是看电视,这为世嘉,任天堂,雅达利等人打开了大门,将消费者的游戏带入了家庭。
媒体压缩(MP3和视频文件)。还有很多东西-例如TiVO和iPod-我们不再真正将其视为计算机,因为它们无处不在且用户友好。但是他们是。
我认为,这里的共同点是曾经无法实现的任务(制作打印文档;准确地复制彩色图像;实时在世界各地发送消息;分发音频和视频材料),然后由于设备和物流而变得昂贵参与,并且现在处于消费者级别。那么-大型企业现在正在做些什么,过去曾经是不可能的,但是如果我们能找到如何以小而便宜的方式做的话,这可能会很酷?
任何仍涉及物理运输的事物都值得一看。视频会议还没有取代真正的会议(但是),但是如果使用了正确的技术,它仍然可以。完全感官的沉浸式环境可以消除一些休闲旅行–家庭影院是一个小例子;另一个是位于Soho办公楼中的“虚拟高尔夫球场”,您可以在模拟高尔夫球场上打18洞真正的高尔夫球。
但是对我而言,下一个真正重要的事情是制造。做东西。勺子,吉他和椅子,衣服,汽车,瓷砖和其他东西。仍然依赖于制造和分销基础架构的事物。我不必再去商店买电影或专辑了-不用再去商店买衣服和厨具了多长时间?
当然,OLED显示器,GPS和移动宽带以及IoC容器,脚本和“云”正在发生有趣的发展-但它们仍然只是将图片显示在屏幕上的新型方式。我可以打印自己的照片并编写自己的网页,但是我希望能够制造一个完全适合桌子旁边那个角落的亚麻篮,以及一个将吉他FX单元粘到桌子上的安装支架,以及其他东西。将手机夹在自行车车把上。
与编程无关吗?不...但是在1980年,声音制作都没有。或视频分发。或向赞比亚的亲戚发送消息。大胆思考,人们... :)
程序包管理和分布式修订控制。
这些软件开发和分发方式的模式是最近才出现的,并且仍在开始产生影响。
伊恩·默多克(Ian Murdock)称软件包管理为 “ Linux带给业界的最大的进步”。好吧,他会的,但是他有一点。自1980年以来,软件的安装方式已经发生了重大变化,但是大多数计算机用户仍然没有经历过这种变化。
Joel和Jeff 在Podcast#36中一直在谈论使用Eric Sink进行版本控制(或版本控制或源代码控制)。似乎大多数开发人员尚未赶上集中式系统,DVCS被普遍认为是神秘且不必要的。
来自Podcast 36笔录:
0:06:37
Atwood: ...如果您假设-这是一个很大的假设-大多数开发人员都已经有点掌握了基本的源代码控制-坦率地说,我发现这不是真的...
Spolsky: 不。大多数人,即使他们有,也是他们了解的签入,签出,但分支和合并却使他们困惑。
With distributed version control, the distributed part is actually not the most interesting part.
BitTorrent的。这完全颠覆了以前看来似乎是一成不变的规则-一个人通过Internet下载文件所花费的时间与下载该文件的人数成正比。它还以一种与解决方案本身有机的方式解决了以前的点对点解决方案的缺陷,特别是围绕“窃取”的缺陷。
BitTorrent巧妙地将通常是不利的一面(许多用户试图同时下载一个文件)变成了一个优点,即在下载过程中自然地将文件地理分布。其优化两个对等方之间的带宽使用的策略不鼓励窃取作为副作用-强制执行限制符合所有参与者的最大利益。
这是一旦被别人发明的想法之一,即使不是很明显也很简单。
Damas-Milner类型推断(通常称为Hindley-Milner类型推断)于1983年发布,自那时以来一直是每个复杂静态类型系统的基础。这是编程语言中的一个全新想法(基于1970年代发布的想法被接受,但直到1980年之后才变得实用)。在重要性方面,我提到了自我以及实现自我的技术。就影响力而言,它是无与伦比的。(其余的OO世界仍然在Smalltalk或Simula上进行变化。)
类型推断的变化仍在发挥作用。我最能挑出的变化是Wadler和Blott的用于解决重载的类型类机制,后来发现它为类型级别的编程提供了非常强大的机制。这个故事的结局仍在撰写中。
这是Google map-reduce的一个插件,不仅适用于自己,而且是Google在不可靠的商用机器上运行快速,可靠的服务的代理。这绝对是一项重要的发明,与大铁器大型机进行重量计算的方法完全不同,后者是1980年的风口浪尖。
标记,信息的分类方式。是的,每个问题下方的小方框文字。
惊人的发明标签花费了30年。我们使用了目录和目录。我们使用了针对印刷书籍进行了优化的内容。
但是,30年比人们意识到印刷书籍可以使用较小格式所需的时间短得多。人们可以将书放在手里。
我认为标记概念在核心CS专家中被低估了。所有研究都集中在自然语言处理(自上而下的方法)上。但是标记是计算机和人们都能很好理解的第一语言。这是一种使计算机使用自然语言的自下而上的方法。
我认为我们正在以错误的方式看待并得出错误的结论。如果我做对了,那么循环将进行:
想法->首次实施->少数群体采用->临界数量->商品
从最初的想法到商品,假设这个想法曾经实现到那个阶段,您通常都有几个世纪的经验。达·芬奇(Da Vinci)可能在1493年就画过某种直升机,但花了大约400年的时间才获得了能够将自己抬离地面的实际机器。
从威廉·伯恩(William Bourne)在1580年对潜水艇的首次描述到1800年的第一次实施,您已有220年的时间,目前的潜艇仍处于起步阶段:我们几乎不知道水下旅行的可能性(考虑到有2/3的行星在海底,想一想潜在的房地产;)。
并没有说没有更早,更早的想法是我们从未听说过的。根据一些传说,亚历山大大帝似乎在公元前332年使用了某种潜水钟(这是潜水艇的基本概念:一种将人员和空气供应带到海底的装置)。算上这一点,我们正在研究从构思(甚至具有基本的原型)到产品的2000年。
我的意思是说,今天寻找的实现方式,更不用说产品了,甚至在1980年之前都不是创意。。。所以呢?
当然,40年前就已经有了联网的计算机,但这与当今的Internet并没有什么不同。基本的想法/技术在那里,但是无论您不能在线玩魔兽游戏。
我声称在大多数计算领域中我们确实需要新的想法,并且我想知道最近做过的任何重要而强大的想法。如果我们找不到它们,那么我们应该问“为什么?” 和“我们应该怎么做?”
从历史上看,我们从未如此迅速地“发现”与该想法接近的事情。我认为周期正在越来越快,但是计算仍然还很年轻。
目前,我正在尝试弄清楚如何制作全息图(没有任何物理支持的“星球大战”)。我想我知道如何使其运作。我什至没有收集工具,材料,资金,但是即使我要取得任何程度的成功,实际的想法也已经有几十年的历史了,至少相关的实现/技术已经使用了很长时间。 。
一旦开始列出实际产品,您就可以肯定,概念和第一个实现已经存在了一段时间。没关系
您可能会出于某种原因而辩称,什么都没有新,或者什么都总是新。这是哲学,两种观点都可以辩护。
从实际角度看,真理介于两者之间。真理不是一个二进制概念,布尔逻辑是该死的。
中国人可能早就提出了印刷机的要求,但是大多数人才能够以合理的价格在家中打印出体面的彩色照片只有大约十年的时间。
发明无处不在,这取决于您的标准和参考框架。
Google的Page Rank算法。虽然可以将其视为对网络爬网搜索引擎的改进,但我要指出的是,它们也是1980年以后开发的。
DNS,1983年,以及诸如MX记录而不是爆炸路径的电子邮件主机解析之类的相关进步。*不寒而栗*
Zeroconf在2000 DNS之上工作。我将打印机插入网络,笔记本电脑看到了。我启动网络上的Web服务器,然后浏览器看到它。(假设他们广播了其可用性。)
基于Marzullo算法(1984)的NTP(1985)。抖动网络上的准确时间。
鼠标滚轮,1995年。使用没有鼠标的鼠标感觉很原始。不,这不是Engelbart团队想到的事情,也没有忘记提及。至少在我问当时在团队中的某人时没有。(这是在1998年左右的某个Engelbart活动中进行的。我必须处理其中的第一批小鼠。)
Unicode,1987年及其对不同类型的编码,规范化,双向文本等的依赖发展。
是的,人们每天使用这五种东西是很普遍的。
这些是“真正的新想法”吗?毕竟,有老鼠,有字符编码,有网络计时功能。告诉我如何区分“新”和“真的”,我将为您解答。我的直觉说,这些已经足够新了。
在较小的领域中,很容易获得最新的进展。例如,在生物信息学中,Smith-Waterman(1981),尤其是BLAST(1990)有效地使该领域成为可能。但这听起来像是您在征求在整个计算领域中广泛应用的想法,而那些低调的果实会首先被选中。因此总是有一个新领域。
数码相机呢?
根据Wikipedia的说法,第一款真正的数码相机出现在1988年,大众市场的数码相机在1990年代后期变得负担得起。
现代着色语言和现代GPU的普及。
GPU还是一种低成本的并行超级计算机,具有诸如CUDA和OpenCL之类的工具,可提供快速的高级并行代码。感谢所有那些降低了这些令人印象深刻的硬件奇迹的价格的游戏玩家。我希望在未来五年内,每售出一台新计算机(包括iPhone),都能够运行大规模并行代码作为基本假设,就像24位彩色或32位保护模式一样。
JIT编译是在1980年代后期发明的。
要解决关于“为什么新思想死了”和“怎么做”这两个问题?
我怀疑很多缺乏进展的原因是该行业大量资本涌入和财富根深蒂固。听起来有些违反直觉,但是我认为,任何新主意一枪都成为惯例。如果第一次尝试失败,就不会回来。它被有根深蒂固的利益的人买走,或者只是失败了,精力就消失了。几个例子是平板电脑和集成的办公软件。牛顿和其他几个人有真正的潜力,但最终(通过竞争性减员和错误的判断)浪费了自己的出生权,杀死了整个类别。(我特别喜欢Ashton Tate的Framework;但是我仍然坚持使用Word和Excel)。
该怎么办?首先想到的是Wm。莎士比亚的忠告:“让我们杀死所有律师。” 但是,恐怕现在他们的武器太全了。实际上,我认为最好的选择是找到某种开源计划。他们似乎比其他方法更好地维护了可访问性和增量改进。但是该行业已经足够大,因此需要某种有机的协作机制来吸引人们的注意力。
我还认为,有一种动态表明,根深蒂固的利益(尤其是平台)需要大量的变更-流失-才能证明持续的收入来源是合理的;并且吸收了很多本可以用更好的方式花费的创造力。看看我们花费了多少时间来进行Microsoft,Sun,Linux或Firefox的最新迭代,对大多数已经可以正常使用的系统进行更改。这不是因为它们是邪恶的,而是行业中内置的。没有稳定的平衡之类的东西。所有的反馈机制都是积极的,有利于改变而不是稳定性。(您是否看到某个功能被撤消,或撤消了更改?)
关于SO的另一条线索是Skunkworks综合征(参考:Geoffrey Moore):大型组织中的真正创新几乎总是(90%以上)出现在自发出现的未经授权的项目中,这些项目完全是由个人或小组发起的(并且经常会受到正式管理层次结构的反对)。因此:问题授权,取消系统。
令我惊讶的一件事就是谦虚的电子表格。非编程人员可以使用简单的公式来构建针对现实世界问题的疯狂而出色的解决方案。在台式机应用程序中复制他们的工作通常要比编写电子表格花费10到100倍的时间,因此生成的应用程序通常更难使用且充满错误!
我相信电子表格成功的关键是自动依赖性分析。如果电子表格的用户被迫使用观察者模式,那么他们将没有机会正确使用它。
因此,最大的进步是自动依赖性分析。现在,为什么没有任何现代平台(Java,.Net,Web服务)将其构建为系统的核心?尤其是在当今通过并行扩展的时代中,依存关系图导致并行重新计算变得轻而易举。
编辑:当-刚刚检查。VisiCalc于1979年发布-我们假装它是1980年以后的发明。
Edit2:看来Alan已经注意到了该电子表格-如果向他购买该论坛的问题是正确的!
软件:
虚拟化和仿真
P2P数据传输
社区驱动的项目,例如Wikipedia,SETI @ home ...
网络搜寻和网络搜索引擎,即索引遍布世界的信息
硬件:
模块化PC
电子纸
拆封软件
在1980年之前,软件大多是专门编写的。如果您经营一家公司并想进行计算机化,通常会得到一台计算机,编译器和数据库,并编写自己的东西。商业软件通常是为适应商业惯例而编写的。这并不是说没有固定软件(我在1980年前就曾与SPSS一起工作过),但这不是规范,我所看到的往往是基础架构和研究软件。
如今,您可以去一家计算机商店,在架子上找到经营一家小型企业所需的一切。它的设计目的不是无缝地适应您以前使用的任何实践,但是一旦您根据其工作流程学会了或多或少地工作,它就会很好地工作。像SAP和PeopleSoft这样的大型企业比以前更容易收缩包装。
这不是一个彻底的突破,但是在1980年之后,确实发生了从昂贵的定制软件到低成本现成软件的非常明显的转变,灵活性从软件转移到了业务流程。
它还影响了软件的经济性。定制软件解决方案可以带来利润,但无法扩展。您只能向一个客户收取这么多的费用,并且不能将同一件东西卖给多个客户。使用收缩包装软件,您可以出售很多相同的东西,从而在很大的销售基础上摊销开发成本。(您确实必须提供支持,但是可以扩展。只需将其视为销售软件的边际成本即可。)
从理论上讲,在变革中有大赢家的地方,就会有输家。到目前为止,软件业务一直在扩大,因此随着商品的商品化,其他领域也随之开放。这可能会在某个时候结束,而才华横溢的开发人员将发现自己陷入了真正的困境,无法为大男孩工作,并挤占了市场。(这大概发生在其他领域;我怀疑对会计师的需求比没有QuickBooks之类的情况要少得多。)
在硬件创新之外,我倾向于发现在阳光下几乎没有新事物。大多数真正伟大的想法都可以追溯到冯·诺依曼(von Neumann)和艾伦·图灵(Alan Turing)等人。
如今,许多被标记为“技术”的东西实际上只是某人编写的程序或库,或者是用新的隐喻,首字母缩写或品牌名称对旧观念进行的重读。
上世纪八十年代初期,在施乐帕洛阿尔托研究中心对计算机蠕虫进行了研究。
约翰·肖克(John Shoch)和乔恩·赫普(Jon Hupp)的作品 “蠕虫”程序-分布式计算的早期经验 ”(ACM通讯,1982年3月,第25卷第3期,第172-180页,1982年3月):
在《冲击波骑士》中,J. Brunner的 开发理念是通过计算机网络松散运行无所不能“绦虫”计划的概念-一个想法,似乎相当令人不安,但也远远超出我们目前的能力。但是,基本模型仍然是一个非常具有启发性的模型:可以在机器之间移动的程序或计算,可以根据需要利用资源,并在需要时进行自我复制。
同样,我们曾经描述过基于经典科幻电影《斑点》的计算模型:程序最初在一台机器上运行,但是随着其对计算周期的需求增加,它可以伸出援手,找到未使用的机器,并逐渐包含这些资源。在深夜,这种程序可以动员一栋大楼中的数百台机器。早晨,随着用户收回机器,“斑点”将必须有序地撤退,收集其计算的中间结果。白天,该程序会在一两台计算机中停顿下来,以后可能会在资源可用时再次出现该程序,从而再次扩大了计算范围。(这种对夜间探索的热爱使一位研究人员将其描述为“吸血鬼计划”。)
引用艾伦·凯(Alan Kay)的话:“预测未来的最佳方法是发明它。”
更好的用户界面。
今天的用户界面仍然很烂。我的意思不是小事,而是大而根本的事。我禁不住注意到,即使最好的程序仍然具有非常复杂的接口,或者需要以其他方式进行大量抽象思考的接口,而这些接口并没有接近传统的非软件工具的易用性。
当然,这是由于软件允许做更多的事情比传统工具。不过,这没有理由接受现状。此外,大多数软件根本做得不好。
通常,应用程序仍然缺乏某种“正当工作”的感觉,而这太多地取决于可以做什么,而不是应该做什么。节省的重点是一再提高的一点,但仍然没有解决。应用程序崩溃,破坏了工作时间。我习惯每隔几秒钟按一次Ctrl + S(当然,这在Web应用程序中不再起作用)。为什么我必须这样做?这真是令人麻木的愚蠢。显然,这是自动化的任务。当然,如果出现错误,应用程序还必须为我所做的每个修改(基本上是无限的撤消列表)保存一个差异。
解决这个问题实际上并不困难。由于没有良好的API来执行此操作,因此很难在每个应用程序中实施它。编程工具和库必须进行显着改进,然后才能在所有平台和程序中轻松实现此类efford,以实现具有任意备份存储且无需用户交互的所有文件格式。但是,这是我们最终开始编写“好”应用程序而不是仅仅适当的应用程序之前的必要步骤。
我认为,苹果在某些方面目前最接近“正当的感觉”。以其最新版本的iPhoto为例,该功能具有面部识别功能,可以根据出现在其中的人自动对照片进行分组。这是一项经典的任务,用户不想手动执行,并且不理解为什么计算机不自动执行该任务。甚至iPhoto距离良好的UI仍然还有很长的路要走,因为该功能仍需要用户(对于每张照片!)进行最终确认,因为人脸识别引擎并不完美。
HTM系统(分层时间记忆)。
杰夫·霍金斯(Jeff Hawkins)通过《论情报》(On Intelligence)一书提出了一种新的人工智能方法。
现在作为一家名为Numenta的公司很活跃,通过开发“真正的” AI来检验这些想法,并邀请社区通过SDK使用该系统来参与。
它更多地是从头开始构建机器智能,而不是试图模仿人类的推理。
在人机交互中使用物理来提供替代性的,可理解的隐喻。结合手势和触觉,很可能会导致取代70年代发明的和80年代中后期以来普遍使用的当前通用GUI隐喻。
为了实现这一目标,1980年没有计算能力。我相信游戏很可能在这里引领潮流。在iPod Touch / iPhone中的列表滚动交互中可以很容易地看到一个例子。交互机制依赖于动量和摩擦在现实世界中如何工作的直觉,从而提供了一种滚动项目列表的简单方法,而可用性则取决于导致滚动的物理手势。
我相信单元测试,TDD和持续集成是1980年以后的重大发明。
手机。
当第一部“无线电话”专利于1908年获得专利并且使用了很长一段时间(1945年为0G,1979年在日本推出了1G)时,现代2G数字手机直到1991年才出现。SMS不存在直到1993年才开始使用Internet,并于1999年开始使用Internet。
我从1980年1月2日开始编程。我曾尝试过考虑职业生涯中的重大新发明。我很难想到任何。我认为重要的大部分实际上是在1980年之前发明的,但是直到后来才被广泛采用或改进。
尽管硬件有了很大的进步,但是软件行业一直在努力跟上步伐。我们比1980年要光明,但是大多数改进都是改进而不是发明。自1980年以来,我们一直在忙于应用这些先进技术而不是进行发明。这些增量发明中的大多数本身并不重要或功能强大,但是当您回顾过去29年时,它们却相当强大。
我们可能需要接受逐步改进并加以引导。我相信,真正的原创想法可能会来自很少接触计算机的人,并且越来越难以找到它们。
没有。
我认为这是因为人们改变了态度。人们过去曾经相信,如果他们只是找到那个“大主意”,那么他们就会使它富有。如今,人们认为,付出最大的是执行而不是发现。您有诸如“想法是一毛钱一打”和“第二只老鼠拿到奶酪”之类的口头禅。因此,人们专注于利用现有想法,而不是提出新想法。
开源社区发展。
在iPad上(2010年4月发布):当然,这样的一个概念是绝对的革命!
替代文字http://www.ubergizmo.com/photos/2010/1/apple-ipad//apple-ipad-05.JPG
艾伦·凯(Alan Kay)根本看不到来自1970年代的那件事!
想象一下这样的“个人,便携式信息操纵器” ...
...
等待?什么!?你说的Dynabook?
由艾伦·凯深思熟虑的,早在1968年,并在伟大的细节在这个1972年论文中描述?
NOOOooo ooooo ....
哦,好吧,没关系。