Web的诞生与TBL(1)
什么样的发明是人类最伟大的发明?那些能对存在的三种基本形式:物质、能量和信息的传输和转化做可扩展到为每一个人服务的发明。
对于信息,这意味着那些使信息可以更有效的转化和传输的方法:语言、图画、文字、纸、印刷术、电报、电话、电视、…、Internet、Web。
想改变人类历史吗?做一件能促进人与人的信息交换的事吧!
Tim Berners-Lee (TBL)就做了一件这样的事。他发明了Web。
TBL对我是一个极其神秘的人物,直到我有机会去近距离和他工作了一段时间。
原来TBL也是个人。
TBL骑自行车上下班。
TBL的房子不是什么豪宅。
TBL业余时间喜欢刻木头。
TBL会给本科生辅导编程。
但是这个人依然是一个奇怪的生物。
他说话非常非常快。语言这样一种低带宽信道对这个头脑是非常不合适的。
他的脑子里的东西,往往要别人很多年以后才能充分理解。比如他的那些Design Issues。
其中最典型的莫过于Semantic Web(语义网)。在最早的一些Design issues(1998年)里面,就做了语义网的规划。这些规划能完全实现,估计要到2030年。
但是Web本身,从1991年,只用了2、3年时间就从概念原型转变为商业的成功和国家级的发展战略。
为什么是这样?
理解Web,理解TBL,温故而知新,也许能让我们更好地发展未来。
Web的诞生与TBL(2)
当时并不知道HTTP是TBL在1991年发明的。那一年,TBL还发明了HTML和URL
关于这些最初的发明的技术说明,还有世界上第一个Web网站的存档,可以看这里:
http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.html
在这之前2年,TBL就开始了WWW项目的策划。根据TBL说的历史,1989年3月,他写了第一个项目计划书。1990年11月,项目开始实现。各个模块陆续实现,到1991年8月完成,公开宣布。
注:Web到底算是什么时候发明的,各有争议,有的说是1989-03-13(第一次项目计划书的时间),有的说是1990-11-12(项目书被接受,开始实现的时间),还有的说是1991-08-06(第一个服务器上线的时间)
WWW项目计划书要点如下
- 两阶段:第一阶段是实现只读浏览器,第二阶段是实现可读可写的浏览器。每个阶段3个月。
- 人力:4个
- 投资:大约80k(单位不详,大概是瑞士法郎)
可以看出,这个计划十分的超前。其第二部分,差不多就是Wiki的概念,到了10年以后才开始流行起来。我甚至不清楚这第二部分到底最后实现了没有。不过仅仅是第一阶段,回头来看,就值得所有的投资了。
需要指出的是,TBL并不是唯一实现系统的软件工程师。其他几个人是Robert Cailliau, Nicola Pellow,Jean-Francois Groff,后来陆续有十多个人加入。
我们不需要神话TBL,没有一个团队的支持,他可能需要更长的时间才能实现他的理想。他为这个理想已经思考了很多年(见他的《Weaving The Web》),在36岁这年,终于争取到了资源来实现这个理想。
36岁,已经不能算年轻了。从1976年本科毕业开始,TBL在各个公司和研究机构做码工,已经15年了。这15年TBL的工作,现在几乎没有人记得。在1991年,也没有什么人知道TBL。
和TBL同岁的Bill Gates,1976年创立了微软,到1991年,已经是亿万富翁。
更巧合的,Steve Jobs也和上两位同岁,也同在1976年开始了自己的事业——苹果电脑。1991年的时候,Jobs虽然已经被踢出苹果,依然是亿万富翁。TBL用来写第一个网站的电脑,NeXT,就是Jobs那时候的产品。
1991年TBL依然只是一名普通的程序员,要为了八万块的投资写报告,还等上一年多。即使WWW计划很成功,他依然很挣扎。单位(CERN)觉得他不务正业,他几乎不能再得到支持。
那时候大概没有人意识到,TBL在做一件人类历史上最伟大的发明之一。我甚至怀疑他自己是不是意识到?
而做了这个发明,也只是万里长征走完了一小步。前面的问题,更为严重。
TBL按自己的理想走了下去,走了和上面两位完全不同的道路。千千万万人类的生活,在不久的将来即将开始被影响。这种影响,不会象某些产品,时髦几年后就消失在历史的垃圾堆里。
Web的诞生与TBL(3)
很少有一种情况,一个重大的技术,是一个天才先知先觉独立发明的。更多的是在某个时候,几年甚至几个月前后,有若干个人想到这个想法。其中有一个,具有最好的执行力或者干脆就是幸运,最先把它实现。
水到渠成的时候,没有张三来发明,也会有李四来发明。
而在这之前,即使有最聪明的头脑和权势,也不见得能够做到。
比如同在1991年,Gopher协议在明尼苏达大学被发明和实现出来。稍早一点,WAIS (Wide Area Information Servers) 协议被几家商业公司制定出来,并在1991年开源。
而较早的尝试,如Vannevar Bush(曼哈顿计划协调人)的“memex”(1945), Ted Nelson(超文本发明人)的 Project Xanadu(1965), and Douglas Engelbart(也是鼠标发明人)的oN-Line System (NLS,1968),都没有获得成功。【这几个人都在TBL自己的书里提到】
这些人的资历、背景和可控制的资源,都远远超过1991年的TBL,为什么不能成功?
如果我们考虑到Internet的前身,ARPANET在1969年才开始运行,显然早先的计划实现起来有物理的、经济的限制。比如Memex,等于是基于微胶片的Web,即使实现了,代价大概也是极其高昂的。
从1969年到1991年,22年间,为什么没有人发明Web或者相似的东西?这期间,发生了哪些事件?简单列一下
- 1971年,电子邮件,FTP
- 1974年,TCP协议
- 1978年,IP协议;
- 1979年,UUCP协议(还记得Usenet?)
- 1984年,CERN(TBL的雇主)开始建立自己的CERNET
- 1980年代中期,ARPANET 逐渐进入民用
- 1980年代晚期,TCP/IP逐步取代其他协议,成为Internet的共同基础
- 1989年,BGP协议,Internet的路由成为一个分布式系统。
- 1989年,CERNET终于通过TCP/IP和外部网络接通(同一年,TBL提出Web计划)
- 1990年,ARPANET停止,被民用的NSFNET 取代(后者在1995年被停止,Internet全面完成民用化)
- 1990年,Dynatext,SGML发布工具出现。SGML影响了HTML的发明。
Web是Internet上的一个应用,它显然不能脱离Internet本身的存在而存在。直到80年代晚期Internet才真正成为全球性的通讯平台。也就是在这样的平台上,人们可以自由地发布、链接、浏览信息才成为一种可能和必须。
在这之前,Email, FTP, Usenet都不需要信息的网状结构,因为他们总是面向一个较少的群体,相对干净的信息。比如Email,如果要引用另一个Email,附在文后,加上”>”引用符号就好了。很多引用呢?“>>”或者“>>>”就够用了。通过上下文,读者可以知道谁在引用谁。这个法子笨但是很管用,到现在大家还在用。
当Internet变成一个全球性的存在,需要任何人都可以看任何人的信息,需要任何人自由地组织他/她能看到的信息,上面的应用就都不合适了。
于是几乎同时,Gopher, WAIS和Web(HTML, HTTP, URL)被发明出来。就算没有这几个项目,也必然有其他努力的来填补这个空白。
我们事后诸葛亮地来看,TBL几乎在第一时间抓住了这个机遇。
其实其他几个团队也一样——他们的资源甚至更多。
但是为什么是Web最终取得了胜利?
本节还参考了TBL在2004年历史回顾的演示:http://www.w3.org/2004/Talks/w3c10-HowItAllStarted/?toc=true
题外闲话:语义网11年来,还没有得到广泛的应用。是不是一些相关的基础技术没有得到充分的发展?我以为然。但是,我觉得这些技术不包括
- 逻辑推理的效率
- 自然语言理解
- 机器学习与本体挖掘
- 甚至未必是语义数据库(triple store)
我隐隐觉得是一些别的因素(或其缺失)在起作用。这里人的因素要远远大于技术的因素。NLS系统的成败,很值得借鉴。
也许过几年,真相就会大白。
Web的诞生与TBL(4)
在接着回顾Web诞生之初的一些选择之前,我想简单说几句可扩展性。
在过去十多年里,我接触过人工智能的几个不相干的领域:神经网络,机器学习,形式逻辑。许多模型,从理论上计算能力是没有问题的。比如神经网络,可以等价为图灵机,理论上可以解决图灵机可以解决的一切问题。逻辑,比如一阶逻辑或者描述逻辑,表达力非常得强,不乏专用领域成功应用的实例。
问题在于,当数据极大增加后,系统还是否工作?这个可扩展性,当然是常识,每个设计算法的人都会想到。对神经网络,机器学习,或者形式逻辑,都有无数的工作来研究如何提高它们的计算的可扩展性。
可是,到目前为止,成功都是有限的。机器学习的进步最大,特别是基于统计方法的这一块,广泛用到工业中。神经网络现在还在低潮中趴着。逻辑——除了数据库(其实SQL是一种逻辑)——始终无法大规模的应用;语义网(Semantic Web,同由TBL倡导)是逻辑界试图走向全球规模应用迄今的最后一战,前仆后继十余年,至今成绩极为有限。
在经历、目睹很多失败后,我渐渐觉得,所谓的可扩展性,不应该仅仅指计算的可扩展性,而应该是包括人在内的整个系统的可扩展性。数据的产生,知识的建模,到最后信息的消费,都要有人的参与。人的懒惰、人的心理、人的经济头脑,都会深刻影响一个系统能不能走出实验室。
当然,这种认识,回来看,常识得不能再常识了。可是一代一代的学者、工程师,总是很容易对一个技术倾倒、兴奋,但是劳心劳神做出来的美妙系统,没有人愿意用,或者用户一多就不灵了。这种经验,好像失恋的经验,似乎每个人都非亲身经历一下,才知道是怎么回事。
在TBL发明Web之前,别人也有类似的想法和实践。上节提到的oN-Line System (NLS,1968),就是一个杰出的代表。NLS是一个里程碑性质的伟大工程:超文本,鼠标,光栅显示器,窗口系统,演示程序,视频会议…都在NLS里第一次被应用。但是它最后没用走出实验室。它要求用户在做任何一点有用的事情之前,学习很多东西,服从一些严格的规定,记忆一堆奇怪的代号。“正常”人类不会心甘情愿地做这样的事。
Web的竞争者Gopher,要求所有的文档有一个严格的菜单结构,然后用户可以一级一级的走下去。对于熟悉文件系统的人,这是一个很自然的组织模式。可是,自己看自己的分类和看别人的分类是两回事,理解别人的分类从而找到自己需要的资源也不总是一件容易的事。更何况,分类本身就是一个头疼的工作。不信的话问问你的朋友,看多少人去分类自己的download文件夹。
TBL在设计Web的时候,在CERN这个极度多元化、极度分散的机构里,格外注意了“不给人找麻烦”这个样一个信条。我觉得这可能是技术因素之外,Web成功的最重要的一个因素。
TBL自己说(Weaving the Web, p19-p20):
“Having seen prior systems show down, I knew the key would be to emphasize that it would let each person retain his own organizational style and software on his computer.” (目睹了以前一些系统被干掉的事,我认识到问题的关键将是强调允许每个人对自己机器上的组织方式和软件各行其是)
“We can create a common base for communication while allowing each system to maintain its individuality” (我们可以建立一个通信的共同基础,同时又允许每个系统保持个性)
不要试图强加给用户一种你认为最好的信息组织方式——别人完全可能有不同的想法。(BTW,这也是为什么我认为几大搜索巨头的Schema.org未必能成功的原因)
允许人自由地以他自己高兴的方式发布信息,允许他们自己相互链接。没人需要先请示任何人来加一个链接。这就够了,奇迹会在这互联的过程中产生。
什么是知识?知识就是互联!
Web的可扩展性,依赖于它相对自由的组织方式、低门槛(按1991年的标准)的信息发布方式、和分布式的结构。这是技术和人的认知能力、人的社会性的恰当妥协,保证了它可以最终扩展为每一个人都可以用的技术。
这种自由的精神,被TBL一直贯彻了下去。比如对语义网,他也说:Raw Data Now!(TED2009年视;频:http://www.ted.com/talks/tim_berners_lee_on_the_next_web.html):以你自己最舒服的方式发布你的数据,互联会慢慢产生,从而导致各种美妙的事情。
那怎么保证自由的发布和自由的互联呢?Web依赖三个重要的发明:URI(统一资源标识符),HTML(超文本描述语言)和HTTP(超文本传输协议)
P.S. 我觉得语义网要成功,最重要的就是加上人以后的可扩展性:普通人(比如我外婆,如果她还活着)如何来组织知识?如何加强知识系统的分散性(而不是做任何改动之前要问另一个人来批准这个改动)?普通人如何传递知识?普通人如何互联知识?不要想当然。语义网不会是逻辑。普通人学会最基本的逻辑思考大概要再过一千年。
未完待续
(5)URI
(6)HTML
(7)HTTP
(8)浏览器
(9)Web的冷启动
(10)从文档到知识
发表回复