web开发的思考(二)

NewStart 发布于2008-05-11 19:10:26 | 127次阅读 | 字体: 打印预览


BS给开发者提出更高的要求,上文讲到,要做漂亮的web应用,需要做好漂亮的html、css、javascript、flash....

所以,开发者单单掌握后台编程语言是不够的,还必须掌握html、css、javascript甚至flash。

为什么会有这么多技术,而不是一门统一的语言呢?这是本文要讨论的问题

要搞清楚浏览器为什么使用html、css、javascript作为其界面语言和脚本语言,需要回顾一下web的发展。

1982年Tim Berners-Lee提出了HTTP/1.0

1989年Tim Berners-Lee在SGML基础上设计出HTML语言

1990年Tim Berners-Lee发明了首个网页浏览器-WorldWideWeb,后来发展为NCSA Mosaic,1994年Netscape在此基础上研制出Navigator浏览器,1995年微软也在NCSA Mosaic基础上研制出IE。1998年在网景和微软的浏览器大战中Netscape开放了其浏览器源代码,创造了Mozilla基金会。

1994年10月Tim Berners-Lee创办W3C

1994年10月W3C从9种style sheet language中选定Håkon Wium Lie 设计的 Cascading HTML Style Sheets (CHSS) 和 Bert Bos 设计的 Stream-based Style Sheet Proposal (SSP)作为CSS的基础,并由Håkon Wium Lie 和Bert Bos 共同制定CSS标准

1995年4月Netscape聘用Brendan Eich开发其脚本语言Mocha,后来更名LiveScript,12月4日正式启用了JavaScript这个名字。由于其基本的语法特性(例如大括号、语句关键字等)上参考了C,在对象系统上(例如“.”作为成员存取)上参考了Java,所以命名为JavaScript。

可见Tim Berners-Lee奠定了web的基础,互联网之父名副其实!网景公司为互联网发展,尤其是浏览器和JavaScript的发展作出了不可估量的贡献,虽然在后来与微软的竞争中败北,但无论如何,它都是一家伟大的公司,它的mozilla项目奠定了当今浏览器的基础,ie 至今仍在其 user agent 字符串中保留 “mozilla” 字样。

历史回顾完了,我们回到正题,为什么存在这么多语言的问题也就不难理解了,html、css和javascript分工各不相同,三者缺一不可。Html和css生来就是为web服务的,有着不可替代性,但是JavaScript则是由于网景的原因而成为客户端脚本的标准。

javascript作为最早的动态脚本语言之一,借助Netscape当初的垄断地位,使其成为客户端语言的不二选择(估计当时其他脚本语言还没想到在浏览器端嵌入脚本语言呢)。尽管后来微软一度想要推出其VBscript作为ie的主要脚本语言,但是由于其语法的生涩、漏洞、执行效率以及最主要的跨平台特性问题,注定了它只是个鸡肋。

为什么JavaScript只作为客户端脚本语言呢?还原JavaScript的真实历史~这篇文章中提到了NetScap的LiveWire战略中说明网景从一开始就把JavaScript作一种通用的开发环境,而不仅仅是客户端脚本语言。为什么人们只把Javascript当作一种客户端脚本语言,恐怕要问问网景的人了,网上找到这样一句话:In retrospect I must say, neither me nor Hannes did a very good job at telling people that our projects were "server-side Javascript"。好的技术、好的创意和产品,没有营销是不行的。相比之下,微软的ASP要成功的多。看看当今各种server-side脚本语言的发展势头,JavaScript本身为web而生,却只能作为客户端脚本,真的是个遗憾。

flash的大行其道,我想主要是因为micromedia很准的看到了客户端应用的更广阔需求,javascript作为文本处理工具已经十分优秀,但是客户端需要的决不仅仅是文本,动画的功能javascript远不能胜任。flash正式看准了这点而来。比之更早的还有SUN的Applet。很多人都对Applet没落感到迷惑,无论从程序的功能还是公司整体实力,Micromedia都不可与SUN同日而语。但我觉得Applet的败落一点都不奇怪,客户端开发的需求跟服务器端的需求大不一样,服务器端开发是技术人员的事,而客户端开发更主要的是美工和编辑的事。Flash的简单易用使他得到快速普及,进而有更多的人学习他的高级特性,学习曲线平滑。Applet陡峭的学习曲线和高昂的学习成本决定了他的失败,java从一开始就是为最专业的技术人员定做的,可怜SUN把所有的精力都放在底层技术上,到现在都没有自己做一套象样的开发环境,这又导致了在企业级应用领域,大片市场被微软夺走。

服务器端脚本语言我用过的不多,最早用jscript和Vbscript做asp开发,后来学习java,现在主要用php,其他的像perl、python、ruby也了解过,但都没有实践,所以对于服务器端语言,我自认为没什么发言权,仅简单说下我自己的体会。

我觉得服务器端语言的发展很大程度上与Unix/Linux的发展有关,和开源环境的发展有关。国外的服务器大多数是基于unix/linux+Apache的,Perl、php、python、ruby...都是unix/linux平台上的脚本语言,同时又都是开源的。web开发者大多都与开源社区有着千丝万缕的联系,早期的开发者很多事开源社区的骨干,后来的开发者从开源社区获益匪浅,受其影响至深,所以国外的开源事业这样蓬勃发展。

还有一个很重要的原因是语言的学习难度,以及宣传力度。国内计算机发展滞后非常多,没有国外那样的开源社区和环境,初级用户学习web开发还是从国内开始,铺天盖地都是asp的教材,asp的服务器,asp的乱七八糟的代码,使用的也都是windows所以绝大部分初学者从asp学起。现在渐渐的,越来越多的人开始了解国外的社区和环境,并且不断的将国外的思想引入中国,开发者开始跟随国外的潮流,盛行apm平台的开发,盛行Ajax开发,ROR也收到越来越多的关注...

因此我也认为,语言的流行程度是不能和语言的功能划等号的,中文文档的完善程度以及中文社区的繁荣程度,很大程度上影响了初学者的选择。事实上,很难讲清楚哪种语言更好,也没有必要去过分计较,肯定各有个的优点,也各有个的缺点,最重要的是针对你自己的需求选择合适的语言。这点我认为是最难的,因为没有哪篇文章,哪本书明确的描述过什么样的需求用什么样的开发环境最合适,而且对于一个初学者来说,如何知道自己需求还是个问题!

不过经过几年的开发,我渐渐觉得BS开发存在着极大地弊端,浅浅感觉到Ajax应用、敏捷开发以及其他rich client的理念开始引导web开发向着CS回归。

ajax应用、敏捷开发、Rich Client和CS回归的问题,将在下文阐述。

参考资料:

http://en.wikipedia.org/wiki/JavaScript

http://en.wikipedia.org/wiki/HTTP

http://en.wikipedia.org/wiki/Web_browser

http://en.wikipedia.org/wiki/Cascading_Style_Sheets

浏览器发展历史

还原JavaScript的真实历史~

W3C的发展历史和组织机构介绍

Netscape、IE与Firefox的历史纠葛

2002年以来的浏览器市场演义

Yeah, why not Javascript?

TrimJunction: JavaScript on Rails



本文出处 : http://item.feedsky.com/~feedsky/davidnick/~1319071/92788267/1224033/1/item.html end

上一篇:web开发的思考(一)

下一篇:『Adobe』Photoshop Express + Flickr + Picasa +Facebook

现在评论本文

authnum

0 条评论