简明现代魔法 -> JavaScript -> 唠叨一下对JavaScript的认识

唠叨一下对JavaScript的认识

2010-08-22

JavaScript是门脚本语言,但好歹也是门语言,而且有强大特性的语言。

JavaScript与Java有关系,不过只保留了基本关键字的相似,远不如C#与Java关系紧密。

C#3.0以后,已经越来越不像Java了,越来越多的动态元素加入进来,JavaScript十几年前实现的,不断成了C#新版本的卖点。比如扩展方法,C#实现得很巧妙,但比起Javascript来,就显得别扭了。我们要扩展一个String类型的format方法,就可以,不必额外在一个静态类里写。

String.prototype.format = function() { 
	this.replace(/\{(\d+)\}/g, function(m, i){ return args[i]; }) 
}

JavaScript有委托,有事件,有异常处理,对象模型也很丰富。虽然不能继承,不过对象都可以无限扩展,有无继承也没那么多的意义了。

浏览器市场竞争日趋白热化,不管是IE9,FireFox 4还是Chrome X,竞争的焦点都是速度,速度的核心自然是Script执行速度。

一堆脚本源码在别人机器上解释执行,没法不开源。开始网站的脚本都很少,但随着客户体验要求的提高,脚本得也越来越庞大复杂。很快大家发现,尽管代码都发布在网上了,也没什么嘛。现在流行JS压缩技术,更没人看了。于是代码开源运动兴起了,JavaScript是开创者。

从创立至今,微软从未被对手真正打败过,却三次败给了JavaScript,承认了JS在Web前端的独霸地位。第一次是微软在Asp.Net中忍痛抛弃了亲生孩子--VBScript,全面支持JS;第二次是匆忙发布Ajax Extensions系列组件;第三次VS2008中集成了JQuery和代码提示为标志,Asp.Net大有融入富客户端之趋势。

不过十五年了,JavaScript还没有一个被广泛认可的开发环境,真不知道GMail那几十万行代码是怎么写出来的。有好用的工具他们也不会公布,只能继续指望微软了。不过十几年都这么过来了,没有也就那么的吧。

有些人很仇视JavaScript,接触过不少做过两年以Web开发还没写过超过一百行JS代码的人,转行吧兄弟。

对编程新手来说,JavaScript是入门的不二选择,门槛为零,实用性强,易学难精,比其它语言好处太多了,既能调动起有潜力入门者的兴趣,又能适时让无兴趣者知难而退,不致以后滥竽充数。以后我写程序了,就办编程学习班,先教JavaScript,目标超过北大青岛。

“这我也能实现”,上网看到一个复杂的JS效果时常常这么想,可真要写起来,就头疼了。DOM操作的复杂性,浏览器兼容性很大地降低了写JS的乐趣,于是JavaScript Framework如雨后春笋般涌现。

短短两年时间,JQuery就脱涌而出,笑傲群雄。当时第一次听说它,就觉得这名字很正点。有个叫得响的名字,才是成功的第一步。

可惜JavaScript当年一念之差,被认作Java的小弟,从此再难翻身,在编程排行榜位置不上不下。虽然功能不断增强,又出现了众多框架,也改变不了只能在浏览器这一亩三分地里折腾的命运。面试时人家问你会什么语言最善长,你敢说JavaScript么?

不过要是浏览器将来喧宾夺主,取代或部分取代操作系统的话,那情况就完全不同了。待浏览器升华之时,正是JavaScript出头之日。那时,Java可能早就进了博物馆,JavaScript正躲藏在浏览器不为人知的角落,偷笑着与自己越来越像的C#。

在前端开发上,大家都没有统一的想法。首先是框架选择,现在看来,除了那种只有几个页面的小网站,毫无疑问应该以JQuery这样的成熟框架为主,自己写的扩展为辅。很多项目负责人不想用JQuery,可能网站连GZip不支持或者不设置,现在都什么年代了?再者尽管掌握很容易,毕竟要学习,一谈到学习很多Senior人士就不玩了。

JQuery本身也有问题,所有功能都在一个文件里,其实可以分成几个小一点文件,就像命名空间一样划分。再者更新太快,浏览器甚至JS核心想嵌入它,还是很遥远的事。

JavaScript也没有太好的开发平台,用来教新手入门很方便,代码一多,就觉得乱得不得了。大家越用越不爽,一些复杂的效果,其实JavaScript完全做得来,也被Flash,将来还有SilverLight抢走了。HTML5标准快出台了,我曾预测会很大程度上代替Flash甚至SilverLight。但现在看来,JavaScript在开发上的弱点会制约HTML5的新特性的应用,也会严重影响HTML5的普及。在HTML5下,能做的事情就更多了,但编写起来应该会更不爽,结果Flash和SilverLight活得更滋润(这两个互掐就不算了),各自的语言、框架、IDE、粉丝一个不少,Web前端开发延续分裂格局。

除非,JavaScript自己改变,既能解释执行又能编译执行,定义类型可动态,又可静态,这点很重要,这样才能进行类型推断,智能提示,微软也好,开源方也好才有兴趣做真正为JavaScript量身打造的IDE。对语言模式、规范的研究将为JS语言注入新的活力。但这变化太革命性,没可行性,这么多浏览器,这么多厂商,怎么一致,谁能协调的了。除非有革命性的事件,上文说了,就是浏览器取代操作系统,桌面变成页面,这虽然有可能,但太遥远。

何况将来桌面变成页面,未必就是HTML,我看更可能是RIA。但Flash没这雄心,乔布斯说Adobe的人太懒得变化,又不开源。JavaFx太嫩了,Sun公司又被吞并了,未来没妈的孩子-苦。SilverLight同样嫩,出身太硬,有贼心有贼胆。尽管现在Flash还占绝对优势,不过一旦时势有变,RIA应用进入桌面,只见银光洒满天。

若微软强势逆推SilverLight,是因早已预见到这一天,那就更有点可怕了。

回过来说JavaScript,可以预见,它在编程语言榜第十的地位,它的生态环境短期内不会有什么变化。JS执行的速度越来越快,开发中的困扰依旧。

当然,您要是精通JavaScript,也是很令人佩服的,薪水应该也不会低。然而比起C/PHP/Java/C#这些语言说,只写前端,真得是比较没前途。所以,我也没动力向精通的门槛迈进了,所以继续接受困扰,快习惯了,趁习惯麻木前记录下来,不然以后连思考都没了。

随机文章推荐
网站分类


注:如需转载本文,请注明出处(原文链接),谢谢。更多精彩内容,请进入简明现代魔法首页。

进入新博客
喜欢本文,就分享它吧
给我留言
您的名字:
您的邮件:
您的网站:


 

copyright © 2009 简明现代魔法    学习、分享、进步

power by Gonn 感谢所有关心和支持本站的朋友们