这个问题源于对过去 50 年左右计算领域不同类型进步的评论。
其他一些参与者要求我向整个论坛提出这个问题。
这里的基本思想不是抨击事物的当前状态,而是试图了解提出基本新思想和原则的进展情况。
我声称我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要且强大的想法。如果我们真的找不到它们,那么我们应该问“为什么?” 和“我们应该做什么?”
这个问题源于对过去 50 年左右计算领域不同类型进步的评论。
其他一些参与者要求我向整个论坛提出这个问题。
这里的基本思想不是抨击事物的当前状态,而是试图了解提出基本新思想和原则的进展情况。
我声称我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要且强大的想法。如果我们真的找不到它们,那么我们应该问“为什么?” 和“我们应该做什么?”
互联网本身早于 1980 年,但由 Tim Berners-Lee 提出并实施的万维网(“通过简单机制分发的超文本”)始于 1989/90。
虽然超文本的想法之前已经存在(尼尔森的 Xanadu曾试图实现分布式方案),但万维网是实现分布式超文本系统的一种新方法。Berners-Lee 以一种功能强大且易于实现的方式结合了简单的客户端-服务器协议、标记语言和寻址方案。
我认为大多数创新都是以原始方式重新组合现有作品而创造的。万维网的每一个部分以前都以某种形式存在过,但这种组合只有事后才很明显。
我确信你现在正在使用它。
自由软件基金会(成立于 1985 年)
即使你不是他们哲学的全心全意支持者,他们一直在推动的自由软件、开源理念对软件行业和一般内容(例如维基百科)产生了惊人的影响。
我认为公平地说,在 1980 年,如果您使用计算机,您要么为此获得报酬,要么您是一个极客……那么发生了什么变化?
打印机和消费级桌面出版。这意味着您不需要印刷机来制作大批量、高质量的印刷材料。那是很大的——当然,现在我们完全认为它是理所当然的,而且大多数情况下我们甚至都不关心打印部分,因为无论如何每个人都在线。
颜色。严重地。彩色屏幕对非极客对游戏和应用程序的感知产生了巨大影响。突然间,游戏似乎不再是艰苦的工作,而更像是看电视,这为世嘉、任天堂、雅达利等公司打开了将消费者游戏带入家庭的大门。
媒体压缩(MP3 和视频文件)。还有一大堆东西——比如 TiVO 和 iPod——我们不再将它们视为计算机,因为它们无处不在且对用户友好。但他们是。
我认为,这里的共同点是曾经不可能的东西(制作打印文件;准确地复制彩色图像;在世界各地实时发送信息;分发音频和视频材料),然后由于设备和物流而变得昂贵涉及,现在是消费者级别的。那么 - 大公司现在在做什么,以前是不可能的,但如果我们能弄清楚如何做到小而便宜,可能会很酷?
任何仍然涉及物理运输的东西都很有趣。视频会议(目前)还没有取代真正的会议——但有了正确的技术,它仍然可以。完全感官的沉浸式环境可以消除一些休闲旅行——家庭影院就是一个小例子;另一个是位于 Soho 办公楼内的“虚拟高尔夫球场”,您可以在模拟球场上打出 18 洞的真实高尔夫球场。
不过,对我来说,下一个真正重要的事情将是制造。做东西。勺子、吉他、椅子、衣服、汽车、瓷砖等等。仍然依赖于制造和分销基础设施的东西。我再也不用去商店买电影或专辑了——多久我就不用去商店买衣服和厨具了?
当然,OLED 显示器、GPS 和移动宽带、IoC 容器、脚本和“云”正在发生有趣的发展——但这仍然只是将图片放在屏幕上的新奇方式。我可以打印我自己的照片并编写我自己的网页,但我希望能够制造一个完全适合我桌子旁边那个角落的亚麻篮,以及一个用于将我的吉他 FX 单元固定在我的桌子上的安装支架,等等将我的手机夹在自行车车把上。
与编程无关?不……但在 1980 年,声音制作也没有。或视频分发。或向您在赞比亚的亲戚发送信息。想大一点,人们... :)
包管理和分布式修订控制。
这些软件开发和分发方式的模式是最近才出现的,并且仍然刚刚开始产生影响。
Ian Murdock 将包管理称为“Linux 为业界带来的最大进步”。嗯,他会的,但他有一个观点。自 1980 年以来,软件的安装方式发生了显着变化,但大多数计算机用户仍然没有经历过这种变化。
Joel 和 Jeff在Podcast #36中一直在与 Eric Sink讨论修订控制(或版本控制或源代码控制)。似乎大多数开发人员还没有赶上集中式系统,而 DVCS 被广泛认为是神秘且不必要的。
0:06:37
Atwood: ……如果你假设——这是一个很大的假设——大多数开发人员都掌握了基本的源代码控制——坦率地说,我认为这不是真的……
Spolsky: 不。他们中的大多数,即使他们有,他们理解的是签入、签出,但是分支和合并——这让他们感到困惑。
比特流。它彻底颠覆了以前看似不可改变的规则——一个人通过 Internet 下载文件所需的时间与下载文件的人数成正比。它还解决了以前的点对点解决方案的缺陷,特别是围绕“窃取”,以一种与解决方案本身有机的方式。
BitTorrent 巧妙地将通常的劣势——许多用户试图同时下载单个文件——转化为优势,将文件按地理分布作为下载过程的自然部分。它用于优化两个对等点之间的带宽使用的策略不鼓励作为副作用的窃取 - 强制限制符合所有参与者的最佳利益。
这是其中一种想法,一旦其他人发明它,即使不明显,也似乎很简单。
Damas-Milner 类型推断(通常称为 Hindley-Milner 类型推断)于 1983 年发布,此后一直是每个复杂静态类型系统的基础。这是编程语言中一个真正的新想法(基于 1970 年代发表的想法,但直到 1980 年之后才变得实用)。就重要性而言,我将其与 Self 和用于实现 Self 的技术相提并论;就影响力而言,它没有同行。(OO 世界的其余部分仍在对 Smalltalk 或 Simula 进行变体。)
类型推断的变化仍在上演;我最想挑出的变化是 Wadler 和 Blott 用于解决重载的类型类机制,后来发现它为类型级别的编程提供了非常强大的机制。这个故事的结局还在写。
这是Google map-reduce的一个插件,不仅是为了它自己,也是为了代表 Google 在不可靠的商品机器农场上运行快速、可靠的服务所取得的成就。绝对是一项重要的发明,与 1980 年称雄的重量级计算的大型大型机方法完全不同。
标记,信息分类的方式。是的,每个问题下的小文本框。
令人惊讶的是,发明标签花了大约 30 年的时间。我们使用了列表和目录;我们使用了为印刷书籍优化的东西。
然而,30 年比人们意识到印刷书籍可以更小格式所需的时间要短得多。人们可以把书放在手中。
我认为核心 CS 人员低估了标记概念。所有研究都集中在自然语言处理(自上而下的方法)上。但是标记是计算机和人都能很好理解的第一种语言。这是一种自下而上的方法,使计算机使用自然语言。
我认为我们以错误的方式看待这个问题并得出错误的结论。如果我做对了,循环就会:
想法 -> 首次实施 -> 少数人采用 -> 临界质量 -> 商品产品
从第一个想法到商品,你通常需要几个世纪,假设这个想法曾经到达那个阶段。达芬奇可能在 1493 年绘制了某种直升机,但花了大约 400 年的时间才得到一台能够将自己从地面升起的真正机器。
从威廉·伯恩在 1580 年对潜艇的首次描述到 1800 年的首次实施,您有 220 年时间,而目前的潜艇仍处于起步阶段:我们几乎对水下航行一无所知(地球有 2/3 的面积在海底,想想潜在的房地产;)。
没有更早的想法,我们从未听说过。根据一些传说,亚历山大大帝似乎在公元前 332 年使用了某种潜水钟(这是潜艇的基本概念:一种在海底运送人员和空气供应的装置)。算上这一点,我们正在关注从想法(即使是基本原型)到产品的 2000 年。
我要说的是,今天寻找实现,更不用说产品了,甚至在 1980 年之前都不是想法...... 所以呢?
40 年前就有联网的计算机,当然,但这无法与今天的互联网相提并论。基本的想法/技术就在那里,但无论如何你都不能在线玩魔兽游戏。
我声称我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要且强大的想法。如果我们真的找不到它们,那么我们应该问“为什么?” 和“我们应该做什么?”
从历史上看,我们从来没有能够那么快地“找到”离这个想法那么近的东西。我认为这个周期越来越快,但计算仍然很年轻。
目前,我正试图弄清楚如何制作全息图(星球大战那种,没有任何物理支持)。我想我知道如何让它发挥作用。我什至还没有收集到工具、材料、资金,但即使我要取得任何程度的成功,实际的想法至少已经有几十年的历史了,至少相关的实现/技术已经使用了很长时间.
一旦您开始列出实际产品,您就可以确定概念和第一个实现在不久前就已经存在。没关系。
你可以用某种理由争论说没有什么是新的,永远,或者一切都是新的,永远。这是哲学,两种观点都可以辩护。
从实践的角度来看,真理介于两者之间。真理不是二元概念,布尔逻辑该死。
中国人可能在不久前就发明了印刷机,但是大约 10 年的时间,大多数人才能在家里以合理的价格打印出像样的彩色照片。
发明无处不在,这取决于您的标准和参考框架。
谷歌的页面排名算法。虽然它可以被看作只是对网络爬虫搜索引擎的改进,但我要指出它们也是 1980 年后开发的。
DNS,1983 年,以及相关的进步,例如通过 MX 记录而不是 bang-paths 解析电子邮件主机。*不寒而栗*
Zeroconf 在 DNS 上工作,2000。我将打印机插入网络,我的笔记本电脑可以看到它。我在网络上启动了一个 Web 服务器,我的浏览器可以看到它。(假设他们广播了他们的可用性。)
NTP (1985) 基于 Marzullo 算法 (1984)。抖动网络上的准确时间。
鼠标滚轮,1995 年。在没有它的情况下使用鼠标感觉很原始。不,这不是 Engelbart 的团队想到并忘记提及的事情。至少当我问当时团队中的某个人时不是这样。(那是在 1998 年左右的某个 Engelbart 活动中。我必须处理第一批老鼠之一。)
Unicode,1987,以及它对不同类型编码、规范化、双向文本等的依赖进展。
是的,人们每天都使用这 5 个是很常见的。
这些“真的是新想法”吗?毕竟,有老鼠,有字符编码,有网络计时。告诉我如何区分“新”和“真正新”,我会为您解答。我的直觉说这些已经足够新了。
在较小的领域中,很容易出现更近期的进展。例如,在生物信息学中,Smith-Waterman (1981) 尤其是 BLAST (1990) 有效地使该领域成为可能。但这听起来像是您在寻求在整个计算领域都非常广泛的想法,并且首先采摘低垂的果实。因此,它总是有一个新的领域。
数码相机呢?
根据维基百科,第一台真正的数码相机出现在 1988 年,大众市场数码相机在 1990 年代后期变得负担得起。
现代着色语言和现代 GPU 的流行。
GPU 也是一种低成本的并行超级计算机,带有 CUDA 和 OpenCL 等工具,用于快速编写高级并行代码。感谢所有那些降低这些越来越令人印象深刻的硬件奇迹价格的游戏玩家。在接下来的五年中,我希望每台销售的新计算机(以及 iPhone)都能够作为基本假设运行大规模并行代码,就像 24 位颜色或 32 位保护模式一样。
JIT 编译是在 1980 年代后期发明的。
解决“为什么新思想会死”和“怎么办”这两个问题?
我怀疑很多缺乏进展是由于资本的大量涌入和该行业根深蒂固的财富。听起来有悖常理,但我认为任何新想法都能一炮而红已成为传统观念。如果它在第一次尝试时没有成功,它就不能回来。它被有根深蒂固的利益的人买下,或者只是失败了,能量就消失了。几个例子是平板电脑和集成办公软件。牛顿和其他几个人有真正的潜力,但最终(通过竞争性减员和错误判断)浪费了他们与生俱来的权利,扼杀了整个类别。(我特别喜欢 Ashton Tate 的框架;但我仍然坚持使用 Word 和 Excel)。
该怎么办?首先想到的是Wm。莎士比亚的建议:“让我们杀了所有的律师。” 但现在他们的武装太精良了,恐怕。我实际上认为最好的选择是找到某种开源计划。他们似乎比替代品更好地保持可访问性和渐进式改进。但是这个行业已经变得足够大,因此需要某种有机的协作机制来获得牵引力。
我还认为,有一种动态表明,根深蒂固的利益(尤其是平台)需要大量的改变——流失——来证明持续的收入流是合理的;这吸收了许多本可以以更好的方式使用的创造性能量。看看我们花了多少时间在微软、Sun、Linux 或 Firefox 的最新迭代上踩水,对大部分已经正常工作的系统进行更改。这不是因为它们是邪恶的,而是因为它们已经融入了这个行业。没有稳定均衡之类的东西;所有的反馈机制都是积极的,有利于改变而不是稳定。(你有没有看到某个功能被撤回,或者更改被撤回?)
关于 SO 讨论的另一条线索是臭鼬工厂综合症(参考:Geoffrey Moore):大型组织中的真正创新几乎总是(90% 以上)出现在自发出现的未经授权的项目中,完全由个人或小组主动推动(并且往往受到正式的管理层的反对)。所以:质疑权威,破坏系统。
软件:
虚拟化和仿真
P2P 数据传输
社区驱动的项目,例如 Wikipedia、SETI@home ...
网络爬虫和网络搜索引擎,即索引分布在世界各地的信息
硬件:
模块化电脑
电子纸
让我吃惊的一件事是简陋的电子表格。非程序员用简单的公式网格为现实世界的问题构建疯狂而美妙的解决方案。在桌面应用程序中复制他们的努力通常比编写电子表格花费的时间长 10 到 100 倍,并且生成的应用程序通常更难使用并且充满错误!
我相信电子表格成功的关键是自动依赖分析。如果电子表格的用户被迫使用观察者模式,他们就没有机会做对了。
因此,最大的进步是自动依赖分析。现在为什么没有任何现代平台(Java、.Net、Web 服务)将其构建到系统的核心中?特别是在通过并行化进行扩展的时代 - 依赖关系图可以轻松地导致并行重新计算。
编辑:当-刚刚检查过。VisiCalc 于 1979 年发布 - 让我们假设它是 1980 年后的发明。
Edit2:似乎艾伦已经注意到电子表格 - 如果购买他到这个论坛的问题是正确的!
函数式编程研究人员重新发现了 monad。monad 有助于让一种纯粹、懒惰的语言(Haskell)成为一种实用工具。它还影响了组合器库的设计(单子解析器组合器甚至在 Python 中找到了自己的方式)。
Moggi 的“A category-theoretic account of program modules”(1989 年)通常被认为将 monad 引入了有效计算的视野;Wadler 的工作(例如,“命令式函数式编程”(1993 年))将 monad 介绍为实用工具。
收缩包装软件
1980 年以前,软件大多是专门编写的。如果你经营一家企业,并且想要计算机化,你通常会得到一台计算机、编译器和数据库,然后编写你自己的东西。商业软件通常是为了适应商业实践而编写的。这并不是说没有罐装软件(我在 1980 年之前使用 SPSS),但这不是常态,我看到的往往是基础设施和研究软件。
如今,您可以去电脑商店,在货架上找到经营小型企业所需的一切。它的设计并不是为了无缝地适应您过去的任何实践,但是一旦您学会或多或少地根据其工作流程工作,它就会很好地工作。大型企业比过去更接近于收缩包装,比如 SAP 和 PeopleSoft。
这不是一刀切,但在 1980 年之后,从昂贵的定制软件到低成本现成软件的转变非常明确,灵活性从软件转变为业务程序。
它还影响了软件的经济性。定制软件解决方案可以盈利,但无法扩展。您只能向一个客户收取这么多的费用,而您不能将同一个东西卖给多个客户。使用收缩包装软件,您可以销售大量相同的东西,从而在非常大的销售基础上分摊开发成本。(您确实必须提供支持,但这会扩展。只需将其视为销售软件的边际成本。)
从理论上讲,如果变革中有大赢家,就会有输家。到目前为止,软件业务一直在不断扩大,随着领域的商品化,其他领域也随之开放。这可能会在某个时候结束,中等天赋的开发人员会发现自己陷入了真正的困境,无法为大男孩工作并被市场挤出。(这可能发生在其他领域;我怀疑对会计师的需求比没有 QuickBooks 等的需求要小得多。)
除了硬件创新之外,我倾向于发现太阳底下几乎没有新事物。大多数真正伟大的想法都可以追溯到像冯诺依曼和艾伦图灵这样的人。
如今,很多被贴上“技术”标签的东西实际上只是某人编写的程序或库,或者是用新的隐喻、首字母缩略词或品牌名称对旧想法的翻版。
上世纪八十年代初,施乐帕洛阿尔托研究中心对计算机蠕虫进行了研究。
摘自 John Shoch 和 Jon Hupp 的“蠕虫”程序 - 分布式计算的早期体验”(Communications of the ACM,1982 年 3 月,第 25 卷第 3 期,pp.172-180,1982 年 3 月):
在Shockwave Rider中,J. Brunner 提出了一个无所不能的“绦虫”程序在计算机网络中运行的概念——这个想法可能看起来相当令人不安,但也远远超出了我们目前的能力。然而,基本模型仍然是一个非常具有挑战性的模型:一个程序或计算可以在机器之间移动,根据需要利用资源,并在必要时自我复制。
同样,我们曾经描述过一个基于经典科幻电影The Blob的计算模型:一个开始在一台机器上运行的程序,但随着它对计算周期的需求增长,它可以伸出手,找到未使用的机器,并增长到包含这些资源。在半夜,这样的程序可以在一栋楼里调动数百台机器;早上,当用户回收他们的机器时,“blob”必须有条不紊地撤退,收集计算的中间结果。白天呆在一两台机器上,程序可能会在资源可用后再次出现,再次扩展计算。(这种对夜间探索的喜爱使一位研究人员将这些描述为“吸血鬼计划”。)
引用 Alan Kay 的话:“预测未来的最好方法是发明它。”
更好的用户界面。
今天的用户界面仍然很糟糕。我指的不是小方面,而是大的、基本的方面。我不禁注意到,即使是最好的程序仍然具有极其复杂的接口,或者需要以其他方式进行大量抽象思考,而且这些接口无法达到传统非软件工具的易用性。
当然,这是因为软件允许做的事情比传统工具多得多。不过,这不是接受现状的理由。此外,大多数软件都做得不好。
总的来说,应用程序仍然缺乏某种“只管工作”的感觉,过于注重能做什么,而不是应该做什么。有一个问题被一再提出,但仍未解决,那就是拯救的问题。应用程序崩溃,破坏工作时间。我有每隔几秒按一次 Ctrl+S 的习惯(当然,这不再适用于 Web 应用程序)。为什么我必须这样做?真是愚蠢至极。这显然是自动化的任务。当然,应用程序还必须为我所做的每一次修改(基本上是一个无限的撤消列表)保存一个差异,以防我出错。
解决这个问题其实并不难。很难在每个应用程序中实现它,因为没有好的 API 可以做到这一点。编程工具和库必须显着改进,然后才能在所有平台和程序上轻松实现此类工作,适用于具有任意备份存储且无需用户交互的所有文件格式。但在我们最终开始编写“好”应用程序之前,这是一个必要的步骤,而不仅仅是足够的应用程序。
我相信苹果目前在某些方面最接近“正常工作”的感觉。以他们最新版本的 iPhoto 为例,它具有面部识别功能,可以自动按出现在照片中的人对照片进行分组。这是用户不想手动完成的经典任务,也不明白为什么计算机不能自动完成。甚至 iPhoto 距离一个好的用户界面还有很长的路要走,因为上述功能仍然需要用户最终确认(对于每张照片!),因为人脸识别引擎并不完美。
在人机交互中使用物理来提供一种替代的、可理解的隐喻。这与手势和触觉相结合可能会取代 70 年代发明并自 80 年代中后期以来普遍使用的当前常见 GUI 隐喻。
1980 年还没有计算能力使这成为可能。我相信游戏很可能在这方面起到了引领作用。在 iPod Touch/iPhone 中的列表滚动交互中可以很容易地看到一个示例。交互机制依赖于对现实世界中动量和摩擦如何工作的直觉,以提供一种滚动项目列表的简单方法,而可用性依赖于引起滚动的物理手势。
手机。
虽然第一个“无线电话”专利是在 1908 年,而且他们煮了很长时间(1945 年 0G,1979 年在日本推出 1G),但直到 1991 年才出现现代 2G 数字手机。短信不存在直到 1993 年,互联网接入出现在 1999 年。
我相信单元测试、TDD 和持续集成是 1980 年之后的重大发明。
我于 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?
Alan Kay 早在 1968 年就提出了想法,并在 1972 年的这篇论文中进行了详细描述??
不不不不不不不不不不不不不不不不不……
哦,好吧……没关系。
自 1980 年以来, 围绕社交计算的想法取得了进展。The Well始于 1985 年。虽然我确信之前有在线社区,但我相信该领域的一些真正见解发生在 1980 年后。社交社区的不利动态方面他们在软件系统上的交互很像塔科马海峡大桥的灾难。
我认为Clay Shirky在该领域的工作阐明了这些影响以及如何减轻它们。我想说社交软件洞察力的有趣现实世界示例包括reCAPTCHA和Wikipedia等,其中重要的有价值的工作由软件介导的参与者完成。
我认为自 1980 年代以来发明的最佳创意将是我们不知道的创意。要么是因为它们太小而且无处不在以至于不引人注意,要么是因为它们的受欢迎程度还没有真正起飞。
前者的一个示例是单击并拖动以选择文本的一部分。我相信这在 1984 年首次出现在 Macintosh 上。在此之前,您有单独的按钮来选择选择的开头和选择的结尾。相当繁琐。
后者的一个例子是(可能是)可视化编程语言。我说的不是超级卡,我的意思是 Max/MSP、Prograph、Quartz Composer、雅虎管道等。目前它们确实是小众,但我认为,真的没有什么能阻止它们成为作为一种标准的编程语言,表达力和功能强大,除了mindshare。
可视化编程语言有效地执行了引用透明的函数式编程范式。对于代码来说,这是一个非常有用的属性。他们执行这一点的方式也不是人为的——这只是凭借他们使用的隐喻。
VPL 让那些原本无法编程的人也可以进行编程,例如有语言障碍的人,如阅读障碍,甚至只是需要节省时间的外行。专业的程序员可能会对此嗤之以鼻,但我个人认为,如果编程成为一种真正无处不在的技能,就像识字一样,那就太好了。
就目前而言,VPL 确实是一种利基兴趣,并没有真正成为主流。
我们应该做的不同
所有计算机科学专业的学生都应该被要求双专业——将 CS 专业与其中一门人文学科相结合。绘画、文学、设计、心理学、历史、英语等等。很多问题在于,这个行业的人对世界的理解非常狭隘和缺乏想象力,因此无法开始想象一台计算机的工作方式与现在有什么明显不同。(如果有帮助,你可以想象我说的是你以外的人,读这篇文章的人。)数学很棒,但最终它只是实现目标的工具。我们需要了解创造力本质的专家,他们也了解技术。
但即使我们拥有它们,也需要有一个环境,在这个环境中,做一些新的事情可能值得冒险。任何真正新的东西被一概而论地拒绝的可能性要高出 100 倍。(牛顿就是一个例子)。所以我们需要对失败有更高的容忍度。我们不应该害怕尝试过去失败的想法。我们不应该完全拒绝我们自己的失败——我们应该学会承认我们什么时候失败了。我们不应该将失败视为一件坏事,因此我们不应该对自己或他人撒谎。我们应该习惯它,因为它几乎是这个不断变化的行业中唯一不变的。事后分析在这方面很有用。
我认为关于 smalltalk 的更有趣的事情之一不是语言本身,而是用于设计 smalltalk 的过程。迭代的设计过程,经历了很多次的修改——但也非常仔细和批判性地识别现有系统的缺陷,并在下一个系统中找到解决方案。视角越多,对形势的视角越广,我们就能更好地判断错误和问题在哪里。所以不要只学习计算机科学。尽可能多地学习其他学科,让自己感兴趣。
当然,1980 年前的日子是施乐 PARC 的辉煌岁月。回到 GUI、鼠标、激光打印机、互联网和个人计算机都被创建的时候。(考虑到我当时还太年轻,还没有活到现在,而且你几乎一直在努力发明所有这些,我不能告诉你关于 1980 年的任何你还不知道的事情,所以让我们继续吧。)
但问题是,就真正具有颠覆性的新技术而言, 1980 年前的日子要活跃得多。任何新领域都是如此——在过去的 100 年里,您在铁路领域看到了多少改变游戏规则的技术进步?你在灯泡里见过多少?在印刷机上?一旦某件事在正确的圈子里引起了轰动,就会有一个发明的爆发期,然后是一个长期的成熟期。在那之后,除非基本情况发生变化,否则您将不会再看到同样的彻底彻底的变化。
幸运的是,这可能发生在许多领域,并且已经发生在其他几个领域:
移动性——智能手机将计算带入一个真正的便携平台,该平台很快将包括基于位置的服务和基于邻近的自组织网络。这是一种全新的范式,可能会像 GUI 一样改变游戏规则
WWW(HTTP、HTML 和 DNS)已经被提及并且显然是列表中的一个补充,因为它在全球范围内实现了全球、廉价、主流的丰富通信——这一切都归功于一个计算平台
在界面方面,触控、多点触控(想到 Jeff Han)和 Wiimote 都需要提及。目前,它们基本上是好奇心,但早期的 GUI 也是如此。
OOP 设计模式——作为解决难题的最佳实践的更高级别的解决方案。根据您对“计算”的定义,它可能属于也可能不属于列表,但如果您将 OOP 视为 1980 年前的一项重大进步(我当然这样做),我认为设计模式和 GoF 也值得一提
Google 的 PageRank 和 MapReduce 算法——我很高兴地注意到我不是第一个提到它们的人,而且说真的——如果没有它们的原理,世界会怎样?我清楚地记得他们面前的世界是什么样子,只要说谷歌真的是我的朋友就足够了。
非易失性内存——它在硬件方面,但它将在未来的计算中发挥重要作用——例如,使启动时间成为过去,使我们能够以全新的方式使用计算机
语义(自然语言)搜索/分析/分类/翻译......我们还没有完全做到,但像 Powerset 这样的公司给人的印象是我们正处于濒临灭绝的边缘。
在这一点上,智能 HTM 也应该在此列表中。我是杰夫霍金斯模型和方法的另一个信徒,如果它有效,它将意味着对计算机可以做什么、人类意味着什么以及世界可以从这里走向何方的完全重新定义。以这种方式(综合地)创造真正的智能将比人类以前所做的任何事情都要大。
GNU + Linux
3D 打印/快速原型制作(以及及时的制造)
P2P(这也导致了 VoIP 等)
电子墨水,一旦技术成熟一点
RFID 可能属于清单,但该清单仍未定论
量子计算是列表中最明显的元素,但我们仍然无法获得足够的量子比特来发挥作用。然而,我在该领域的朋友告诉我,即使在我们说话的时候,也有令人难以置信的进步,所以我屏住呼吸。
最后,我想提一下个人最喜欢的一个:分布式智能,或者它的另一个名字:人工智能。在网络中连接大量人员并允许他们通过某种形式的问答界面访问其他所有人的综合思想的想法。最近已经做过很多次了,雅虎问答、Askville、亚马逊机械土耳其人等等,但在我看来,这些都错过了很多……就像分布式超文本的许多实现一样在 Tim Berners-Lee 的 HTML 之前,或者在 Google 之前的许多网络爬虫之前。说真的 - 有人需要在“蜂巢思维”中构建一个搜索界面,以将其他所有人从水中吹走。恕我直言 - 这只是时间问题。
我们需要的是重组,而不是重新发明。
我们拥有我们现在需要的所有硬件和软件组件,可以在未来几年内完成令人惊奇的事情。
我相信科学界有一种疾病,参与者总是试图发明一些新东西来使自己与他人区分开来。这与做一些杂乱无章的编目工作或教授旧作品形成鲜明对比。
建造“新”东西的人通常被认为比重复使用现有作品和几乎古老作品的人具有更高的血统。(古老的说法是一个 20 岁的人,说 Lisp 之类的东西在过去是他们寿命的两倍多。1958 年)
好的旧想法需要复活并广泛传播,我们需要停止尝试建立有效地践踏旧作品和系统的企业或程序员运动,以成为下一个新事物——事实上,大多数“新闪亮” '事情只是旧观念复活的一个方面。
有效的并行化和量子计算——我认为这两个领域已经取得了进展,并且将会取得更多进展,以对我们对计算能力的使用做出非常重大的改变。
有效的并行化意味着并行化和分布式处理,而不需要特殊的编程技术,但它内置在编译器/框架中。
飞行汽车和气垫板。哦,等等,那些还没有被发明出来。但到 2015 年,我们必须拥有它们。否则回到未来 2 将是一个天大的谎言!
在主流计算中没有改变的一件事是分层文件系统。真可惜,IMO,因为在 1980 年代后期和 1990 年代,有人在设计新的文件系统,这些文件系统更适合现代的、面向对象的操作系统——从头开始就是面向对象的操作系统。
OO 操作系统倾向于具有可扩展且灵活的平面对象存储。我认为EROS 项目就是围绕这个想法建立的。PenPoint OS是 1990 年代面向对象的操作系统;Amazon S3当然是现代的平面对象存储。
我特别喜欢 OO 平面文件系统中的至少两个想法:
整个磁盘本质上是交换空间。对象存在于内存中,在不需要时被分页,在需要时被带回。不需要与虚拟内存分开的分层文件系统。从某种意义上说,程序“一直在运行”。
平面文件/对象存储允许对内容进行索引和搜索,而不是强迫用户提前决定内容相对于其他内容的位置以及名称应该是什么。可以在平面存储之上构建分层系统,但这不是必需的。
正如 Alan Cooper 在他的书About Face中所说,分层文件系统是一个杂物,专为 1960 年代和 1970 年代内存和磁盘存储有限的计算机而设计。可悲的是,Windows 和 Unix 的流行已经保证了分层文件系统的主导地位直到今天。
现代 3D 计算机图形学中几乎所有重要的东西。光线追踪(在计算图形的意义上)从 Whitted 1980 年的论文开始。Marching cubes ('87) 是从 3D 数据中提取等值面的标准方法。
在虚拟世界中,您由虚拟的另一个自我(又名 Avatar)代表,用于社交和角色扮演。
最常被称为 MMO - Massive(ly) Multiplayer Online。一些流行的例子包括魔兽世界、无尽的任务、第二人生。
PS:不,他们仍然不需要像 80 年代极客电影中通常描述的那样沉重的头饰。这是一个耻辱....
用于人机交互的触摸屏和运动感应界面。
例如:
唯一的问题是……这些技术真的是80后吗?
比特流。
光学计算。似乎它应该存在更长时间,但我目前找不到任何早于 1982 年左右的参考资料(相关的技术,光学晶体管,直到 1986 年才出现)。
至于编程概念,1988 年的 IoC / Dependancy injection 起源于 1983 年。Fowler 在他的Bliki上有一些关于这个概念的历史的注释。
首先要做的是定义发明,否则你会走上歧途。Dictionary.com对发明的第二个定义说:
美国专利法。一种新的、有用的过程、机器、改进等,以前不存在,被认为是某种独特的直觉或天才的产物,有别于普通的机械技能或工艺。
因此,自 1980 年以来,计算领域的新发明很少。发生了什么?显然已经出现了大量的新技术和新事物,但它们是什么?
我们不再进行发明,我们正在改进主要已经存在的东西。
CD 或光盘最初是在 1977 年开始生产的,但直到 1982 年才被工业界接受。此时第一家 CD 压片厂刚刚准备就绪。最终,到 1985 年,CD-ROM(只读存储器)被接受为一种介质。5 年后,CD-RW 出现了。(来源:维基百科)
怎么办?好吧,鉴于我们拥有更大的硬盘驱动器(仍然只是改进了范例),我们需要更多的空间来取代 VHS 市场并使视频与计算机兼容。DVD 就这样诞生了,尽管我对现有的 CD 技术进行了许多改进。
DVD 诞生于 1995 年,是“发明”的。(来源:维基百科)
从那时起,我们有:
显然,这份清单并非包罗万象。但是发现新发明,记住我在上面给出的定义,在那个列表中。你不能!它们都只是光盘概念的变体,都只是相同硬件的变体,并且都只是现有软件的变体。
成本。看,对现有产品进行增量改进在经济上更便宜。如果我可以卖给你一张 HD DVD 或蓝光光盘,因为你认为它是必要的或很酷的,那么我不需要发布我的三层或四层 DVD 的计划。事实上,我可以通过鼻子向你收费只是为了获得新技术,因为你是早期采用者,你需要我的“新的和改进的!” 硬件。
这称为营销或产品关系。
怎么样?1980 年之前有很多软件发明,但从那以后,它主要是对已经存在的东西进行改进或重新发明轮子。查看任何操作系统或办公软件包以了解这一点。
就我而言,在过去的 29 年里,几乎没有任何新发明出现。我可以走很长的路,跨越很多行业,但我为什么要打扰呢?一旦您开始考虑它,并开始将“发明”与先前的类似产品进行比较……您会发现它是如此相似以至于它甚至都不好笑。甚至内燃机自 1906 年以来就已经问世,此后在该领域没有任何新发明。这个“轮子”的许多改进和变化是的,但没有新发明。
甚至美国在伊拉克部署的那种新武器——使用微波让人感到震惊,就像他们触摸了灯泡一样——也不是新的。同样的想法被用于安全系统,然后被分类并从市场上撤下,用超声波让入侵者感到身体不适。这是武器的定向形式,具有不同的波长和应用,而不是新发明。
访问海量数据。
与 80 年代的数据相比,我们现在可用数据的庞大规模和规模是巨大的。我们必须对硬件和软件进行大量更改才能存储和显示这些东西。有一天,我们实际上将学习如何获得资格并挖掘它以获得有用的东西。总有一天。
保罗。
电可擦可编程存储器,一般化为非易失性读/写存储器,目前最广为人知和普遍存在的是闪存。 http://en.wikipedia.org/wiki/EEPROM将其列为 1984 年发明的。
通过为存储介质提供与处理单元相同的一般物理特性、功率要求、尺寸和稳定性,我们将其作为我们放置处理器的设计中的限制因素消除了。这扩大了我们如何以及在何处将“智能”放置到如此多的智能设备(以及以前根本不会被认为是智能的东西)的可能性,以至于我们仍然被激增所吸引。Mp3 播放器实际上只是其中的一小部分。
好吧,万维网已经被告知,但更基本上,我会说“DNS”。似乎它是在 1983 年发明的(http://en.wikipedia.org/wiki/Domain_Name_System),恕我直言,我们可以认为它是互联网协议的发明与在世界范围内传播现在的能力之间的强制性联系称为网络。
仍然在“网络”部分,我会添加 WIFI。它是在 90 年代发明的(但我同意它并不完全是“计算”,而是与硬件更相关)。
在更严格的“算法”部分,我想到了涡轮码(1993 年);有人说它只是关闭了香农信号理论定义的极限,但这个论点难道不会拒绝所有其他关于“洛夫莱斯、巴贝奇和图灵著作中的一切都已经在种子中”的答案吗?
在密码学领域,我会添加 P.Zimmermann 的 PGP 程序(日期为 1991 年),它为公民带来了一个相当强大的(当时)免费加密程序,并有助于动摇政府对加密的态度。事实上,我认为这是密码学“自由化”的因素之一,这是发展电子商务的先决条件。
Instant Messaging已经存在了很长时间(60 年代中后期),但IRC直到 1988 年才出现。
视频通讯,最重要的是,(例如,Windows Live Messenger或 Skype,或...)确实改变了我们交流的方式;)并且是最近的。
<更正>
(参见VideoConferencing: 1968,替代文本 http://wpcontent.answers.com/wikipedia/en/thumb/6/64/On_Line_System_Videoconferencing_FJCC_1968.jpg/180px-On_Line_System_Videoconferencing_FJCC_1968.jpg,正如 Alan Kay本人在评论中指出的那样:
再次,请查看Engelbart 在 1968 年演示的内容(包括实时视频聊天和屏幕共享)。IOW,猜测确实不如查资料。这就是为什么大多数人对事物的发明时间做出薄弱的假设的原因。)
把它当面看待;),这是理所当然的。
注意:那个时代的“网络摄像头”(视频设置)并不完全适合您的普通客厅;)
</更正>
[...恢复答案:]
网络摄像头 替代文本 http://wpcontent.answers.com/wikipedia/commons/thumb/c/c5/Logitech_Quickcam_Pro_4000.jpg/180px-Logitech_Quickcam_Pro_4000.jpg的推广也有帮助(始于 1991 年,第一台这样的相机,称为 CoffeeCam ,被指着剑桥大学计算机科学系的木马房咖啡壶)。
所以: 1980 年后:三分之二:IRC 和网络摄像头。
The memristor.
While the idea is not newer than 1980, I believe a working model was not created until 2008. Should it make it past R&D, it will be the most significant advance in computer hardware since the transistor; at the very least, obviating secondary memory.
我认为笔记本电脑是在 1980 年左右发明的,我还认为笔记本电脑和便携式计算的发展改变了很多人的生活——尤其是我们这些从事 IT 工作的人,或者使用电脑和旅行的人。
我想说最大的趋势是越来越缺乏位置依赖性和普遍性。这些天来,一个有趣的哲学练习是计算您附近区域的计算机。它们无处不在,台式机、键盘、微波炉、收音机、电视、手机等……我祖母的电脑是文盲,但她的生活和其他人一样充斥着小型电脑。她可以在空地中间给我打电话。然后我可以在高速公路上接听电话。
“美国人没有过去也没有未来,他们生活在一个扩展的现在。” 这描述了计算的状态。我们生活在 80 年代延伸到 21 世纪。唯一改变的是尺寸。艾伦·凯
资料来源: Alan Kay:计算机科学是矛盾的吗?
基础设施的变化,以允许从家庭和办公室访问互联网。
从 W3C 到 API 的文档化和公认标准
除此之外,大多数我们认为是新的东西的历史都比你想象的要长得多(例如 GUI、OOP)。
声明式编程。
1979 年,“计算机程序”势在必行。程序员应该指导编译器做什么和怎么做。(N1)
今天,ASP.NET WebForms和WPF程序员经常编写代码,而不知道或关心如何实现它。维基百科还有其他不太主流的例子。此外,所有源自SGML的“标记”语言都是声明性的,我怀疑 1979 年的许多程序员会预测它们在 30 年内的重要性或普遍性。
尽管声明式编程的概念在 1980 年之前就已经存在(参见1975 年的这篇论文),但它的发明是在 1985 年引入Caml (有争议)或1990 年引入Haskell (争议较少)时发生的。(N2) 从那时起,声明式编程的流行度大大提高。而且,当大规模多核处理器最终到来时,我们都将成为声明式程序员。
--
注释:
(N1)我不能直接保证这一点,因为我是 1979 年的胎儿。
(N2)从其他答案来看,似乎人们将概念与发明混淆了。达芬奇设想了一架直升机,但不是他发明的。这个问题专门针对计算方面的发明。
(N3)请不要在评论中提及 Prolog(rel. 1975),除非您实际上已经在其中构建了一个应用程序。
播客 它允许一种信息丰富的方式来分发信息和辩论。我发现它比标准采访更具互动性,但噪音比博客评论少。
我声称我们在大多数计算领域都需要真正的新想法,我想知道最近已经完成的任何重要且强大的想法。如果我们真的找不到它们,那么我们应该问“为什么?” 和“我们应该做什么?”
在我看来,我们在计算方面没有太多新想法,因为我们基本上不需要它们。我们一直在汲取旧观念,并从中得到很多,例如 CPU 速度的惊人增长。
当我们因为可以说“井已干涸”而需要新的想法时,我们就会明白,必要性是发明之母。
我能想到的一项在 1980 年还没有的活动是跨不相交域的全球搜索。即谷歌和(极少数)前辈——所有这些都在 1980 年后。与句法标记的约定相关联,我认为它可以称为“新想法”;但我认为这也才刚刚开始;有很多开销空间可以建立。
一种有可能加速这个已经闪电般的速度向量的设备将很快成为相机/GIS/电话/网络的组合。它首次创造了在四维空间中自动收集、分类和聚合数据点的机会。甚至繁琐的手动收集此类数据也在萌芽。想象一下默认情况下何时完成。
无论好坏。
使计算机科学更接近计算机工程的设计模式。GPS 和互联网地址查找,用于基于位置的交互。面向服务的架构 (SOA)。
开放式 PC 设计带来了可负担的组件(Apple 除外 :-) 以及推动创新和降低价格的竞争。这导致了从用户到电脑——那里有一个终端可以使用——到电脑来到用户身边并出现在家里甚至一圈的巨大变化。
IP 组播 (1991) 和 Van Jacobsen 的传播网络(2006) 是自 1989 年以来最大的发明。
增强现实。这还没有真正起飞,但随着想法的发展,我认为它是巨大的,从能够在地面上绘制虚拟箭头以帮助您找到目的地,到用有用的信息或审美幻想装饰您周围的一切。
想象一下你的电话在房间里响起,你看着它,它上面会弹出一个信息气泡,告诉你谁在打电话。那会有多酷?AR 将给我们思考和与技术交互的方式带来巨大的变化。
鬼屋可能也会变得更加可怕。
我还想提一下脑机接口脑电图,但显然这是在 1970 年代首次发明的。
这是一个负面结果,作为“基本创新”很奇怪,但我认为它适用,因为它开辟了新的研究领域,并关闭了无用的领域。
分布式共识的不可能性:PODC 影响力论文奖:2001
我们假设我们不可能的结果的主要价值是关闭试图找到容错共识算法的非生产性研究。但令我们惊讶的是,它开辟了全新的研究领域。已经分析了对于不可能证明需要关于分布式系统模型的确切假设。已经发现了许多证明也适用的相关分布式问题,以及看似相似但确实有解决方案的问题。最终,开发了一系列研究,其中根据实现无等待容错共识的能力对原语进行分类。
低成本/家庭计算。直到 1980 年代初才真正听说过一些东西(至少在 Blighty 中)。如果没有家庭计算,有多少人在这里发帖会以计算为职业?甚至作为一种爱好1?
我自己,如果我的家人在 1982/1983 年没有得到 Clive Sincliar 不起眼的橡胶键ZX Spectrum,我现在可能不会在这里。不仅仅是 Speecy:C64、Vic-20、Acorn Electron、BBC A/B/Master、Oric-1、Dragon-32等都推动了家用计算机市场,每 8 年就有程序员出局老男孩和女孩谁可以接触到一个。
如果那不是计算和编程方面的革命,我不知道是什么……!
1好奇:这个网站上的业余爱好者和专业程序员的分类是什么?我意识到这些统计数据没有经过整理,但可能会很有趣。
虚拟化?
像 VirualBox OSE 或 VMWare 这样的应用程序为我节省了很多时间。
奇异的开发风格(如Eric S Raymond的http://www.catb.org/~esr/writings/cathedral-bazaar/cathedral-bazaar/中所述)。Raymond 将 Linus Tourvald 于 1991 年发布的 Linux 内核归功于 Bizarre 开发风格的首次使用。
我也会提名 3D 鼠标。自 1990 年代初以来,存在多种变体。对于任何使用 3D 的人来说,SpaceNavigator 之类的东西让生活变得更加轻松。(免责声明:我与 3Dconnexion 没有任何关系,只是满意并且现在没有 RSI 用户。)
也许科幻作家论坛会给你更多有趣的答案?;-)
我怀疑这里存在一些谬误,您将技术和科学的历史视为一种稳步前进的进步,一种线性现象。我怀疑这实际上是一个断断续续的过程,背景,经济学,偶然性和简单的随机性。
你应该感到幸运,你处于历史巨浪之一的中心,大多数人永远不会有这种经历。
为大众带来像 IDE 一样的 Smalltalk ;)
采用面向对象。
这个想法很早就出现了(例如 Simula),但它在 1990 年代成为主流。(恕我直言,它最大的好处之一是为开发人员提供了一个通用的词汇表,因此它的广泛采用使其更有价值。)
我相信没有发明任何重要的东西。但是自 80 年代以来对软件的看法发生了很大变化。当时有更多的理论家参与这件事,现在你在程序员“论坛”上问这个问题。
当时的大多数想法都没有得到实施,或者在实施时它们没有任何真正的重要性,因为软件行业不存在,也不存在营销、人力资源或开发阶段,或者 alpha 版本:)。
缺乏发明的另一个原因是大多数人使用 Windows :) 不要误会我的意思,我确实讨厌 M$,但是这样看:你有一个完美的工作界面,没有什么新东西可以添加,也许只是一些新的彩色按钮。它也足够封闭,因此您将无法在不破坏它的情况下使用它。这就是为什么我更喜欢开放应用程序的原因,这样你就可以得到更多“开放”的人,你可以与他们交谈,然后提出问题,提出实际实施的新想法,或者至少放在一个开放的待办事项列表上,这样你就得到了某种“进化”。您并没有真正看到任何新的东西,因为您被多年前“发明”的相同基本界面所困......有人真的在生产环境中尝试过 ION 窗口管理器吗?它有一种新的界面,
M$,Adobe ..您的名字,拥有许多专利,因此您将无法将您的工作基于它们或衍生产品(您也不会知道他们拥有什么样的未开发技术)。以 MP3 和 GIF 为例(我相信它们现在都是免费格式,但它们也有点死了..) MP3 是音频的“王者”,即使那里几乎没有比它更好的算法..但是没有得到足够的牵引力,因为它们没有被推向消费市场。GIF...来吧,256色???从这个观点来看,我很好奇这个线程中有多少人正在研究一些“开放”的东西,这些东西将在其他一些项目中被重用,有多少人在“关闭”,受 NDA 的项目保护?
即使这听起来有点“自由意志”有点像,早在 80 年代,软件是免费的,你有所有的文档,所有硬件都更简单,更容易使用......而且也更有限,所以人们实际上并没有浪费时间来实现 3d 游戏或网页,但在真正的算法上工作。
USB Keys/拇指驱动器
USB Keys 是软盘的有效替代品,软盘在简单传输方面仍然优于 CD 或 DVD。
我认为在过去的 50 年中,一项非常重要的计算发明是 GOOGLE。如果没有一个好的搜索工具,互联网就毫无意义。搜索引擎的出现彻底改变了互联网,并使其能够被小家伙货币化。
第一台真正的多媒体个人计算机,Amiga:第一台 32 位抢占式多任务个人计算机,第一台具有硬件图形加速功能的计算机,第一台具有多声道声音的计算机,并且在许多方面比多核、多千兆赫兹的 Windows boxen 更有用、更强大今天激增。
Ctrl-C + Ctrl-V + Ctrl-X 组合 :)
具有社区支持的翻译软件可以进行手动更正和建议,然后使用 AI 机器人形成模式,最终区分和正确预测不同翻译和上下文中的歧义。
虽然确实谷歌翻译可能不是那种野兽,但它是母亲,或者可能是等待开发的系统的祖母。
如果你想一想——文本语言确实是输入到大脑的,眼睛看到文本并将图像发送到大脑,然后将其转化为理解。
虽然其真正的交流(尤其是人类交流)是一个高级主题,但基础是输入(带有上下文)-> 翻译-> 理解。
为什么我们仍然没有真正好的方法向远方的同事或不会说我们语言的合作伙伴发送电子邮件?这显然是第一阶段。
一旦完成,我们就可以进行实时电话翻译等工作。
相反,月复一月,我们最大的智力资产都参与了其他更重要的项目,比如太空研究和流星探测,或者试图证明圣经是错误的(打哈欠)。
我们花更多的时间在基本的实际交流上怎么样?
传感器网络:非常小的(纳米级)计算机形成自组织 p2p 网络并传输“感知”信息。
3D 打印:用于物理对象的星际迷航复制器(还没有早期灰茶)。
DNA 计算:针对某些类型问题的大规模并行计算。
增强现实
现实世界的视图以某种方式与虚拟元素相结合。
虚拟现实一词是在 1989 年创造的,比“增强现实”一词早几年。
一些早期的支持技术是在 1980 年之前发明的,但这个概念本身可以追溯到九十年代初(至少维基百科是这么说的。)
RAID(1988 年)。
可以说这只是过去几年纠错码的应用,但可以说计算机科学中的一切都可以简化为已经存在了数千年的基础数学。
一些答案提到量子计算机,好像它们还很遥远,但我不敢苟同。
在 1970 年代和 1980 年代模糊地提到了量子计算机的可能性(参见维基百科上的时间线),但是第一台“工作”的 3 量子位核磁共振量子计算机是在 1998 年建成的。该领域仍处于起步阶段,几乎所有进展都还在理论上并仅限于学术界,但在 2007 年,名为 D-Wave Systems 的公司提出了一个工作 16 量子位的原型,并在当年晚些时候推出了 28 量子位绝热量子计算机。他们的努力是值得注意的,因为他们声称他们的技术在商业上是可行的和可扩展的。截至 2010 年,他们拥有 7 个钻机,他们当前一代的芯片有 128 个量子比特。他们似乎与谷歌合作,寻找有趣的问题来测试他们的硬件。
我推荐这个 24 分钟的短视频和关于 D-Wave 的Wikipedia 文章,以便快速浏览,在这个由 D-Wave 创始人和 CFO 撰写的博客上还有更多资源。
过去 30 年来处理器速度的大幅提升不容忽视。各种巧妙的想法,如流水线和先发制人的分支,以及处理器设计电子方面的改进,意味着今天的程序员可以更多地担心程序的设计和可维护性,而不必担心计算时钟周期。
回答一个稍微不同的问题。我认为我们需要在隐私、信任和声誉领域有大创意。我的计算机几乎可以捕捉关于我的所有信息,我在哪里,我说什么,我输入了什么,我看到了什么,......服务)我可能想与他们共享一些信息,即使它只是一条数据。
我的信息需要挖掘(不是 Google、Facebook 或 Apple 的)。我的计算机需要代表我使用它,因此信任需要是端到端的。然后我们可以去中介化新的信息中间人。
(广泛)加密。如果没有加密,任何金融交易都不会发生。这仍然是一个可以使用更多创新和用户友好性的领域。
我认为计算中的大多数概念大部分都在进行改进,但也有一些新的发展,特别是在分布式计算方面。
大部分工作都经过改进,虽然许多现代系统比 60 年代或更早时首次描述的原始概念好不了多少,但有些好几个数量级。
鼠标 - 有关于人机交互的帖子。对我来说,鼠标是人类互动的门户。没有它,我们仍然会打字而不是点击拖动,即使是用我们的手指。
GUI - 完美地赞美了鼠标。我在一个 as400 是我们主要应用程序之一的后端的环境中工作。是的.. 有趣的东西,但它让我想起了电影“硅谷海盗”中“比尔盖茨”正在使用的屏幕,尽管它不是那样的。对我来说,1 和 2 是任何人,包括爷爷奶奶都可以使用电脑的原因。
Excel / 电子表格 - 之前有人提到过这一点,但它的工作再次提及。它非常用户友好,是非技术用户在对单元执行计算时尝试简单编程概念的绝佳切入点。当然,它是在 1980 年之前出现的,但 1980 年之后的版本是电子表格技术发展的时期。
互联网(当然)——不知道没有它人们是如何编写代码的!不要因为我重复而激怒我,因为这属于每个列表。
INTELLISENSE - 爱它爱它爱它!!!!
不确定 1980 年,但几十年来,人工智能社区一直是创意的产生者,而且他们仍在努力。
多代理系统。
你可以回到分布式人工智能的根源,我认为仍然安全地留在 80 年代的这一边。
多智能体系统有很多组件,有很多研究涉及言语行为或合作,因此很难指出并说“看,这里,这是不同的、创新的和重要的!” 但无论如何我都会尝试。:-)
我认为信念-欲望-意图模型特别值得注意。代理在内部构建了世界模型。他们有特定的愿望或目标,并制定计划如何与他们所知道的世界互动以实现这些目标,从而制定意图。
或者,打个比方,电影《创》中的角色对他们周围的世界是如何运作的有一定的了解。他们不了解整个世界,他们可能会误认为其中的一部分。但他们有愿望和目标,他们想出了计划来进一步实现这一目标。如果你看过 Tron,我相信你会明白这个比喻。
它对计算尚未产生太大影响。但是,看,对计算产生影响的事情似乎需要几十年的时间。请参阅:OOP、GC、字节码编译。
我会说 CDMA 是/现在是 1980 年之后创建的一个重要且强大的新想法。
用于并行化的 MPI 和 PVM。
在 OS 核心开发中使用函数式编程/语言。
'Singularity',以及所有类似的项目,即在托管代码中开发操作系统。
c++ 编程语言 (1983) 模板元编程 (1994)
将不同的编程范式成功集成到单一的编程环境中。
这个(对我来说)的例子是Mozart/Oz 编程系统,它将功能、OO、逻辑、并发和分布式编程机制集成为一个连贯的整体。不过还有其他例子。
游戏中运动传感器的兴起,它摒弃了传统的游戏操纵杆,让用户非常接近游戏本身。这与我们不断变化的城市景观和生活方式相得益彰,因为我们的体力活动有限。游戏的这种进步肯定会在做自己喜欢的事情时至少引起一些身体活动。这绝对比在你的健身房做同样平凡的代表要好。
I think part of the problem with these answers is they are either not well researched or are attempting to a new implementation or some technology that has seen significant "improvements." However, this is not a significant invention. For instance, any talking about functional programming or object oriented programming just fails; most of these ideas have been circulating since before most of the participants of SO were born.
我没有资格在一般意义上回答这个问题,但仅限于计算机编程?不多。
为什么?我一直在思考这个问题,我认为我们缺乏两件事:历史感和客观判断我们制作的一切的方法。这并非在所有情况下都是正确的,但在一般情况下是这样。
对于历史,我认为这只是通俗写作或计算机科学课程中没有得到足够重视的东西。以语言特征为例。一个规范的来源可能是 HOPL,但在程序员中,能够标记时间点或在哪种语言中首次出现像 GC 或闭包这样的特性绝对不是常识。当然,在那之后还有随着时间的推移而发展的知识:自 Simula 以来,OOP 发生了怎样的变化?将我们的历史感与政治学或哲学等其他领域的历史感进行比较和对比。
至于判断,这确实是我们寻求客观成功衡量标准的失败。给定 foobar,它以何种可衡量的方式改进了编程行为中的某些方面,其中 foobar 是设计模式、敏捷方法、TDD 等中的任何一种。我们甚至尝试过衡量这一点吗?我们甚至想要测量什么?正确性、程序员生产力、代码易读性等?如何?软件工程真的应该解决这些问题,但我还没有看到。
In order to start thinking about this, I need a model for what "innovation" means.
The best model I've seen is The Technology Adoption Life Cycle. You can get an overview at this Wikipedia Article.
Using this model, I began to ask myself... at what stage of the life cycle is software itself? We can think of "software" as a distinct technology from machinery going all the way back to Babbage, or perhaps more precisely, to Lady Ada Lovelace.
But it surely remained at the very early pioneering stage at least until about 1951. That's the year programmed computers "went commercial" in terms of selling a model for a computer product, and building lots of units of that model. I'm thinking of the machine that Univac sold to the Census Bureau.
From 1951 to about 1985, software innovations were numerous. They mostly had to do with extending the span of computing to an ever wider field of endeavor. In parallel, mass marketing and mass production kept bringing the cost of entry down till the Apple and IBM-PC made a programmable device a commonplace appliance.
Somewhere between 1980 and 1985, I'd say that software passed from the Innovator's domain to the "Early majority" domain. Sorry, guys, but that makes all of you that participated in MS-DOS, the Mac, Windows, C++ and Java eraly majority rather than innovators. That doesn't preclude your having done significant innovation on your own turf and in your own projects. It just means that the field itself had moved on from the earliest stage.
While the Internet's precursor had been around since the 1970s, it wasn't until Al Gore invented the internet (sorry) that everybody hooked up. At that stage, software passed from the early majority to the late majority. This shift was subtle, as the top of the bell curve suggests. Not every shop moved from early majority to late majority at the same time.
I don't think software has quite passed into the "laggard" stage yet, but I think that real innovators are tackling the problem of producing progress on different fronts today.
Two fronts that I can think of are Bioengineering and Information Appliances. Both of these fields require software, but the main thrust is not software innovation. It's applying software to uncharted territory. There are probably lots of other fronts that I'm not even aware of.
这是一个非常棘手的问题,因为除了硬件的可笑改进之外,在那之后几乎没有什么东西是非常积极的发明。尽管在 1980 年代之前有许多重要的发明只影响到人们,但现在因为它们在当时是不可行的。
见鬼。下降
企业服务总线似乎是一个相当新的“发明”,当然它是基于更老的技术。
它使用Lengauer-Tarjan 支配树算法进行内存使用分析。
数字音乐合成器。
我认为,整个音乐界都受到廉价和弦合成器的影响。早期的复音合成器,其中有效的多个模拟合成器(离散或使用 CEM 或 SSM 芯片)。它们既昂贵又非常有限。在 80 年代,第一个数字系统问世(我不确定,但我认为 Kurzweil 是最早的系统之一)。今天,大多数都是数字的——即使是模拟的也是典型的“虚拟模拟”。
问候
编辑:哎呀-我刚刚发现CMI fairlight 是在1978 年发明的。所以忘记上面的-对不起。
作为 Debian 用户,我会投票支持软件包管理。它使 OSX 和 Windows 7 看起来像原始的业余玩物。
但是既然已经提到了包管理,那我就给 X 投一票。网络透明的窗口服务器让很多应用成为可能。能够在同一个屏幕上无缝调用并排运行在不同计算机上的程序真是太好了。
这在 80 年代后期更令人印象深刻。
受保护的内存。如果您的程序出错,在受保护的内存之前,您可以在任何地方开始执行代码——几乎总是挂起整个机器。没错,重启时间!
硬件成本低。1978 年,我的第一台电脑花了 500 美元——在当时是一笔巨款。降低成本将个人电脑放在每张桌子上。
FPGA是1980年后发明的重大突破。
StackOverFlow.com
Paxos 协议。很难描述它在互联网时代的价值。
让我们看看,Connection Machines (Massive Parallelism) 就是其中之一。
无论如何,这整个问题对艾伦·凯来说似乎是一个自负,因为他发明了一切。
I would say Linux and the reification of the worse-is-better philosophy, but you can argue that those are older. So I´d say: quantum, chemical, peptide, dna, and membrane computing, (re)factoring in a non ad-hoc fashion and automated, aspects, generic programming, some types of type inference, some types of testing,
The reason why we have no new ideas: sw patents (this comes from the late 60s ...), corporations and education.
十大软件工程思想/图片
我不得不说,自 1980 年以来计算领域最大的发明是摩尔定律。1960 年代和 1970 年代创造了大量非常酷、创新的东西——但它们都是极其昂贵的一次性项目。这些项目中的大多数都在时间的迷雾中消失了。
今天,这个很酷的创新项目获得了几轮资金,并且在 6 个月左右的时间内可以在每个人的桌面或网络浏览器上使用。
如果这不是创新,那是什么?
计算机图形学、特殊效果和 3D 动画
我不知道是否有人已经回答了,“机器学习”是一项正在快速发展的重大新发展。借助智能垃圾邮件过滤、股市预测、机器人等智能机器,...
也许,机器智能可能是下一件大事。
个人广播通信
Facebook、Twitter、Buzz、Qaiku……实现方式各不相同,侧重于不同的方面——管理的受众、简洁性、讨论。具体服务来来去去,但通信的新概念依然存在。博客当然是这一切的开始,但新服务使交流与社会联系起来,这是一个本质的区别。
不过,不太确定这是否完全属于计算的主题,但这是很重要的事情,只有通过计算和网络才能实现。
个人电脑。
毫无疑问,过去 30 年计算中最重要的部分是现在每个人都参与其中。家用电脑只能追溯到 1977 年左右,而广泛采用则一直持续到 80 年代。现在,幼儿园、老年中心和你曾经拥有的每一个隔壁邻居都拥有一个。
Open Croquet http://www.opencroquet.org - 一个 Squeak,基于 Smalltalk 的 3D 环境,允许多个用户从内部交互和编程环境。它有自己的对象复制协议,用于在 Internet 上高效且可扩展地共享环境。**这很难描述,因为没有其他任何东西可以像它一样......
1)我提出这个是因为当我试图向其他人解释它是什么时,我发现他们希望我将它与其他事物进行比较......尽管存在很多元素,但我仍然没有找到任何类似的东西从其他系统(例如 Smalltalk、Open GL、etoys、虚拟世界、远程协作、面向对象的复制架构)来看,整体似乎比部分要多得多……
2) 与这里提到的许多技术不同,它还没有进入广泛开发的商业领域……
这两点都是早期技术的迹象。
我怀疑当 Alan Kay 开始研究它时,他可能一开始就在思考这个问题的主题。
互联网。
而已。
量子计算的数学在 1980 年之前就已经存在,但是硬件还没有出现,而且在未来很多年里可能在物理上和经济上都不可行。
快速聚类算法(数据点数量为 O(n log n)),例如DBScan(从 1996 年开始)似乎都可以追溯到 1980 年之后。
这些是数据挖掘技术普遍进步的一部分。
相比之下,在寻线方面缺乏进展,像 Hough 这样的不良缩放技术似乎仍然代表了最先进的技术。
如果我们认真地作为一个群体来回答这个问题。
不幸的是,我相信我们需要的不仅仅是一串善意的随机帖子!
我知道,这听起来很无聊,经常做事是!
我们在计算领域写了一个强大的想法列表
也许我们应该定义几个类别来分开每个类别,因为视频会议在某种程度上不适合面向对象的编程。
按类别查看想法可以更轻松地生成它们而没有冗余。如果量子计算不远离飞行汽车,那么在隐形传态中就很容易偏离轨道。
试着给他们每个人一个日期
这将解决 1980 年之前/之后的问题,并将关于每个想法的辩论限制在自己的范围内。挖掘最早的参考资料、第一个已知的实现等会很有趣。
另外,这将使像我这样在 1980 年 2 岁的人更好地了解 1980 年的常见编程知识(没有什么比在时间)
尝试将它们中的每一个归因于它们的当前实施状态
好吧,一些想法是 1850 年的科幻小说,在 1970 年得到早期发展,在 1990 年有重大改进突破。
一些想法才刚刚开始流行。有些几乎被遗忘了。
维基的东西可能是个好主意。
我认为如果稍微有条理的话,这真的可以到达某个地方。
我没有检查,但也许这整件事已经存在于网络上(我通常会发现,如果你想到某件事,有人已经这样做了)。
你怎么看 ?
干杯!
DOS。我不是 DOS 的粉丝,但感谢 DOS 和 IBM-PC 计算机是今天的样子(无论好坏)。
20 年前:面向对象编程——更好地处理软件复杂性。
现在:云计算——更好地处理硬件复杂性。
未来:声明性的东西,但还需要 20 年。
也许是从客户端服务器到点对点的转变。我讨厌整个云/SAS 的原因之一是它是对客户端/服务器的回归。
我口袋里有一个 VAX,你想让我假装它是 VT-100?
三通管盒
软件专利
这是我喜欢打电话给互联网的一件小事