Zh-cn/Web的历史

From Web Education Community Group
Jump to: navigation, search

引言

“陛下,我该从哪儿开始呢?”

“从开始的地方开始吧”,国王郑重地说道,“一直读到末尾,然后停止。”

爱丽丝梦游仙境; Lewis Caroll

凡事都有个开头(Everything has to begin somewhere),让我们从回顾一段特定的历史开始吧。下面我将向你简要地介绍一下Internet的创建、万维网(World Wide Web)以及本系列教程的主题——Web标准。

你无须担心任何陌生的术语: 如果它们对于学习Web开发是重要的,那么后续文章在深入讲解相应主题时将给出它们的定义;当然,任何时候你都可以通过搜索引擎了解它们的含义!如果你已经熟知Internet或万维网的历史, 完全可以跳到[Web标准]开始阅读.

Internet的起源

1957年10月4日发生了一件改变世界的大事。前苏联成功地将首颗人造卫星“旅行者1号”送入地球轨道。整个世界,尤其是美国,都为之震动了。当时美国也有人造卫星发射计划,但尚未实施。

前苏联的捷足先登让美国深感有必要建立一个组织以研究尖端的理念和技术,并直接导致美国国防部高级计划研究署(ARPA)的诞生。该组织最著名(当然也是使用最为广泛)的研究项目当属创立Internet。

1960年,心理学家和计算机科学家Joseph Licklider发表了题为Man-Computer Symbiosis的论文, 文中详细阐述了利用联网的计算机提供先进的信息存储和检索服务的理念。1962年,Licklider正担任APRA的信息处理部门的主管,他组建了一个推动计算机技术研究的团队,但围绕上述设想的实际工作尚未开展,他就离开了这个团队。

实现这一计算机网络(后来被称为 ARPANET)的计划于1967年10月提出;1969年12月,首个由4台电脑组成的网络建立并投入运行。建立网络的关键是如何将各个分散的计算机网络连接起来,而又不会因为持续连接(constant link)而耗尽网络资源。解决这一问题的技术被称为分组交换(packet switching)。分组交换将请求的数据分成小块(组),这样数据就可以得到快速的处理而又不会阻塞网络其他部分的通信,今天的Internet仍在采用这一原理。

ARPANET的概念得到了广泛应用,后来涌现出的若干其他类型的网络也使用了相同的分组交换技术——例如,作为英国首个大学网络JANET的基础的X.25(由International Telecommunication Union开发)和美国的公众网络CompuServe(一家商业企业,允许小型公司和个人访问分时共享的计算机资源,后来也提供Internet访问)。这些网络虽然也连接了许多电脑,但和今天的Internet相比,他们更像是私有的网络。

不久,当人们试图让所有分散的网络能够彼此通信时,不同的网络协议成了拦路虎。不过很快就有了一个解决办法。在为ARPA的一个卫星分组网络项目工作时,Robert Kahn开始为一个更加开放的网络架构制定规则,以取代ARPANET所用的网络协议。随后,斯坦福大学的Vinton Cerf也加入了进来。他们二人创建了一个系统,用一套新标准屏蔽了不同网络协议的差异。在1974年12月公布的规范草案中,该系统被称为Internet传输控制程序(Internet Transmission Control Program)。

这一规范将保证数据传输完整性的责任转移到主机(host computer),减轻了网络的负担(reduced the role of the network)。结果是人们可以轻而易举地将几乎所有的网络连接到一起。 ARPA资助了相关软件的开发,并于1977年成功进行了三种不同网络的联网演示。到1981年,规范最终完成并被发布、采用。1982年,美国以外的ARPANET连接也转而使用新的TCP/IP协议。于是我们所熟知的Internet诞生了。

万维网的创立

Gopher是20世纪90年代早期使用的信息检索系统,它提供菜单(menu)链接到文件、计算机资源和其他菜单。这些菜单可以跨越本地计算机的范围,通过Internet从其他系统获取资源。Gopher深受那些希望共享校内(campus-wide)信息的大学和希望将文档存储和管理集中化的大型组织的欢迎。

Gopher是由明尼苏达大学创建的。1993年2月,明尼苏达大学宣布他们将对Gopher服务收取使用费。为此,许多组织开始寻找Gopher的替代者。

位于瑞士的欧洲核子研究委员会(CERN)就拥有这样的替代品。当时,Tim Berners-Lee正在研发一个信息管理系统,该系统中的文本可以包含对其他作品(works)的链接和引用,从而允许读者快速地在文档之间跳转。 Tim Berners-Lee建立了一个用于发布这种类型的文档(叫作超文本)的服务器,并编写了读取这些文档的软件程序,他将其称为万维网(WorldWideWeb)。这个软件于1991年首次发布,但直到两件事发生之后,它才开始广受欢迎并最终取代了Gopher。

1993年4月13日,CERN向公众发布了万维网的源代码,任何人都可以免费使用或进行二次开发。

随后,在同一年,美国国家超级计算机应用中心(NCSA)发布了一款整合Web浏览器和Gopher客户端的软件,叫作Mosaic。这个软件最初只以源代码形式发布并且只能在Unix操作系统上运行。不过,在1993年12月,Mosaic的新版本提供了苹果麦金塔和微软Windows的安装程序。于是,Mosaic开始迅速流行,Web也跟着沾了光。

Web浏览器的数量以惊人的速度增长。许多Web浏览器都是由大学和公司中的研究项目开发的。比如,一家挪威的通讯公司Telenor于1994年发布了Opera浏览器的首个版本。


浏览器大战

Web的流行带来了商业利益。Marc Andreessen离开了NCSA,并与Jim Clark共同创办了Mosaic Communications,后更名为网景通讯公司(Netscape Communications Corporation)。他们开始开发后来被称为Netscape Navigator的浏览器,该浏览器的1.0版本于1994年12月发布。

Spyglass Inc.(NCSA旗下的商业化公司)将Mosaic技术授权给微软,奠定了IE浏览器的基础。IE的1.0版本于1995年8月发布。

随后,浏览器市场迅速增长,微软和网景都试图为自家浏览器添加特性以吸引开发者,从而获得竞争优势。这就是人们所熟知的浏览器大战。在此期间,Opera保持了小而稳定的市场份额,并致力于创新和支持Web标准。

Web标准的到来

浏览器大战中,微软和网景致力于实现新特性却忽视了修复这些特性中存在的问题。他们不断增加专有的特性,还以不兼容的方式创造与对方浏览器已有特性直接竞争的新特性。

那时,开发者在创建网站时不得不应对与日俱增的混乱。他们有时要为两个主要浏览器建立不同但实际上重复的两个站点;有时则干脆选择只支持一种浏览器,另一浏览器用户就无法正常访问同一网站。不久,这种糟糕的工作方式就不可避免地遭到了来自开发者的强烈抗议。


W3C的建立

1994年,在CERN、DARPA(由APRA更名而来)和欧盟委员会的支持下,Tim Berners-Lee于MIT创立了万维网联盟(World Wide Web Consortium,即W3C)。W3C的愿景是将建立Web的协议和技术标准化,让全世界尽可能多的人都能访问Web上的内容。

接下来的几年里,W3C发布了一系列规范(称为“建议”),包括HTML 4.01PNG图像的格式和 层叠样式表(Cascading Style Sheets)的第一版、第二版。

然而,W3C并未强制执行这些建议。浏览器厂商只有在希望其产品标记为W3C兼容(W3C-compliant)时才必须遵循W3C文档。实际上,这并非一个十分有价值的卖点,因为几乎所有的Web用户都不知道,可能也不关心W3C是什么来头(时至今日,在很大程度上依旧如此)。20世纪90年代的浏览器大战依然硝烟弥漫。

Web标准计划

1998年,浏览器市场被IE 4和Netscape Navigator 4所统治。IE 5的beta版本也在那时发布了。它实现了一个新的、专有的动态HTML,这意味着专业的Web开发者需要通晓编写JavaScript的5种”不同“方式。

为此,一群专业Web开发者和设计者聚在一起,自称Web标准项目(WaSP)组织。 该组织的设想是将W3C文档定义为标准而非建议,以说服微软和网景支持这些标准。

这一设想的早期传播依靠的是传统的”路障“(roadblock)广告技术:一家公司在同一时段在所有电视频道都播出同一广告,无论观众换到哪个频道,他们都能得到相同的信息。WaSP也同时在各种关注Web开发的网站,包括builder.com、 Wired online,和一些流行的邮件列表中发布呼吁文章。

WaSP采用的另一推广技术是嘲笑那些加入W3C(和其他标准化组织)的公司,这些公司更热衷于创造那些通常只能用于自家产品的新特性,而不是努力让自家产品更好地支持已有的基本标准(这其中也包括一些依然藉藉无名的小型浏览器厂商)。这些嘲笑的并非针对W3C本身,而是针对那些成为W3C会员却没有正确行事的公司。


W3C有一些全职员工,但大多数人是来自会员公司的志愿者,最大的几家会员公司包括微软、Opera、Mozilla、苹果、Google、IBM和Adobe。


WaSP似乎总在批评别人,但他们并不只是坐在那里批评,他们也提供帮助。WaSP的7个成员组成了”CSS武士团“(CSS Samurai),他们指出了Opera和其他浏览在CSS支持方面存在的10大问题(Opera修复了问题,但其他浏览器厂商则置之不理)。

Web标准的崛起

2000年,微软发布了Mac版本的Internet Explorer 5。这是一个非常重要的里程碑事件, IE 5成了那时Mac OS上的默认浏览器,并在一定(reasonable)程度上支持W3C建议。此事连同当时Opera对CSS和HTML的良好支持(对Web标准化)起到了广泛而积极的推动作用。Web开发者和设计者终于感到使用Web标准来设计网站是一件舒心惬意的事情,因为他们知道他们可以在一定程度上跨浏览器工作。

WaSP说服了网景在更加兼容Web标准之前不发布Netscape Navigator 5.0(这项工作为如今非常流行的浏览器Firefox奠定了基础)。WaSP还成立了Dreamweaver Task Force,促使Macromedia修改其Web制作工具以鼓励和支持创建与Web标准兼容的站点。

广受欢迎的Web开发网站A List Apart于2001年初进行了重新设计,并在一篇文章中阐述了其为何以及如何进行重新设计,文中说道:

6个月内或1年内,最多2年内,所有站点都将根据Web标准进行重新设计。[…] 我们要么眼睁睁地看着我们的技术过时,要么现在就开始学习基于Web标准的技术。

这话有点太乐观了:直到2008年,也并非所有网站都是按照Web标准建立的。 但许多人相信这一天终将到来(many people listened)。老旧浏览器的市场份额不断下降,两个非常著名的网站——Wired magazine和ESPN——分别于2002年和2003年重新设计了各自的站点,它们已经成为了支持Web标准和新技术的先锋(field leaders)。

也是在2003年,Dave Shea发布了一个名为CSS禅意花园(CSS Zen Garden)的网站。 该网站通过形象生动的例子说明可以保持内容不变,仅通过改变样式就可以改变整个网站的设计,这在Web专业人士中产生了极大的反响。

自那以后,使用Web标准的就成了专业Web开发社区中必须严格遵循的准则。在这个系列教程中,我们会为你打下使用这些技术的良好基础,通过学习,你将能够开发简洁、优雅(semantic)、易于访问、符合Web标准的网站。

筹谋新的Web标准

2003年以来,Web标准并未停滞不前。新的实践层出不穷,和静态页面相比,许多Web站点更像是桌面应用程序。这些新站点的复杂程度远超Web最初的设计,对此,我们依然要尽力让它们保持优雅(semantic)、易于访问和易于使用。

HTML 4接近完成之际,W3C(在1998年的一个workshop中)决定,在标记语言方面,Web的未来不再是HTML,而是XML和XHTML (比较XHTML和HTML)。因此,W3C在HTML 4.01之后暂停了HTML的开发,开始集中精力制订XHTML 1.0规范,并于2000年初完成了XHTML 1.0。 除了使用更严格的XML标记语法(后面会详细讲述),XHTML 1.0就是HTML 4.01的翻版。XHTML 2.0 也很快出现了,它加入了一整套功能强大的新特性,旨在成为Web上的下一重头戏。

XHTML 2.0的问题在于它不对Web上现有的标记语言提供后向兼容——它的元素(elements)与现有的完全不同,没法在直到本文写作时仍然占据了浏览器市场大多数份额的IE上运行;可用的开发工具也不支持XML;而且XHTML没有反映出Web开发者究竟在做些什么(it didn't reflect what web developers were REALLY doing out there in the wild wild web)。

2004年,一群志同道合的开发者和Web标准的实现者(包括来自Opera、Mozilla的代表,稍后还包括来自苹果公司的代表)齐聚一堂,组成了一个名为WHATWG的松散的规范制定组织,其目标是编写一个更好的HTML标记规范,以便在不严重破坏向后兼容性的前提下,开发新一代的Web应用程序。

该组织的成果就是Web应用程序1.0规范,这一规范总结了已有的跨浏览器行为和特性,以及用于Web stack的新特性,如APIs和新的DOM解析规则。经成员磋商之后,2007年4月7日,W3C重启了HTML的开发工作,并成立了一个新的、开放式参与的HTML工作组(HTML Working Group)。在最初的几天内就有成百上千的参与者加入,继续下一代HTML的开发。HTML WG的首个决定就是采纳Web应用程序1.0规范,并将其称为HTML5。

HTML5是Web开发者和设计者的福音,这是因为:

  • 它几乎完全向后兼容——你无需为了使用HTML5而重新学习语言。新增标记的工作方式和旧标记保持一致(但有些元素的语义发生了变化——我们会在另一篇文章中谈到这些差异),而且新的APIs几乎完全基于开发者已使用多年的同一套JavaScript/DOM。
  • 它为HTML增加了功能强大的新特性,这些特性先前只能通过插件(如Flash),或者复杂的JavaScript和黑客技术才能在Web上实现。表单验证和视频播放是最好的例子。
  • 它比之前版本的HTML更适宜编写动态应用程序(HTML最初被设计为用于编写静态内容).
  • 它包含一个定义清晰的解析算法,这保证了所有实现了HTML5的浏览器都可以从同一标记生成相同的DOM,而无需进行验证。这是在增强浏览器互通性方面的重大进展。

CSS的演进不似HTML那般曲折、充满争议,但仍然十分有趣,值得在这里提一下。CSS2规范在1999/2000年左右已接近完成。尽管这是一个强大的、包含了许多优秀特性的语言,它的创建者们则十分清楚它是有局限性的。许多视觉/样式方面的事情是CSS无法做到的,因此开发者只能寻求黑客技术、JavaScript或者插件来实现。这些事情包括动画、动态布局和使用自选字体。

为解决这些问题,CSS3的开发工作于2000年初启动。规范制定者们决定采用模块化的结构, 将不同的功能分解为易于处理的子块。这不仅方便规范的编写,也方便浏览器的实现和Web开发者/设计者的学习。自2000年第一版规范发布以来,CSS3又加入了许多新特性,但直到2006年左右,市面上的浏览器才开始支持大部分的新特性。到本文写作时,CSS3已拥有完成度各不相同的模块40余个。你可以在W3C的页面CSS当前状态及如何参与追踪这些模块的开发进度并了解更多信息。

你可以在后续课程中更多地了解CSS3和HTML5。

总结

在本文中,我们了解到现代Internet是作为太空竞赛的产物而诞生的、了解了Tim Berners-Lee是如何定义超文本的,还了解了两个公司的商业利益是如何引发史上最有名的开发者集体抗议。如今,专业的Web开发者对”Web标准“这一术语的使用,远比W3C所提出的其他术语更为广泛(实际上,W3C也已经在他们自己的页面上使用这一术语),这也是我们打算向你传授的东西——建立Web站点的标准方式。

进一步阅读

如果你想了解更多的内容,可以访问以下这些网站:

练习

也许你想深入探索,那么可以尝试回答如下问题:

  • 目前,Internet上有哪些浏览器可供Windows、Mac OS X和Linux的用户使用?
  • 各浏览器的市场份额分别是多少?
  • 移动设备使用哪些浏览器来访问Web页面?
  • W3C发布了多少Web标准?哪些标准目前已被大多数浏览器厂商支持?

注: 本文档最初是作为Opera Web标准课程(Opera Web Standards Curriculum)的一部分而发布的,参见Mark Norman Francis所著的2: The history of the Internet and the web, and the evolution of web standards,以及Chris Mills所著的 Get familiar with HTML5!。 本文档的发布基于Creative Commons Attribution, Non Commercial - Share Alike 2.5 许可证,该许可证兼容前述两个原始文档的许可证。