历久不衰的Javascript

  得知微软明年要发布Visual Studio 2007 和 后,突然感慨万千,感慨光阴荏苒,对于微软迅雷不及掩耳的推陈出新,我暂且不做评论。我自Visual Studio 2002起就接触微软的.net,到现在还没能写出一套让我飞黄腾达的软件,实在无颜面对父母,只能怪自己无能。程序语言的不断的演化,不断的进步和自我淘汰的过程中,也淘汰了一些程序员,这是无可否认的事实。微软的.net系列虽然在语言上至今仍没多大的变化,可是他把整个作业环境(IDE)改头换面,由于程序员要重新掌握新的介面,掌握了以后,生产力会提高多少还不得而知,可是在掌握的过程中生产力跌到谷底也肯定是事实。

  刚踏入软件业的年轻程序员总希望先掌握好一种语言以保持自己在这行业里的竞争力,就算没什么竞争力也不要被时代在两三年里就把你淘汰。至少我曾经是这么想过,所以我不停的留意市场上流行的程序语言。工作几年后,我归纳出两个语言是比较经得起时间考验的,那就是/。C/C++是把好剑(虽然我知道C和C++有很多不同之处,请让我把他们混在一起),它的威力很多编程员都领教过,本文不谈。我想谈谈javascript这个相当随意又不严谨的程序语言,因为它能够历久不衰,也算是个传奇。

  网络服务器端程序(server side script)这十多年来,沧海桑田,回顾一下已经有流行过不少语言了。起初时大家以C,Perl等来编写,后来有了,到近期又有了另一番景象,ASP蜕变成,市场上又出现这两个程序员的新宠。可是这些都是服务器端的程序语言,是运行在网络服务器(web server)上的,这些语言各有所长,所以都有各自的粉丝,可是这些程序员很少不用javascript这个用户端的语言,它是运行在浏览器上的(这是笼统的说法)。至于不懂得什么是javascript的网络程序员更被视为稀有动物。所以javascript就是这么一个多年来得到各路英雄推崇一个语言,我认为它的成就也算是电脑科技史上的一个奇迹。

  Javascript于1995年诞生,和火狐一样,始作俑者也是Netscape Communication Corporation (网景)这间公司。虽然网景已死(现在的网景已不是当年的网景了),可是它的javascript仍然发光发热,连微软也撼它不倒,网景也算死而无憾。

  话说当年网景推出Javascript时,是为了让他们的Netscape Navigator更好用。因为javascript能够直接在浏览器上运行,不需要等待服务器的指令,就可以独自行事。虽然网景隔了一年后又推出了服务器端的javascript(server side javascript),可是它对时局的影响力大大不如client side javascript,因此本文所指的javascript都是指client side javascript。

  让我举个实际的例子,我在三年前用javascript编写了个日期点选器,当用户选择不同月份和年份时,该月份的日历会自动生成,它不需要等待主机的命令就知道要几月几号会落在一星期的哪一天,效果自然不错。换言之,如果当用户换一个月份或年份时要等待主机的指令才知道如何产生日历,那么效果肯定大打折扣,原因是网速限制了它的反应。所以在编写网络应用时,什么程序该由javascript处理,什么程序该由服务器端处理要分配得当。至于怎么分配,那需要另一篇文章来解释了。

  Javascript的出现,几乎让网页活了起来。可是在一个网络应用上,它并不能完完全全的独当一面,它必须配合其他服务器端语言才能成事。所以在程序语言的竞争上,javascript与各服务器语言都风马牛不相及,所以javascript成为了大伙儿的朋友。

  Javascript历久不衰原因又是什么呢?其中一个原因是它占了先机。Javascript这个语言对科技公司来说,算是个简单的语言。期间,网景开发了javascript,当时它并不是为了要推广网络应用(web application),而是纯粹为了提高Netscape Navigator的竞争优势,因此Javascript在浏览器上的实现并没有对外界开放。当时网景的Navigator在浏览器市场遥遥领先,微软集中火力,奋起直追,在Javascript推出的一年后也就是1996年,微软推出了微软版的Javascript,叫Jscript。这个Jscript完全由微软自己摸索出来,对于当时如日中天的微软,人才济济,其实并不太难。这个JScript虽然不是100%和javascript一模一样,但也相差无几。这样一来,当人们在制作网页时只要根据Javascript的规格去做,要在微软的Internet Explorer上运行基本上是没问题的。被微软如此一搞,javascript在网景不开放的情况下竟然成为了业界的标准。既然如此,网景于1996年终将javascript呈给ECMA International以制定成国际标准-ECMA-262。1997年八月,ECMAScript 1正式诞生,Javascript变成ECMAScript后更加势不可挡,这十年来它的地位依旧。虽然一般人还是改不了口把它称作Javascript,可是不管你用Javascript,Jscript,Actionscript,Jscript.net都有个相应版本的

  Javascript虽然占了先机,可是如果我们看其他程序语言的发展都是长江后浪推前浪,新的语言往往因为更好用而吞噬旧语言的市场。Javascript这样一个微软只用了几个月的时间就复制出来的语言,它到底有什么优势是他人取代不了的呢?从技术的角度来看,Javascript根本没什么优势,它唯一的优势就是已经有成千上万的网页用着它了,不能说换就换。而且用Javascript的网页每天在增加中。要是哪个浏览器不支援javascript,一大部分的网页无法正常显示,因此根本还没有资格让人使用。

  微软干掉了网景之后,曾经效法网景当初的做法,让Internet Explorer支援VBScript,希望有朝一日可以让VBscript这个功能类似Javascript的语言可以取代Javascript,可是无功而返。虽然VBscript还有其他的用途,可是微软如果不是想报网景当年不开放Javascript的一箭之仇,干嘛要让Internet Explorer支援VBscript呢?VBScript失败的原因十分明显,那就是它只能在Internet Explorer上运行。因为其他浏览器由始至终都不曾支援过VBScript,如果用户以VBScript编写,你的网站只能吸引IE的用户,让网景的支持者反感。再说,既然VBScript的功能与Javascript相近,而且Internet Explorer又支援Javascript,微软没笨到让Internet Explorer不支援Javascript,因为那行同自杀。那么制作网页者更没理由去使用微软自家的语言了。所以此一时,彼一时。网景当年的自家语言飞上枝头变凤凰,微软的自家语言却无人问津。

  这么说来,浏览器因为太多网页上有javascript而不得不支援它。程序员因为所有浏览器都支援它而不断的编写下去,因为程序员只能控制服务器的环境而不能够限制用户的作业环境。如果有一天,人们觉得Javascript已经发展到了极限,必须转换语言,那么这个新的语言不能由任何一家公司独占,就算不是开源也要是ECMA标准,最大的因素是,所有浏览器,其实不过那几家大的浏览器如Internet Explorer,火狐和Opera都必须同时支援这个新语言,其他小浏览器只有跟着走。以现今的局势来看,这种可能性还相当低,原因是各大浏览器之间很难达到共识,其实ECMAScript如今已经有了第四版,而大多浏览器都只是支援ECMAScript 3,仍然停滞不前。

  所以程序员要掌握一种比较能够经得起时间考验的语言,Javascript肯定是个不错的选择,因为左右它命运的不是技术因素,而是商业和人文因素。这些不是纯搞技术之人可以解决的。

Teng-Yong

17 Comments

  1. 这篇说得好!

    要Javascript快被淘汰,除非有一个浏览器能独步天下吧!

    在微软的ASP.NET更新版推了再推时,
    虽然我是一名ASP.NET编程员,
    我还是喜欢用javascript来避免频密来回服务器端(server side)。
    尤其是碰到用惯视窗软件的用户。

  2. 说来惭愧。

    大学时期,根本搞不清,什么是server side script,什么是client side script。
    到毕业了,自己摸索后,才知道有什么不一样。

    看了这篇文章,才了解vbscript和javascript有什么不一样。
    原来还有jscript等。
    呵呵……

    谢谢。

  3. 哈哈。。。不可能淘汰吧。。。除非有特别理由。。。哈哈。

    我之前是一个写网上系统的,虽然,前公司的系统都用VBSCRIPT的。。。但,我还是较喜欢Javascript.当我搞我自己的系统时,我都用JavaScript的。。

  4. Ajax的出现,可以算是某种程度的带动Javascript的发展吧…

  5. jscript…
    最近一直接触网页开发,开始发觉jscript是缺不了的。

    ::bpchia::
    绝对赞同你的看法,好多ajax都少不了。

  6. bpchia,

    Ajax带动javascript的发展是肯定的,其实Ajax不只带动了javascript,其实它也可能是javascript的不死药。

  7. AJAX and javascript is so powerful…yup, agree with u all!

  8. 嘿你们好!小弟是电子工程系的学生,但在IT DEPARTMENT实习,这几天大量接触JAVASCRIPT,优化FORM的一些功能,这里又写JAVASCRIPT,所以进来留言了!

    几个月前从这里阅读到一份关于“IT 工作” 之类的文章,觉得很不错,就把这里BOOKMARK下来了。但是有好一段时间没进来,不久前有幸不知怎样又进来看到浏览器大战,精彩。我打算写篇短的在我的部落格,但是本人语言能力很差,觉得写不出顺畅的文句。

    小弟在实习学到ASP和ORACLE SQL,至于 PHP+MYSQL则是自学。

    自我介绍后,其实此次的留言是想问各位:你们是大马人吗?因为我已看到几次马来西亚这个字眼了。初时还以为你们是中国或台湾人,然后此格获得部落格提名,还以为你们是中国人。。。因为中文写得很棒。

    最后,希望你们继续加油。我在这里就好像在阅读免费中文电脑书刊,满足了我想知道更多关于电脑的事情。浏览器大战和JAVASCRIPT的历史让我感觉就好像再读短篇小说般精彩 ^^ 

  9. neobie,

    谢谢你的留言和赏识。我们都是马来西亚人。由于刚刚搬过来新的网站,整体的设计和介绍都还没做好。希望你以后也能够多来看看,大家交流交流。

    加油吧!祝学习愉快。

  10. 你们好,

    这个文章写得很好
    马来西亚人 为什么会写中文呢?

  11. Daniel,

    关于马来西亚的华文教育,不是三言两语可以说清楚的。

    这里有篇关于马来西亚华文教育的文章可供参考,只是这篇文章的报道过于乐观,因为本地政府并不如文中所说的那样重视华文教育。在马来西亚搞华文教育是要付出许多血和汗的。
    http://www.gdoverseaschn.com.cn/whhq/hwjy/200311120014.htm

    如果你想知道更仔细些,这里还有一篇研究马来西亚和菲律宾的华文教育的硕士论文。(我也没读过)
    http://myedu.hibiscusrealm.net/index.php?option=com_content&task=view&id=66&Itemid=41

    如再有关于马来西亚华文教育的问题,我们用电邮联络吧。

  12. 说的非常好,挺有深度,并且很鼓舞人心,值得太多的人拜读了。另外,能不能再讲讲编程语言方面的选择诸如此类的问题呢!
    呵呵,谢了!

  13. toplee,

    谢谢夸奖。可惜我能力有限,这类文章久久才能出一篇。十年铸一剑。

  14. 呵呵,谦虚,有时间加我QQ吧:249410471。

Leave a Reply

Your email address will not be published. Required fields are marked *

*