五千年(敝帚自珍)

主题:Dylan Beattie:未曾存在过的互联网 -- 万年看客

共:💬2 🌺18
分页树展主题 · 全看首页 上页
/ 1
下页 末页
  • 家园 Dylan Beattie:未曾存在过的互联网

    https://www.youtube.com/watch?v=8JOD1AQGqEg&list=FL3RezzS-A7eu0NV9aDxzpdA&index=20

    作家亚当.道格拉斯曾经用以下规则来描述人类对待身边技术的态度:“任何在我出生时已经有的技术都是稀松平常的世界本来秩序的一部分;任何在我十五到三十五岁之间诞生的技术都是将会改变世界的革命性产物,你大概可以凭借它们谋生;任何在我三十五岁之后诞生的技术都违反了自然规律。”我本人生于1978年,刚好没赶上《星球大战》首映。在我出生的世界里,已经有了阿帕网,有了电子计算机,有了彩色电视,也有了个人计算机相互连接的理念,但是我们今天所熟悉的这个互联网尚且不存在。互联网大约是在我十五岁那年发明出来的,我也确实成为了一位互联网从业者。我当上了站点管理员,还学习了HTML。在我三十五岁之后问世因此违反自然规律的技术包括苹果手表、指尖陀螺以及所谓的Dabbing梗。

    道格拉斯真正想说的是,我们对于技术的体验极为主观,很大程度上取决于我们究竟在什么时候首次接触到了这些即将改变我们身边世界的设配、体系与理念。我们很容易就会忘记我们被技术包围着,很容易就会将这些神奇的设备视作天经地义的存在。道格拉斯还有另一句名言:“技术就是尚未百分百生效的东西,等到百分百生效之后就只不过是‘东西’而已。”椅子已经不会再失灵了,所以我们不觉得椅子是技术。反过来说,今天我们习以为常的一切技术产品当初都曾经经历过理念与原型机的阶段,都曾经是七拼八凑的一堆破烂,用线绳、胶水、代码、胶带与数据勉强维持着整体造型,然后才逐渐成熟起来。如果你在初期遭遇这些技术,恐怕至今仍会觉得它们不太靠谱。如果你在成熟期遭遇这些技术,则会觉得智能手机与电动车都是司空见惯的存在。

    我们很容易就会觉得技术领域遵循达尔文的适者生存原则。这么多原型、理念与解决方案——例如智能手机与数字化通信——相互竞争,最终胜出的必然是最优解。但是这种想法根本不对。我今天想审视一下互联网发展史背后的若干节点,看看有哪些关键大事的发生原因非常弱智。我要给大家讲一个故事,看看假如当年事态发展略有不同的话,今天的互联网会是什么样子。

    起初IBM创造主机,人们看主机是好的。这款计算机功能如此强大,以至于托马斯.约翰.沃森——日后的人工智能沃森就以他的名字命名——认为有朝一日需要建造五台这样的机器来满足全世界的需要。在二十世纪后半期,科学家与工程师将计算与信息理论从电子管系统移植到了半导体与电路系统。我们从机器码进化到汇编器又进化到编译语言。计算机冲出了实验室与大公司,开始向个人家庭进发。在二十世纪七十年代,IBM成为了计算领域的霸主。想一想现如今最大的几家科技公司,例如谷歌、Alphabet、苹果、亚马逊等等,在IBM面前都只能甘拜下风。苹果固然高高在上,但是总还有人在出售其他品牌的笔记本电脑与智能手机。但是在二十世纪七十年代末期,全世界的信息技术市场几乎就只有IBM这一家字号。IBM意识到,他们或许可以卖给人们一台体积足够小的计算机,让人们用车拉回自己家。托马斯.沃森或许看走了眼,或许计算机的销量能够超过五台。

    七十年代的IBM是个巨无霸,船大难掉头。体量如此庞大的公司不可能做出任何迅速决策,因为光是为了批准采购拨款就需要六个礼拜。于是他们想出了一个好主意:他们组织了一支特别研发团队,设计制造了全世界第一台个人电脑或者说PC。由于担心落在人后,IBM决定自己不负责新产品的制造工作,而是要从世界各地采购现成零件。需要母板?买一块。处理器?去找英特尔。串行总线?台湾、中国、新加坡或者随便什么制造业地区总有卖的。最后他们还需要操作系统,于是继续四处采购,想要找到全世界最优秀的为PC设计操作系统的软件公司。1981年哪家公司满足要求?这里姑且按下不表。

    正当IBM 忙着将计算机送进千家万户的时候,美国高级研究计划署或者说APPA正忙着将计算机联结起来。如果四台计算机连接在一起,那么就算其中一台被冷战军事打击摧毁了,原本的计算任务依然可以分配给其余三台来完成。工程设计的目标就是韧性。大约就在IBM推出个人电脑的同时,APPA也推出了名为互联网协议的技术规范。这套网际协议版本4或者说IPv4于1981年问世。画面上展示的是1973年的阿帕网地图,标注了阿帕网成为互联网之前每一台连在阿帕网上的设备。这张图是手绘的,当年真有一位绘图员用纸笔记录了全世界每一台联网设备。接下来到了1983年1月1日,这一天是互联网发展史的纪念日,因为这一天人们规定从今往后所有联网设备都必须遵守TCP/IP协议。在此前的1982年,人们还确立了标准的SMTP协议或者说简单邮件传输协议。TCP/IP协议确保了全世界的计算机能够互联,SMTP协议确保了全世界的计算机用户可以相互收发邮件。

    互联网由此开始成长起来。不断成长的体系面临的最大问题在于需要追踪成长状况。计算机科学只存在两个难题:缓存失效和命名——所以让我们来谈谈DNS。在DNS问世之前,假如你新建了一个服务器并且想要将其连接到互联网上,首先要给一位伊丽莎白.“杰克”.费勒女士打电话:“杰克,我有一台新计算机,麻烦你把它加入主机文件。”当时整个互联网上确实有一份主机文件,位于斯坦福大学网络信息中心。当时假如你的团队成员要去斯坦福大学开会,你就会叮嘱他们:“你到了那边能不能复制一份主机文件带回来?”鉴于当时电话费还算便宜,也可以用FTP协议将这份文件传输过来。又或者你可以拜托斯坦福大学用磁带将文件邮寄过来。总之当时的组织机构就凭借这一份文件管理联网主机列表。如果赶上公共节假日,你就没办法往主机文件里添加新内容,因为有权限添加新内容的人都回家过节去了。你也不可能在晚上、周末、感恩节或者圣诞节添加新主机。这个体系坚持了一段时间,但是显然互联网的规模已经成长到了人工编辑应付不来的程度。或许我们需要一个更好的系统。

    于是就来了一位保罗.莫卡派乔斯,来自南加州大学——这所学校的其他发明包括Unix操作系统与迷幻药LSD,感谢贵校对社会做出的贡献。南加州大学告诉保罗.莫卡派乔斯:“我们需要为现有系统找一个更好的解决方案。我们这里有五套现成的方案,麻烦你把最好的一套挑出来。”莫卡派乔斯的做法正是我觉得我自己也会采取的反应。他看过了五套方案,认为都很垃圾,于是自己另起炉灶整了一套新方案,也就是DNS体系。这是一套层级式数据库,用来存贮主机名与网络地址。他当初设定的规格直到今天都几乎没有变动。因为根据他的设计,随着网络复杂程度不断升级,这个用来支持网络的体系也能跟着升级。连接网络的主机越多,DNS服务器就越多,就越能实现负载均衡,缓存的数据就越多,越用不着在根服务器上查询。时至今日这套体系依然支持着上亿个域名。

    舞台就这样布置好了。TCP/IP问世了。DNS问世了。SMTP问世了。各种约定与协议都问世了。商用硬件十分便宜。个人电脑开始逐步普及。然后在法国与瑞士交界处的欧洲核子研究组织——简称CERN——来了一位网络开发人员蒂姆.伯纳斯.李。“网络开发人员”至今依然是李为自己选定的工作头衔。其实就算他自称“天字一号网络开发人员”也完全当之无愧。李注意到CERN已经拥有了出色的内部网络。但是假如他的物理学家与数学家同事们想要发表自己的成果让别人阅读,并不存在现成的数字化学术期刊。于是他想解决在网络上发表内容的问题。于是他写了一篇文章,名为《信息管理:一份建议》,呈交给自己的上级。上级的批语很简短:“含糊但刺激……”

    从马后炮的角度来看我们很容易以为这就是日后的万维网。当时我正在南安普顿大学读书,那是在1997年。我的一位教授提出了另一个超媒体解决方案与李打擂台。早在万维网问世之前,曾经举行过一场全球超媒体大会。按照我的教授的说法,“我到了会场,向他们展示了我的系统。下一个提交方案的是一个来自CERN、名叫蒂姆的家伙。听他说完之后我心想:‘唉,这回咱们没戏了。’”南安普顿大学提交的解决方案名叫Microcosm,屏幕上展示的是这一方案运行时的截屏,运行系统是Windows 3.1。

    Microcosm并没有采用嵌入式超媒体,因为这一系统的设计思路是“我们希望用户不必非得修改他们的文件格式就能使用这个系统。这些文件早就存在,我们不希望改写一切。我们要发明一款网络服务器,用来支持一个链接数据库,这个数据库要与链接内容相互独立。你可以将你的文本文档、富文本文档、WordPerfect文档以及不管什么格式的文档存放在文档共享网络。我们会提供索引服务,这项服务不会触碰文档内容,但是会搜索关键字与内容并且在不同内容之间创建链接。我们要在内容边上新开一个窗口显示所有链接,所以你看到的原始文件永远都是作者希望你看到的样子。”图书馆员与信息分析师都很喜欢运用超媒体。Microcosm系统延续到了今天,经过商业化之后成为了一家创业公司,名叫Multicosm,主营业务是为大型诉讼服务。当某大公司的服务器成为诉讼物证之后,就由Multicosm在其中发现与整理各种有用文件。直到今天这家公司依然在采用这项技术的各种变体来整理文件目录。根据这种截然不同的设计哲学,日后的在线超媒体运作机制原本将会是另外的样子。但是……

    【“这扇门要用你的想象力来开启。门后是另一个维度,一个声音的维度,幻象的维度,思维的维度。你步入了一片阴影与实体、物质与思想不分彼此的疆域。你刚刚穿越进入了阴阳魔界。”——1959年版《阴阳魔界》片头画外音】

    回到CERN那边,时间是二十世纪九十年代初。蒂姆.伯纳斯.李正在办公室里研究一个名叫Mesh的新玩意。当时还有其他人也在研究与Mesh相关的新项目,于是他决定给Mesh改个名字。要不然称之为万维网(World Wide Web)如何?他一边想一边随手在纸上划拉着WWW。不过那一天发生了一件很凑巧的事:CERN断网了,他不得不依靠电话与别人沟通。他拿起电话说道:“嗨,这里是达不溜达不溜达不溜。”对方说道:“好家伙,你这个缩写怎么念起来比全拼写还绕嘴?”李觉得此言有理。于是当天下午四点他与同事们喝茶的时候就问大家:“我这里有这么个玩意需要起个名字,谁有好主意?”有人说:“要不然管它叫做国际信息交互(International Information Interchange)怎么样?缩写是III。”又有人说:“不好不好,听着好像海盗吆喝。”第三个人最近正在看《神经漫游者》,于是提议:“我觉得应该叫多国元数据矩阵(Multinational Metadata Matrix),简称MMM。”一阵七嘴八舌之后,大家最终确定的名称是全球互联文件存放处(Global Repository of Interlinked Documents),缩写为GRID,简称格棂网。

    名字已经定了,接下来李需要确定通信协议。之前的通信协议都叫做“某某某传输协议”。既然这里用到了超文本,那就应该叫做超文本传输协议(Hypertext Transfer Protocol),简称HTTP。然后他又想,这个协议需要支持几项基本操作,这些基本操作又分别应该怎么称呼?他想到了借鉴结构化查询语言。首先要有选择(select),在某个服务器选中某个文件并且带回来;其次是创建(create),既在格棂网上发布内容;更新(update),上一次发布的内容有误,请撤下那些内容,转而发布现在这个新版本;删除(delete),请撤回这些内容,律师刚刚联系我了。然后李的一位同事说,或许还能再支持一项功能,要不要再加上提交(submit)?这样用户可以向系统发送指令并且要求系统采取相应行动。李认为这套操作名称起得很好,因为全都是六个字母。在格棂网的日志文件里,只要字体合适,这五条操作就可以排成一个整齐的方块。

    有了协议,有了操作名称,有了各种资源。无数格棂网网页即将发布,还需要某种方法来分辨我们想要选取的内容。李想到的方法是设计一个标准独特性资源访达(Standard Unique Resource Finder),缩写是“冲浪”(surf)。这个缩写还挺上口,不用多久人们就会在格棂网上冲浪了。李起草了一份访达格式的雏形:http://user:pass@grid .domain.com:port/ path?query#fragment。有人提出异议:访达将会是出现在用户界面上的公开文本,为什么要将用户名与密码放在里面?李说多谢提醒,这个设计确实很脑残。于是第二版格式就变成了http://grid.domain.com:port/path?query#fragment。又有人说能不能再简化一点?查询片段都是可选的,我们只保留http://grid.domain.com/path就行。又有人说反正会有默认文件,所以只需要http://grid.domain.com/就可以托管默认文件。又有人指出,双斜杠也没啥用处,这是从Unix文件系统借用过来的。但是我们现在创建的并不是文件系统,而是完全的新事物,所以斜杠也用不着保留,只需要保留http:grid.domain.com。最后还有人指出,如果连上网的主机的名称是个数字,比方说http:1234,那么主机名称与端口名称很可能会混淆。于是又改成了http!grid.domain.com,这样一来协议与主机就区分开了。最后有人说,我们应该设立这样一条惯例:假设你的网络上有一台主机,主机名与你正在使用的协议名称相同,那就把协议部分去掉,只留下grid!Website Domains Names & Hosting。这就是完全符合标准的默认文件格棂网地址。有同事问他:“蒂姆,‘格棂-感叹号-CERN-点-org’念起来是不是有点傻?”李回答道:“总不会比‘埃吃-踢-踢-屁-冒号-斜杠-斜杠-达不溜达不溜达不溜-点-CERN-点-org’念起来更傻。”同事说:“言之有理,幸亏咱们没干这种脱了裤子放屁的蠢事。”

    下一步,我们需要呈现这些文件与超媒体的方式。李想到了标准通用标记语言。这种语言早在二十世纪八十年代初就存在于排字行业。他觉得可以将这个现成的系统简化一下。于是他就设计了超文本标记语言0.1版,交给同事们征求意见:

    <HEADER>

    <TITLE>格棂网计划</TITLE>

    </HEADER>

    <BODY>

    <H1>全球互联文件存放处</H1>

    简称格棂网,是一项广泛的<A NAME=0

    HREF="WhatIs.html">超媒体</A> 信息获取倡议,旨在为庞大的文件宇宙提供通用存取<P>

    </BODY>

    蒂姆在CERN工作,他的同事大都是科学家、数学家与物理学家,他们发表的文章里有很多公式,而公式少不了大于号与小于号。于是他们向李反映道:“求求您别用这么多尖括号行吗?要不然我们一旦在你那个格棂网上发表文章就会全网崩溃。”李觉得这项意见很值得重视。所以他建立了一个语料库,收集了各个线上服务器的文件,对它们进行频率分析,想要找到最不常用的ASCII字符来替代尖括号。谁想猜猜最不常用的字符是什么?是7D的闭花括号。于是李决定用花括号来标记新语言。规则一,语段之间要空一行。这意味着绝大多数文本文档可以直接成为有效文件,因为当时的人们大多用纯文本写作,极少使用花括号,而且分段就敲两下回车。我们应当保留这种行为,这样一来绝大多数文件不用修改格式就能直接在网上发表。然后他搞出了超文本标记语言0.2版:

    ~html(lang:en){

    ~metadata{

    ~title{这也是HTML,吉姆,但是与我们所知的截然不同……}

    ~document{

    ~h1{Hel1o, World!}

    ~p{

    使用HTML,我们可以分段,甚至还可以

    ~链接(surf:grid!cern.ch/hello.html){link}

    其他文件进入我们的段落!

    }

    ~img(surf:grid!cern.ch/images/test. jpg){Test Image}

    这一版语言用冒号与关键值语法来指代对象。他意识到这套语言需要包含一部分元数据以供机器阅读并且将其展现在用户界面的其他部分,同时也要包括文件部分以供人类阅读并且展现在用户界面的主要部分。他规定了标题,他规定了分段,他规定了创建链接的格式。有人说:“蒂姆,干嘛叫link不叫anchor?”他答道:“别傻了,叫anchor干什么?”他还创建了嵌入图像的方式。

    1992年2月,李在网上发表了自己设计的规范。整个世界都为之疯狂。所有人都感染了格棂热。全世界的公司都在想:“我们需要赶上这一波。有谁懂得格棂网怎么玩?”人们开始参加二日速成课,各种所谓的格棂大师纷纷涌现并且取得了商业成功,因为他们的名片印的很好看,还因为他们知道谁也不知道他们不知道自己究竟在干什么。一切都是新的,一切都令人兴奋——碰巧的是我当年正是这样得到了我的第一份工作。这股热潮随着第一款开源格棂网图形浏览器Mosaic的问世达到了高潮。设计这款浏览器的机构是位于伊利诺伊大学的美国国家超级计算应用中心或者说NCSA。这款浏览器的功能极强,比方说它能支持NNTP,让用户可以浏览新闻组。它也支持Gopher检索与FTP。同时它还支持最新的格棂网协议。它能浏览格棂网页,能展现图像,能外链其他内容。全世界都注意到了这款浏览器。

    刚才我说过,在八十年代初期,IBM开始研发个人电脑,此时他们正在到处寻找运行这台电脑所需的操作系统。于是他们找到了业内的绝对精英,在其他任何地方都再也找不到一群如此优秀的个人电脑操作系统工程师——这就是数字研究公司。公司老板加里.基尔代尔某一天听见有人敲响了办公室大门,来者是IBM:“我们想购买你们的操作系统。”双方随即商谈了一阵。基尔代尔意识到了一项关键,而IBM 则一直没有意识到这一点:如果你的旗舰电脑产品是用从中国、新加坡或者台湾采购的现成元件拼起来的,那么其实什么都不是你的。应用的关键不再是硬件,因为硬件谁都能买。应用的关键在于操作系统。于是基尔代尔寻思一阵之后答道:“很好,我愿意向你们出售我的CPM——微电脑控制程序——的使用许可证。有了这份许可,你们可以任意复制出售我们的程序。此外如果你们同意让我也为自己颁发一份同样的使用许可证,好让我自己继续销售这个程序,我就给你们打五折。”双方一拍即合。IBM将会销售安装了CPM的个人电脑,基尔代尔的数字研究团队继续开发这款程序。

    当IBM在1984年首次推出他们的16Bit个人电脑时,数字研究已经做好了准备,推出了自己的MPM——多任务程序微电脑。这是史上首个真正的多任务操作系统。这个新系统不受任何历史包袱的局限,例如8086处理器留下的640k内存限制。这是一个保护模式16Bit操作系统,由80286处理器运行,并且压榨出了这款处理器的全部性能。但是真正让这款操作系统跻身一线之列的特色在于它能在任何兼容硬件上运行。于是世界各地都纷纷冒出了米色IBM电脑的仿制品。买一台这样的仿品,再安装上数字研究的操作系统,一切就齐活了。等到IBM终于意识到自己犯了多大错误的时候,数字研究已经一跃成为了全球最大的软件公司。

    与此同时在加州那边,也有人想要跟数字研究竞争。自从七十年代末期苹果II电脑问世以来,苹果公司一直顺风顺水。此后他们又推出了丽萨与麦金塔这两款产品。但是苹果总部的状况并非完全健康,而是充满了内讧。最终在1987年苹果遭到了恶意兼并,然后股东们就将高瞻远瞩的天才、苹果公司创始人史蒂夫.乔布斯一脚踢出了公司。愤愤不平的乔布斯随即在苹果总部的马路对面成立了自己的新公司,好让他们知道自己接下来打算干什么,新公司的名字是Next。乔布斯已经受够了米色。今后他的产品都将是黑色系。新公司打响第一枪的产品名叫NextStation,主机箱是一个边长八英寸的黑色立方体。谁都没见过这样的东西。IBM的仿品一台只需八九百美元,NextStation却叫出了零售一万美元一台的天价。这款产品的目标用户是电影特效设计师、医学研究人员以及高端软件研发部门。有几台这样的机器也来到了CERN。蒂姆.伯纳斯.李正是在这台机器上开发了格棂网的若干原型应用程序。第一款格棂网浏览器名叫Gridbrowser.application,最初正是在Next系统完成了首次运行。

    与此同时,数字研究与全世界第二大的软件公司WordPerfect合并了。这次合并让美国司法部折腾了一年半。司法部觉得自己决不能坐视不管,决不能允许这么强大的公司存在,但是他们实在没有阻挡这次合并的手段。于是完美数字公司就成立了。新公司刚刚成立就酝酿了一个大计划。他们有全世界最优秀的办公系统,他们有全世界最优秀的文字处理器,他们有全世界领先的操作系统。现在他们想要一个属于自己的格棂网浏览器,从而能在他们自己的平台上浏览格棂网。于是他们找上了两位人才。左边这位名叫吉姆.克拉克。克拉克是硅图公司的创始人,他在整个八十年代都在致力于开发超高性能3D图像工作站。右边这位名叫马克.安德森。安德森一直在国家超算中心工作,他是Mosaic格棂网浏览器的创作人之一。出于各种原因,此时两人都辞去了原本的工作,正在寻找新的项目。或许我们可以再制作一款更好的浏览器。Mosaic固然不错,但是我们可以再制作一款Mosaic杀手,就叫Mozilla。这时他们两个接到了一通电话,电话那头是任天堂公司。任天堂说道:“我们正在研发一款任天堂64主机,我们非常希望用户只要将这款主机插进墙上的电话线接口就能与世界各地的朋友们联机打《马里奥赛车》或者《大金刚》。”克拉克与安德森冥思苦想了半天,认为这是个好主意。于是Mozilla项目就被搁置了下来。两人搬到西雅图为任天堂工作。

    来到新公司的第一周,克拉克与安德森遇到了两位神采奕奕的小伙子,一位名叫约翰.卡马克,另一位名叫约翰.罗梅洛。在几年前的一个燃烧了大量披萨饼与咖啡因的漫长周末,两位约翰将《超级马里奥兄弟3》移植到了个人电脑上。他们将移植过来的游戏录在磁盘里,寄给了任天堂:“你们看,我们做了一个能用286处理器运行的横版卷轴游戏。”任天堂表示:“干得漂亮,来为我们工作吧。”于是在西雅图凑齐了来自硅图的克拉克,来自Mosaic的安德森,或许是历代图像程序员当中最优秀的约翰.卡马克,以及关卡设计达人约翰.罗梅洛。这四个人拿着任天堂提供的资金开始闭关修炼,谁也不知道他们究竟会捣鼓出个什么东西。

    与此同时,完美数字公司再次回到了绘图板跟前。他们正在研发一款GEM3 Desktop,依靠286处理器运行的图像化操作系统。克拉克与安德森另寻高就之后,他们开始物色名单上的下一位人选,发现康奈尔大学法学院图书馆里有一位馆员名叫托马斯.布鲁斯,他为MPM与GEM系统写了一款Cello浏览器。完美数字公司与法律界历来关系紧密,因为WordPerfect是美国各大律所一致使用的文字处理软件。于是公司很快与布鲁斯达成协议,买下了Cello的源代码,做了些优化,添加了几项特性,推出了GridPerfect浏览器。这款浏览器包含了一项即将改变分布式计算的功能。在推出了GRID之后,他们又推出了SAFE——安全应用框架加密(Secure Application Frame Encryption)。有史以来第一次,你的格棂网电脑可以不受刺探地访问格棂网服务器,别人全都无法得知你在干什么。突然间,他们加在原始协议当中的“提交”这个动词一下子有了用武之地,因为人们可以利用这个动词做出各种事情来,不仅局限于“给我这份文件,更新这份文件,删除这份文件”。他们将WordPerfect纳入了这款浏览器,所以凡是能阅读格棂网协议的人也可以对其进行改写。从问世第一天这个浏览器就具备了发表能力。任何一个人只要得到了一份格棂网协议,也就得到了经过授权的修改工具。

    但是没过多久人们就觉得,在处理静态文档的时候什么事情都要自己动手实在太局限了。能不能设计一款编程语言,嵌入客户端与格棂网服务器,我们可以通过这款语言做出丰富的应用。在九十年代中期,如果你想在商用软件里嵌入编程语言,只有一个选择,只有一位脱颖而出的选手,也就是语言。虽然已经问世了半世纪,Lisp依然历久弥新。每一代程序员当中都会有几人重新发现Lisp的艺术。Lisp是一款优雅的武器,来自一个更加文明的时代。有一位保罗.格雷厄姆刚刚成立了一家创业公司名叫ViaWeb。这家公司很早就意识到,Lisp是一种极其适合构建格棂网服务器的语言。格棂网协议是无状态的,而Lisp语言则天然支持接续传递风格,可以横插进一系列进程当中捕获一项执行,留下截屏记录,然后根据日期恢复进程,用不着不停地分配状态、共享内存以及其他各种开销与资源。

    通宝推:桥上,nanimarcus,
    • 家园

      大约与此同时,此前一直忙着销售Solaris电脑的太阳微系统公司也发明了一种语言,起名叫做Java。他们正在大力推广这种语言,希望所有人不管干什么都用Java。他们找上了完美数字,“我们非常希望你们也能采用Java。”完美数字答道:“这个嘛,我们其实已经看好了一种语言。”“那你们能不能给这种语言改个名字?你们现在管它叫什么?”“HyperLisp。”“能不能改成JavaLisp?”于是他们将保罗.格雷厄姆叫来开会。在接下来的漫长下午,格雷厄姆详尽解释了自己的设计哲学。他向他们介绍了Lisp的历史,他介绍了符号类型,他在那天下午的讲话日后将会以文章的形式登上格棂网,标题是《Blub悖论》,讲的是为什么编程语言并非生来平等。等到这天下午结束的时候,Java基本上已经断气了,HyperLisp大获全胜。之所以HyperLisp能够获胜,是因为格雷厄姆指出,HyperLisp的每一段编程代码同时也是表达式,每一则表达式都是数据结构。用户用不着序列化或者反序列化任何内容。你可以将随便一个执行了一半的程序转化成数据结构,顺着网线发送给客户,对面收到之后略微复原一下就能继续运行。这是进行分布式客户机/服务器应用的强大模式。格雷厄姆告诉财务人员:“这一点意味着任何一个使用你们的应用的人都将自己的电脑贡献给了你们,让你们在他们的电脑上运行代码,这一来你们将会省下大笔基础设施开销。就像DNS一样,使用你们的解决方案的人们越多,你们的运算能力规模也会随之变大。”Java就此出局,客户机/服务器格棂网编程的未来属于HyperLisp。

      谁想看看HyperLisp什么样?你们肯定想看。

      ~html(lang:en){

      ~metadata{

      ~title{Hello World in HyperLisp}

      }

      ~code(type=text/hyperLisp){

      (bind (document "load" )

      (lambda (element event)

      (alert "Hello World!"))))

      }

      ~document{

      ~h1{你知道,HyperLisp就是未来!}

      此时的html已经进化到了4.01版本,因为4.0的规格有拼写错误。你可以将整块HyperLisp代码嵌入你自己的代码。Lisp代码要从后往前读,因为它用的是前缀表示法。我们要将文档的加载事件——我不会说文档对象,因为Lisp没那么笨——我们要将文档的加载事件与Lambda表达式绑定。到时候就将触发元素与被触发的事件传递下去并且运行代码,代码就是alert(Hello World)。接下来我们再看一个略微复杂一点的例子:

      ~html(lang:en){

      ~metadata{

      ~title{Server postbacks using HyperLisp}

      ~code(type=text/hyperLisp){

      (bind (main-form SUBMIT)

      (lambda(element event)

      (set-va1ue greeting-span

      (grid SUBMIT"grid!foo.com/greeting") (get-value element)))

      }

      ~document{

      ~h1{你知道,HyperLisp就是未来!}

      ~form(method:SUBMIT,id: main-form){

      ~input(type:text){你叫什么名字?}

      ~input(type:button,action:submit){行动!}

      }

      ~p{Hel1o,~span(id:greeting-span)}

      }

      现在我们的页面上有一张表单,我们要将提交事件与Lambda表达式绑定。从后往前读,我们能看到这里用了格棂网提交方法。这样一来网络代码也成了这段代码的一部分,可以向服务器发送回调并且从服务器那里获得回应。得到回应时——这个过程故意被设计成异步进行的,因为为啥不呢?——就会将范围数值设定为服务器发回的回应。下半部分是一段范例式标记语法,具体来说是分布式客户机/服务器应用。在某个平行宇宙里,将会有人花费十年时间试图让Java实现同样的功能,还给最终成果起名叫Ajax,简直难用得要死,而且还得花钱买。现在这些代码则是免费的。因为Lisp包含了符号类型,你可以将元素与浏览器的基本运行时间直接用符号标记,用不着命名空间与限制。我们可以在变量名里面使用连字符,因为算术运算符用得都是后缀注释。在另一个平行宇宙里,人们会因为代码风格没完没了地开会,该用空格还是骆驼命名法又或者该用下划线。但是在我们这个宇宙,所有人都公认该用连字符。Lambda回调实现了客户机/服务器异步沟通。总之这是一个简单、优美而又强大的编程模式。

      正当我们忙着研究Lisp语言的全部潜能时,窗外突然鼓乐喧天。却原来完美数字公司刚刚推出了GEM95,有史以来最强大的桌面操作系统。为了给庆功会助兴,他们甚至邀请披头士乐队再度聚首。这款系统自备格棂网浏览器,从基本层面上就与格棂网整合成了一体。他们还推出了免费版本的WordPerfect——这款赠品不支持打印机——用户可以拿来撰写文档并且直接发到格棂网上。他们的浏览器还配备了虚拟返回键。所有人对这款产品都爱不释手。未来一片光明——除非你为苹果工作。

      自从将乔布斯扫地出门之后,苹果公司就每况愈下,如今正在苦苦摸索。他们需要走一条新路,他们需要新的操作系统,他们需要新的品牌。基本上他们需要改弦更张。时任苹果CEO的吉尔.阿梅里奥有一次在董事会会议上提出:“要不然我们把Next收购了吧,顺便把乔布斯请回来。”这项愚不可及的提议引起了哄堂大笑。乔布斯可是被他们一脚踢到马路对面去的,他根本不可能再回来。不过乔布斯并不是唯一一位远见卓识并且离开苹果的工程师。Be.Inc是一家创业公司,他们的主打产品名叫BeOS,是一款全新的高性能操作系统。这款系统为在线流媒体提供了专门的线程支持,可以在线实时沟通,还能编辑音频。Be意识到,尽管他们的操作系统非常优秀,但是要造一款同样优秀的电脑来承载这个系统却殊为不易。

      于是他们改变了策略,转而在外界寻找合适的硬件。鉴于设计这款系统的两位工程师都曾经任职于苹果,他们决定将这款操作系统导入苹果硬件。于是他们安排了与苹果公司的会面:“我们有一款优秀的多线程实模式/保护模式操作系统,你们有没有兴趣收购?”苹果大喜过望,这正是他们一直在寻找的东西。他们喜欢BeOS的界面风格,也喜欢这个品牌。接下来问世的下一款苹果电脑被媒体戏称作“香蕉盒子”。此前的个人电脑外壳要么是米色要么是黑色,还从没有人想过选择明黄色。所有人都想在自己家里摆上一台。而且这款机器还配备了神奇的BeOS操作系统。现在苹果唯一欠缺的就是一款格棂网浏览器。

      于是苹果开始打电话,先联系了Cello团队,对方表示我们已经与完美数字合作了;然后苹果给国家超算中心打电话,对方表示Mosaic本来就是开源的,而且近几年已经不太中用了;再然后他们打给了挪威电信公司,对方表示真巧,我们还当真一直在开发一款格棂网浏览器名叫Opera,现在我们想不好究竟要拿这东西怎么办。于是Be、苹果与挪威电信三方决定合作。苹果买下了Opera的源代码,Presto渲染引擎,以及运行这一切的网络堆栈,然后将这款浏览器更名为BeLink。因为自动纠错机制,这个名字立刻就被改成了Blink。Blink支持一切格棂网协议与功能,还具有十分犀利的编辑器。于是苹果一夜之间又重新成为了一线竞争者,面对运行完美数字系统的米色山寨机巨无霸也丝毫不怵。

      全世界的人们都安装了这样那样的系统,铺天盖地地发布网页。人人都在拨号上网,人人都在免费领取5MB的线上存储空间。因为在本时空我们从未发明过庞大的Java框架,所以5MB的空间绰绰有余。这样一来在格棂网上找到好东西就变得非常困难,因为人们什么垃圾都往网上放。他们觉得只要先吸引住用户,日后慢慢再想怎样通过流量赚钱也不迟。于是格棂网计算的下一个难题就是如何寻找内容,如何找到我们想看的东西。在斯坦福大学有两位博士生,一位名叫谢尔盖.布林,另一位名叫拉里.佩奇。两人在车库里捣鼓出了一套算法,起名叫做BackRub。之所以起这个名字是因为算法可以通过指向某个文件的链接数量来判断这个文件多么可信。如果许多网页链接都指向你的网页,那么显然你很重要。如果你的链接指向了另一个网页,那么那个网页大概也很重要。这是个非常聪明的想法。两人都认为这个点子大有可为,是不是该改个名字?佩奇说:“我孩子那天在学校里学到了一个数字名叫google,一后面跟着一百万个零。我觉得这个名字比BackRub好听。更何况我们还没成立公司,名字要是不响亮人家根本找不着咱们。”于是他们给算法改名谷歌然后去注册域名。不过又是因为自动拼写纠正的原因,最终注册成功的域名是Goggle.com。

      够格搜索引擎一经问世就大受欢迎。它的主页采取极简主义设计,而其他格棂网门户网站的页面全都塞满了广告。问题在于佩奇与布林完全不知道应该怎样通过够格来赚钱,因为他们坚持要将够格无偿提供给人们使用。于是他们开始寻找商业计划,而且还不能是收广告费。然后两人接到了一通电话,电话那头是史蒂夫.乔布斯。乔布斯正在酝酿一项大动作,很有兴趣收购够格的网页排序技术。我们不知道接下来双方的商谈细节,也不知道这笔交易的成交金额是多少钱。但是我们知道接下来发生了什么。

      1999年4月,计算机行业的新闻记者们都在谈论千年虫。一旦到了新年午夜,无数核导弹就将拔地而起毁灭全人类,因为我们处理不了四位数日期什么的。但是这一天,千年虫恐慌突然被打断了。硅谷里的每一位计算机记者早上一上班就发现自己桌面上摆着一个黑信封,信封里是一张黑色的卡片,卡片正面印着一行字:“准备好迎接下一代。”卡片背面印着时间地点:“门罗公园露天剧场,1999年5月4日。”记者们的第一反应是《星球大战》要出续集,因为5月4日是原力日。于是他们给乔治.卢卡斯打电话,卢卡斯影业表示:“少开玩笑,脑子有病的人才会给星战拍续集。”各种流言越发喧嚣,谁也不知道“下一代”究竟是什么意思。

      5月4日到了,门罗公园剧场里人头攒动。上午九点,全场骤然鸦雀无声,因为史蒂夫.乔布斯走上了舞台。他先谈了几句格棂网与数字出版,技术如何赋权普通人,信息技术如何冲击了社会。正当人们寻思着他到底想说什么时,乔布斯从讲台下面掏出了一台……那是什么?笔记本电脑?乔布斯将这款产品称作NextBook,谁都没见过类似的东西。它的厚度不到一英寸,外壳由一整块铝车床加工而成,颜色是端庄典雅的阳极电镀黑色。外壳上看不到磁盘驱动器开口,看不到光驱开口,看不到串行端口。有人忍不住嘀咕:“那可怎么连接打印机?”旁边的人小声答道:“还连接什么打印机?这可是未来!”外壳上的开口就只有两个USB端口与一个耳机插孔。人们开始窃窃私语:这玩意怎么连接别的设备?怎么玩游戏?没有磁盘驱动器要怎么运行《模拟城市》?

      这时乔布斯终于放出了大招。事先潜伏在观众席里的工作人员——二三十名苹果员工——从各自的座位底下掏出NextBook,掀开盖子,屏幕上赫然是乔布斯在台上讲话的在线直播。在这一刻之前从没有人听说过Wifi这个词,从没有人看过在线直播视频,从没有人见过这样的笔记本。记者们忘记了自己身为采访人员的本分,一个个挥动胳膊肘顶开别人的脸,从后排座椅爬到前排,只为仔细看一眼这款产品。他们全都被惊得目瞪口呆,忘记了自己还要写采访稿。因为谁都没见过这种东西。这是全世界最轻最快的笔记本,主频336兆赫,ARM Risc处理器,主存空间64MB,闪驱空间5G。它的操作系统是Next公司自行开发的NextStep。它内置无线网络连接。买一台Next配送一个名叫NextExtender的盒子,尺寸相当于一本精装书,装有光驱驱动器。将此物插在电话线接口上可以为全家提供无线网络,将用户从电话线接口周边解放了出来。最后,NextBook当然也配备了自己的崭新格棂网浏览器Nexus。Nexus的基因可以一直追溯到十几年前蒂姆.博纳斯.李在Next系统上开发的第一代格棂网浏览器。它响应迅捷,它具有最快的HyperLisp解释器,而且它还与够格搜索引擎实现了完全整合。不管你要找的东西是在文件夹里、备份文件里还是在电子邮件里,只要挂在格栅网上就一定会被搜到。乔布斯王者归来,下一代闪亮登场。

      千年虫来了又去,核导弹并未拔地而起,没有人丧命,但是我们全都经历了难忘的宿醉。计算领域的下一代看上去是这样的:乔布斯的Next公司主打NextBook、Nexus浏览器以及蒂姆.博纳斯.李最初设计的操作系统;苹果公司的香蕉盒子电脑运行的是从挪威电信买来的Blink;完美数字主打GEM/95办公系统,可以一路追溯到法学院图书馆员发明的Cello浏览器;最后太阳微系统公司居然一直还在经营:“我们的Mosaic浏览器支持Java!”可是谁都不理会他们,但是他们花了大钱做市场营销,一时半会还不会离场。

      然后任天堂又搞出了一条大新闻。自从吉姆.克拉克、马克.安德森、约翰.卡马克与约翰.罗梅洛在西雅图聚首以来,已经有很多年没人听说任天堂有什么动静了。他们确实制作了一款大受好评的《超级马里奥:雷神之锤大冒险》,但是之后又没了消息。直到2002年圣诞节,任天堂突然推出了一款号称要改变世界的全新平台,名叫Reality。这是一款用VR技术支持的大型多人在线游戏,提供浸入式全3D体验,一经问世立刻风靡全球。卡马克与罗梅洛终于将尼尔.史蒂芬森构想的元宇宙或者威廉.吉布森在《神经漫游者》当中描写的矩阵世界搬进了现实生活。图像代码、数据可视化、交互界面出自两位约翰之手,联网代码来自安德森,驱动一切的3D图像引擎是硅图的直接后裔。虚拟现实从此终于成为了现实。

      今天的我们简直无法想象,没有这些技术的生活会是个什么样子。你能想象一个没有Blink、没有HyperLisp、没有BeBox与NextBook的世界吗?那也太扯了吧。

      不过,我刚才讲的这个故事究竟几分真几分假呢?

      1981年,IBM确实曾经到处寻找操作系统。他们确实敲响了加里.基尔代尔的房门,想买他的CPM来搭配自己的个人电脑。但是当时基尔代尔并不在办公室。当天天气很好,所以他开着飞机兜风去了。这个故事还有另一个不那么浪漫的版本:基尔代尔只是单纯不喜欢IBM,于是告诉对方赶紧滚蛋。不管怎么说,IBM第一个找上了基尔代尔,他则拒绝了对方的邀约。于是IBM又找上了名单上排名第二的人物,一位创业精神强烈的青年人,名叫威廉.亨利.盖茨三世,简称比尔.盖茨。此人搞了一个名叫微软的操作系统。顺便一提,在我们刚才设想的平行宇宙里,此时的盖茨正在西雅图经营一家十来个人的工作室,忙着构建一款HyperLisp漏洞清除工具。或许只要IBM再坚持与基尔代尔多碰几次头,微软就将无法成为日后那么庞大的公司,而使用完美数字操作系统的IBM个人电脑将会席卷全世界。

      至于蒂姆.博纳斯.李与万维网呢?

      【记者:请允许我问一个历史问题。我们现在生活的这个世界一定程度上是由你构建的。如果有可能的话,你希望从头再返工一遍吗?你会做出若干修改吗?在哪些方面你会换个做法?】

      【李:这是个好问题。当然我们不可能从头再来一遍,不过确实有些小事我觉得可以再改一下。比方说当初设计URL格式的时候,我把开头设定为https://。双斜杠的用意是表明我们从顶端往下展开,不过这样一来冒号就没用了。可是现在人们全都不会将冒号与双斜杠分开使用。现在想想,我真用不着加上双斜杠。现在就连广播电台的播音员都说什么“斜杠斜杠”。想想吧,假如当年我去掉了双斜杠,每年能节省多少油墨?】

      HTML呢?这款语言脱胎自标准通用标记语言或者说SGML,这就是尖括号的来处。此外SGML也不是唯一的标记语言。LaTeX自从二十世纪七十年代初就存在了。CERN的许多工作人员都很熟悉LaTeX。HTML很容易就会换一套基础。微软自从八十年代后期就开始使用富文本格式,这也可以成为HTML的基础。

      嵌入Lisp作为编程语言的想法并非异想天开。保罗.格雷厄姆确实成立过一家ViaWeb公司,他与合伙人确实在二十世纪九十年代中期尝试过用Lisp构建网络服务器。后来格雷厄姆将ViaWeb卖给了雅虎,成为了百万富翁。他用这笔钱成立了创业投资公司Y Combinator。至今Lisp语言依然嵌入在各种程序里。AutoCAD与Emacs都嵌入了Lisp系统。Lisp是天然的编程语言。甚至有一则逸闻声称,当年网景浏览器想要拉拢布兰登.艾奇为他们效力,因为他们希望将Lisp嵌入网景浏览器,最后由于时间与营销两方面的压力才改用了JavaScript。

      约翰.卡马克与约翰.罗梅洛确实将《超级马里奥兄弟3》成功地导入了IBM个人电脑,也确实给任天堂寄去了样本磁盘。但是在我们这条时间线上,任天堂的反应并不是“干得漂亮,来为我们工作吧”,而是“干得漂亮。不过这玩意要是让其他人看见了,我们就要把你们俩告得连亲妈都认不出来。”任天堂根本不想制作电脑版的游戏,唯恐有人盗版。插入式卡带这一硬件就是最有效的版权保护机制。

      吉姆.克拉克与马克.安德森确实差点与任天堂签约去研发联网游戏。那样一来网景浏览器将永远不会问世,马克.安德森也将无法成为《时代周刊》的封面人物,光着双脚站在一大堆现金跟前。这两个聪明人当时面前摆着好多项目:“这个项目挺好玩,那个项目也挺好玩。要不我们还是干那个吧。”这都是一念之间的事。

      Cello浏览器确实存在,依托微软系统运行。作者的确是康奈尔大学法学院图书馆馆员托马斯.布鲁斯。BeOS是确实存在的操作系统,确实由两位曾经的苹果员工编写。BeOS背后的工程师们确实见过吉尔.阿梅里奥,那之后苹果就当真收购了Next,将乔布斯拉拢了回来。乔布斯则为他们带来了IMac、IPod与IPhone。苹果之所以能从死亡线上挣扎回来并且一举成为市值万亿的巨无霸,几乎完全仰赖他们在九十年代乔布斯回归之后采取的行动。

      谷歌确实差一点就被卖了出去。他们曾经想以八十万美金的报价将谷歌卖给另一家搜索引擎Excite。此时的谷歌已经站稳了脚跟,打响了名声,掌握着非同一般的技术,唯独缺乏商业计划。话说回来谁还记得Excite?有人用过这个引擎吗?这是个门户网站,也有自己的搜索引擎,只要掏出八十万美金就能拿下谷歌。但是他们拒绝了:“抱歉,我们认为贵公司没有发展前途。”现在谷歌基本上已经拥有了整个互联网,时刻倾听着我们说的每一个字,记录着我们的每一项行为,以备日后不时之需。

      今天这场报告的用意是引人思索并且介绍一点历史。但是我认为这场报告的关键思想如下:我们如今每天应用与依赖的许多系统之所以存在,并非因为有人殚精竭虑找到了最佳解答,做出了最佳决策,组建了最佳团队,抓住了天时地利人和的最佳时机,而是因为有人捣鼓出了一个还过得去的解答,问题随即变成了“这玩意应该怎么应用?接下来往哪里发展?”计算行业有一个现象名叫分析瘫痪,指的是人们会被无数选项淹没。毫不夸张的说,你想做什么都行,你可以在几十个不同平台之间选择。于是今天几乎全部网络研发活动依靠得都是一款差点就不存在的浏览器,因为发明人差点就投入了游戏行业。我们用的编程语言当初仅仅花了十天时间拼凑起来,因为太阳微系统公司施加了巨大的营销压力。这一行的决策无所谓对错,有所谓的仅仅是决策过后有没有继续进步的能力。正如之前所示,我们的进步方向原本可能与眼前现实相差甚远,或许今后我们的进步方向依然捉摸不定。但是既然我们都在现实世界,那我祝愿大家尽情享受Chrome、FireFox、Safari与微软Edge。只是别忘了,还有另一个互联网从来没有存在过。谢谢大家。

      通宝推:桥上,
分页树展主题 · 全看首页 上页
/ 1
下页 末页


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河