分享

告别PC时代,迎来网络时代...

 雀巢咖啡 2007-06-05

告别PC时代,迎来网络时代

From PgsqlWiki

Jump to: navigation, search

[编辑] 作者

何伟平,杨家宁,于霆, easy 信息研究中心

[编辑] 摘要

本文通过作者们对长时间的工作中感受到和观察到的现象进行的归纳和分析,对未来的互联网和IT技术方向做出了一定的分析和判断,提出了网络时代的应用环境和开发、使用模式。中心词:PC时代的终结、互联网应用时代、互联网应用开发技术、浏览器端开发技术、Javascript、ActionScript、AJAX。

[编辑] 前言

做为一个自由软件爱好者和开发人员,最经常思考和争论的一个问题是这个微软时代的终结,在经历了将近三十年的PC时代(也可以称作是微软时代)之后,业界每个人或多或少都会思考:微软时代何时是个终结?

印象中这个话题已经提出至少三次,第一次是在上世纪九十年代中期,互联网刚刚开始的时候,一个小小的浏览器制作公司,Netscape,开始发起了第一轮向微软冲击的号角,后来,这次起义被微软在自己的操作系统windows 95中,捆绑微软开发的浏览器IE所镇压。

第二次是至今方兴未艾的自由软件/开源软件运动。这场由传统的黑客精神所点燃的,由Richard Stallman (RMS)所倡导并奠基的运动,已经实现了其第一阶段的目标:自由的操作系统;仍然以野火燎原地势头,冲向计算机技术的各个领域,从办公软件到图形处理,从互联网服务器到互联网客户端应用。至今方兴未艾。

第三次是自上世纪末开始,以google为代表的互联网搜索业务迅速发展,以及越来越多的互联网应用的出现,以及自由软件的推波助澜,仿佛昭示着什么。

正如某个哲人说的那样,太阳是老的,但太阳每天都是新的。在这个号称朝阳已去的产业里,我们是否能看到一些新日出的端倪?

[编辑] 历史

开始比较理性的部分。首先,我们回顾一下计算机发展的整个历程。

从上世纪的 1940 年代开始,计算机一开始是为了计算数据,为了算炮弹的弹道。渐渐的,战争结束后,计算机开始帮助人们计算工程力学,计算大量的账本数据。然后又过了一些年,自从开始进入帐务计算之后,就开始慢慢地更多地参与了帮人们寻找数据的过程。

早期的计算机,昂贵,操作复杂;主要是给大型单位用,计算机主要的应用瓶颈是:成本和使用界面的复杂性。到了二十世纪70年代,Unix的出现,第一次大规模降低了计算机的成本,并且相对地简化了计算机的操作界面,Unix标准,以及最后的Posix标准因此而生,并且导致了第一次计算机的大普及:Unix的出现直接导致了所有教育系统(中国的除外)中计算机的广泛应用,并且基本上奠定了迄今为止所有的计算机领域的基础。催生了互联网的雏形、各种互联网应用的雏形、各种应用软件的雏形等等的。到了二十世纪八十年代,随着集成电路技术的发展,计算机大发展的第一个大障碍:成本障碍,终于被突破了,在1980年代初期,以IBM PC和苹果appleII为代表的个人电脑,终于走入普通人的家庭。

随着硬件价格的降低,计算机普及的第二个大障碍开始日益突出,那就是使用界面的复杂性成本,初期的个人PC,只有很简单的一些编辑功能,只能保存一些文件,只有一些简单的工具可以提供用户使用,并且大多数这样的工具都还是命令行的方式运作。对于IBM PC来说,情况更糟糕,因为可用的软件更少,也更难用。

经济学有个理论说,事务的发展是向社会分工发展的,而社会分工的基础是为了使整个社会的成本降到最低。

在这个时候,一个叫比尔·盖茨的美国人跳了出来,告诉大家,要买他们专门生产的软件,这样就不再是偷软件用的“小偷”。于是乎,个人计算机软件业随着微软的成长而轰轰烈烈地成长开。从历史回顾来看,在那个时代,商业化的个人软件的确起到了降低社会总成本的作用,因为它给社会派生出一个新的产业,从此一帮人可以专心为更多人制作他们需要的软件。而解放了大多数人的时间和思维。而与此同时,一个叫 Richard Stallman 的人,却纯粹是出于个人原因,开始了一个成为free soft(自由软件)的项目,因为他认为软件是言论,言论应该自由,而各种商业化软件公司,束缚了太多人的这个“言论”自由。于是,他开始了唐吉科德式的自由软件项目。

时间是单向的,不知不觉,到了1990年代,这个时候,信息化的发展充分表明,人类对计算机的需求不仅仅是信息的计算(计算机初创时代),也不仅仅是信息的存放(主机和Unix大型机时代),也不仅仅是信息的拥有(PC时代);人类还需要信息的分享。随之而来的,则是交织着曾经沉寂一时的Unix类系统和相关软硬件环境兴起的网络时代。

有了需求便很快有了支撑的技术,首先崭露头角的是自1970年代就一直在开始研究的互联网基础技术:比如类似IP/TCP和Unix系统这些技术;它们长时间在国防、教育环境里培育,到了1990年代,随着用户对信息分享和发布的需求爆炸,这些技术仿佛一夜之间,就登上了计算机技术的主要的舞台。与之对比的是,在1990年以前,很少有计算机用户听说过Unix,更不知道有internet的存在。那个时候的计算机用户,知道的只有DOS,或者Windows 3.x。

与此同时,1991年,一个自由软件的Unix类操作系统的诞生,又给互联网络的发展增添了强劲地动力,因为一个自由的操作系统内核,让很多人的互联网使用成本大降,而因为这个自由的内核,又让更多人接触到了自由软件,而自由软件又让人们更进一步地降低了互联网的使用成本,尤其是对于早期的互联网内容提供商。在自由软件的交互作用下,互联网之风很快遍及全球,而在当时盘踞人们思维良久的有关“自由软件不可靠”的说法最后被证明是完全地不可靠的谣言。随后,很多互联网技术,比如HTML标签,被设计出来了,一些原先运行在Unix平台上的浏览器,被移植到了Windows里面。互联网在一系列的技术和需求的推动下,一步步向个人PC用户靠近。

1995年,一个叫Netscape的公司开发了一套可以运行在所有windows平台上的浏览器,这引起了微软的恐慌,很快,微软在自己的Windows平台里捆绑了和Netscape基本兼容的浏览器 IE,微软虽然籍此一举将Netscape剿灭,但是却不知不觉为日后的更大的变化埋下了伏笔。

随着Windows捆绑IE的进行,互联网终于一举突破原来阳春白雪的领域,一举来到了无数PC用户自己的桌面上。交织着基础电信设施的完善,经过十余年的发展,互联网成功地新创造了两大产业:接入服务和内容服务。前者是现在耳熟能详的宽带、窄带接入等服务;后者是形形色色的网站,甚至还因此掀起一轮轮的资本市场的上市高潮。

PC的用户发现,自己需要的信息,大多可以从互联网获取。从此互联网成为越来越多的PC用户的主要信息来源,而互联网因此也完成了计算机技术发展的第一个螺旋的最后一个链条:满足了用户的信息分享的需求。

[编辑] 黎明

互联网开始的时候,大多数的网站提供的都是静态的信息,所谓静态的信息,就是用类似HTML这样的标记语言格式化一段文字,这段文字就是提供给用户查阅的信息。这就是静态网页的时期。

[编辑] 静态网页

静态网页的时期,大多数页面都是用HTML直接书写成,这个时期的网络速度大概是拨号的速率,范围从 14.4Kbps到56Kbps。页面大小也比较小,大多数都是小于10K字节。静态网页对于发布一些信息的功用来说,足够的,比如发布论文,发布新闻等等。但是,当人们发现网页是一个应用程序界面的良好载体,因而希望能直接通过浏览器与后面的应用服务进行交互,实现业务逻辑的时候(比如,银行业务),却发现静态的网页实在是无法满足这种需求。因而,需求又一次推动了技术的进步,很快,便诞生了动态网页。

[编辑] 动态网页

动态网页的定义很简单,实际上就是根据用户的输入不同,动态地生成不同的网页(HTML标记的网页),比如,当用户查询的时候,就生成一个账面余额的表格组成的网页;当用户消费的时候,就生成一个是否消费成功的状态网页。在初期,动态网页有很多种不同的技术。Netscape公司在Netscape浏览器里面,开发了一个解释语言,可以用来动态地生成网页,因为和正在风行的JAVA处于同时代,所以Netscape借东风把自己的解释语言叫做 javascript。javascript相当灵活,几乎可以实现所有图形界面需要的一切交互动作,但是因为是解释执行的,所以需要在浏览器中执行一个解释器,而这个解释器开销不小,因而javascript运行的时候对系统CPU和内存的要求不低,依稀记得在1996年的时候就需要32M内存以上和奔腾100以上的CPU来跑。至今我还记得早年在运行一个带有javascript交互的网站的时候,机器的硬盘狂转,CPU风扇猛吹的情形。

整个PC时代几乎都穿插着客户端和服务器端究竟应该由谁工作的争论。动态网页也一样,是其中的一个讨论的舞台。在当时的硬件条件下,几乎所有人都认为,动态网页应该由服务器方面来支持。因此,各种各样的服务器端动态网页由此诞生了,比如jsp, server let, php, perl, cgi 等等等等。其基本原则是,利用服务器远比个人PC强大得多的处理能力,在浏览器端提交了数据之后,由服务器计算生成对应的新的页面(HTML代码),返回给浏览器(客户端),从而实现交互。这个时候,实际上浏览器和服务器之间的交互的界面是HTML流。

这种安排看起来非常合理:服务器承担大多数复杂的逻辑判断和运算,而客户端(浏览器)只负责结果的展现。三十年河东,三十年河西;服务器环境在经历了1980年代和1990年代上半段被以微软为代表的PC相关应用压制了十余年之久,重新又登上了舞台的核心。而动态网页也在将近十几年的时间里被服务器端的动态网页技术所占据。

是不是客户端技术就此没落了呢?在整个世纪之交,事情的发展看上去的确是这样的。但是,有个至今运转了三十余年的规律,却在悄悄地改变着力量的天平。它就是摩尔定律。

[编辑] 摩尔定律

PC时代几乎是和集成电路时代相伴而行,共同发展的。当初,正是大规模集成电路的发展为PC扫平了成本障碍,后来又是集成电路的不断发展,不断降低硬件的成本,同时不停提高硬件的运行速度和存储容量,使得越来越多友好的人机界面得以实施,回忆一下可以看到,从8位到16位再到32位和现在的64位PC,从最初的命令行到后面的图形界面,再到3D的界面......

在这些过程里,有个三十余年一直生效的定律在起作用,那就是摩尔定律。摩尔定律是intel的创始人之一摩尔在对早期的大规模集成电路的发展进行统计归纳出来的一个定律,大意是计算机硬件的能力大约每隔十八个月就会增长一倍,而相应的成本会降低一倍。

在三十多年的历史里,摩尔定律像太极推手一样,正是摩尔定律作用在服务器和PC/客户端之间,让两者的角色不停相互转化。

经过三十多年,并且经过这些年在各个图形界面等各个层面的不断消耗之后,到了二十一世纪头十年的下半段,人们的个人电脑突然开始拥有了一到两颗高速的CPU,大于512M,甚至超过1G、2G的内存,而此时的PC竟然比三十年前的PC要便宜将近7倍!

正是摩尔定律,在不知不觉之间,给所有的PC用户装备上了当年只有服务器才能奢望的配置!这个时候,一个新的时代无疑是悄悄地拉开了帷幕。这就是一个崭新的客户端时代!

[编辑] 黎明

到了2004年以后,人们的桌面机器能力越来越强大,双核的CPU、上G的内存,接近T的存储已经不再是稀罕完叶,个人PC的性能已经足以比上世纪的服务器更加强大,而新的应用对网络应用提出了更高的要求。

[编辑] web 2.0

新世纪的互联网的一个新的说法就是所谓的web2.0,这个2.0实际上的含义是更丰富的交互、更多的用户生成、更综合的信息展现,更多的用户自定义。

这个web2.0对互联网应用提出了一个非常高的要求,用最简单的一句话来形容,就是对互联网应用提出了几乎和对个人PC的桌面软件一样的需求:比如可以灵活定制,可以有更丰富的窗口和信息展现等等。而这些需求,比如集中的信息展现的需求,对于原先的服务器端的动态页面技术来说,几乎是一个不可能完成的任务,因为一方面,集中信息展现要求服务器成为很多后台内容的访问焦点;另外一方面,服务器为了提高交互的能力,比如各种各样的定制,又要求服务器能够更快、更迅速地进行数据交流,而同时还要有能力处理巨大的数据量。

服务器像不堪重负的马车,而web2.0的所有这些需求,正如那压垮服务器的最后一根稻草。这根轻飘飘的稻草,却成为了旧的服务器时代的终结和新的客户端时代的直接需求。

[编辑] 水泥和石块

新的网络应用,要求更丰富的定制和展现。而同时面对海量数据和灵活的定制,单纯的服务器端的动态已经很明显不能满足所有需求。应用开发人员在这个时候自然而然地开始思考如何平衡服务器和客户浏览器之间的工作职责,当我们环顾四周,却突然发现,它们就在灯火阑珊处:Javascript, ActionScript以及一些相关的衍生出来的技术,比如Json, Ajax等等。

[编辑] firefox

Netscape已经被微软的捆绑策略挤兑出局了,早在上世纪末就已经倒闭。但是Netscape做出了一个惊人的举动,将Netscape的代码开放了,成为了一个开源项目。而这个开源,最后的结果导致十年磨一剑的firefox的横空出世。在继承了Netscape的代码之后,自由软件/开源软件社区对Netscape的代码进行了消化、吸收,先后开发出了Netscape6, Netscape7,和mozilla等浏览器,继而到2004年开发出了firefox。无论从稳定性、质量、速度还是标准兼容上,都达到了前所未有的高度。并且迅速蚕食了IE浏览器的相当大一部分市场。

[编辑] Javascript

Javascript 这种技术,本身已经经历了十几年的历史了,从最初到2007年,它自身经历了几次巨大的修改,效率上得到了显著的提高。而摩尔定律更是将我们使用的硬件平台的能力提高了百倍。甚至于在即使在Windows平台上,在排除各种Windows界面的损耗、各种防病毒软件的损耗、各种不必要的乱七八糟的东西之损耗之后,计算机的性能仍然大大有余地,而这个时候,跑在浏览器里的Javascript甚至可以和普通的图形界面元素的性能相比。

[编辑] AJAX

Ajax 技术是一个基于Javsacript的异步技术,结合了XML技术,使得Javascript直接可以向后台发送请求并且返回结果,而不需要使用传统的浏览器的form(POST)和URL的GET等技术。这项技术很明显可以绕开服务器端动态页面的星形的访问模式,而从浏览器上向不同的数据后台直接发起请求。

原来的最常见的场景是:你的浏览器和apache web 服务器通信,发起请求,查询某个东西,然后apache web 服务器要查询后面的比如音乐、网页、图片等服务,拿到结果之后再组合成HTML返回给浏览器,这样,apache web服务器就是一个应力集中的地区,因为一个请求过来,apache web服务器要转化成若干个对后台的请求。

而基于ajax技术之后,浏览器可以直接对音乐、网页、图片等服务后台发起请求,拿到结果之后直接在浏览器内部进行组合、展现。从而避免了web服务器这个应力集中的点。

[编辑] JSON

Json这个技术实际上是将数据串行化之后,变成一种Javascript数组的方式,与Javascript进行通信、沟通的技术。这种技术最大的作用就是可以彻底让后台抛开烦琐的界面(HTML)生成工作,专心于数据逻辑;并且,还可以极大地降低客户端浏览器和服务器端之间的数据交互量,从而给更频繁地数据交互提供了可能。

[编辑] ActionScript

ActionScript 是原Macromedia公司(现已被Adobe收购)为其Flash产品开发的一种简单的脚本语言,现在最新版本3.0,是一种完全的面向对象的编程语言,语法类似javascript,多用于Flash互动性,娱乐性,实用性开发,网页制作和RIA应用程序开发。这种技术使得网页上的动画、视频等多媒体元素成为可能。

[编辑] 未来

显然,未来在向我们大步走来,在服务器和客户端的新的分工与合作,甚至可以让我们感觉到一种新的客户端/服务器的应用程序结构。甚至可以称作新的、真正的B/S结构(浏览器/服务器)的结构:在这种结构里,服务器专注于数据存储、分析和结果的计算;而客户端(浏览器)专注于结果的展现、用户自己定义的元素的生成以及动态的数据收集等等工作上。弄最简单的一句话来概括,就是我们要在浏览器里重新实现一次所有OS里面都曾经实现过的软件和应用。也就是:

重新发明Windows那样的系统,或者WebOS的时代的到来!

这个工作除了需要具有基本的水泥和砖块之外,也需要更多抽象得更高层次,更容易使用的东西。回顾一下整个个人电脑的历史,会发现在所有软件提供商中,提供集成组件的、提供集成开发环境的占据了很重要的历史地位,他们最终为大量丰富的应用软件诞生做出了巨大的贡献。所以,WebOS的时代很可能会和以前一样,需要大量的组件和开发环境。

[编辑] 集成组件

目前,已经有很多成形的组件,比如:

  • jquery

[编辑] 集成开发环境

当今最像集成开发环境的,当属 firebug。

[编辑] 新时代

想像一下这样的一个时代:当你打开计算机,你最主要的应用软件就是一个浏览器(甚至系统本身开启之后,就直接最后进入一个浏览器环境),而你的所有主流应用,都来自网络:你的办公套件、你的邮件系统、你的播放器等等等等,更不用说你的搜索,你的BBS等等。传统的个人应用软件当然会继续存在,但是只是做为一个没有网络情况下的补充,而渐渐地会离开主导的位置。

那是一个消灭传统病毒的时代,消灭桌面商品软件的时代,一个服务器和客户端新的平衡的时代!

[编辑] 结束语

在eaysou,yisou等产品的开发过程中,整个easy company逐步地感受并了解到了这样一个趋势:那就是新的网络计算时代。这些想法汇聚自所有easy的成员,并且,我们也相信这些想法早已有之,并非我们独创,也并非我们最早提出来的观点。但是,这些观点却的确都是我们自己独立摸索、感受并且总结出来的。正如费曼常说的:嘿!我们也想到、做到了!

事实上,开始我们以为我们的对手是搜索巨头、是插件厂商等等,后来慢慢才发现,其实那些都只是流于表面的一些目标而已。整个过程揭示出来的真正的含义是:我们会整个颠覆PC时代,也许是以MS为代表的,也许是以个人桌面软件业为代表的那个时代!

谨以此文纪念快乐的easysou项目!


-laser

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多