欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » Html » 正文

史上被骂最多的编程语言——JavaScript

创建时间:2013年08月31日 20:04  阅读次数:(5498)
分享到:
一、世无英雄,遂使竖子成名

1 Web客户端编程语言事实上的王者

(1)JavaScript为何成功?
几乎所有的JavaScript书都会先介绍一番JavaScript的历史,比较有趣的是我在资料中看到这样一句话:
JavaScript的设计者Brendan Eich曾在一次采访中说,JavaScript“几天就设计出来了”。

Ruby的设计者——松本行弘为此感叹:
“这样的出身,得到这样的成功,还真让人出乎意料,……”,
“但由于开发周期短,确实也存在着不足……”。

确实,作为一种编程语言,JavaScript并不完美,在实际开发中,JavaScript同样也存在着严重的问题,其中最突出的就是早期没有完整的规范,导致浏览器厂商各行其是所带来的兼容性问题。

但奇怪的是,就是这样一个并不完美的东西,最终却成为了Web客户端编程语言事实上的王者,而它的种种缺陷,却给我们带来了丰富多彩的各种JavaScript库及框架,整个JavaScript社区则生机勃勃,活力四射,这真是一件很有趣的事。

在我看来,JavaScript的成功在于它“生逢其时”,赶上了互联网大发展的时代契机。而当时“时无英雄,使竖子成名”。

读者可能不服气,那建议你看看那本著名的、指出过“10000小时专业训练是成为天才的必要条件”的《异类》,在此书中,作者Malcolm Gladwell列举了诸多二十世纪在IT业呼风唤雨的大人物:微软比尔盖茨、保罗艾伦和史蒂夫鲍尔默,苹果的乔布斯,Google的埃里克施密特,Sun的比尔乔伊……,他们全部出生在1953~1956之间;

再看看当前中国IT大佬们——李彦宏(1968.11)、张朝阳(1964)、马化腾(1971)、丁磊(1971),马云(1964),刘强东(1974)……,他们的出生日期都集中在上世纪60与70年代交替的时期,……

为什么会这样呢?请结合他们创业的时代大背景看看就明白了。

时势造英雄。JavaScript就是这样的幸运儿。生逢其时,伴随着互联网的发展,有不计其数的Web应用是使用它编写的,JavaScript应用得越广,其社区就越活跃,优秀的程序员不断为JavaScript贡献大量的框架和库,还有Google和微软这样的大公司不断地想办法弥补或改进JavaScript的现有缺陷,推出新的脚本语言和优化其引擎……

一切都构成了一个完整的生态圈。以后的脚本语言,哪怕比JavaScript要好很多,也难以重现JavaScript的辉煌了,JavaScript己经成为Web客户端事实上的王者。

(2)为什么JavaScript招人骂?
有趣的是,尽管JavaScript用得如此广泛,但仍然承担了很多开发者的抱怨,我估计JavaScript可能是“到目前为止,计算机软件史上被人骂得最多的编程语言”。

为什么会这样呢?我看原因有三。

首先是至今犹存的浏览器兼容性问题,请看以下代码:
function  showInformation(info) {
  var h3 = document.getElementById("info");
  //适合于IE,Chrome, Opera
  if (h3.innerText!==undefined) {
    h3.innerText = info;  
  }
  else {  
    //适合于FireFox  
    h3.textContent = info;  
  }
}

上述代码只是简单地给一个<h3 >元素赋值,你可以看到,代码必须针对不同的浏览器写不同的代码,更让人郁闷的是,还可能为同一种浏览器的不同版本写不同的代码,有些浏览器(比如IE6)生命周期之长让人无奈,这些都强迫Web开发者把大量时间花在测试兼容性这种毫无成就感的工作之上,实在颇有点浪费生命的感觉。

大家都觉得不爽的地方,就是创新点,于是有了以jQuery为代表的大量的JavaScript库和框架,其成功在于有意无意地迎合了人们的这种偷懒的心理:

把麻烦丢给别人,把方便留给自己”。 

JavaScript招人骂的第2个原因是它名字引起的误会。

JavaScript,名字中有个Java,初次听到几乎100%的人都以为它与Java有着密切的关系,而且很有可能就是Java语言的子集。

但事实上,叫“李富贵”的人可能在街上讨饭,叫“刘美美”的其实长得不怎么样,而取名“杨德有”的人其实是个小人,干了很多见不得人的事……

这世上名不副实的多了,其实,JavaScript与Java根本是两种语言,取这个名字纯粹是最早设计并实现JavaScript的那批人想攀高枝拍Java马屁的结果。

由于许多人把它当成自己所熟悉的Java语言去用,结果发现它根本不是自己所熟悉的那种编程语言,加上下面要讲的第三个原因让人编起程来很不爽,许多人愤怒了:“NND,给这丫骗了!”

JavaScript招人骂的第3个原因其实与语言本身无关,而与浏览器相关
许多人最早使用JavaScript不是因为喜欢这种语言,而是工作中必须用它,在实际工作中用得最多的就是DOM,而DOM API的设计与各浏览器的具体实现 实在不怎么样,按照jQuery设计者John Resig的观点,它绝不可能获得任何“年度友好API(Friendliest API of the Year)”的奖项!

2 精华与糟粕的并存JavaScript
Douglas  Crockford写了一本《JavaScript:The Good Parts》,在书中他这样写到: 

JavaScript建立在一些非常好的想法和少数非常坏的想法之上。

那些非常好的想法包括函数、弱类型、动态对象和一个富有表现力的对象字面量表示法,而那些坏的想法包括基于全局变量的编程模型、缺乏块作用域、“保留”了一堆根本没用到的保留字,不支持真正的数组(它所提供的类数组对象性能不好)等等。

还有一些是“鸡肋”,比如with语句,原始类型的包装对象,new,void等等 

JavaScript受到的主要批判有:
(1)无法应对复杂的互联网应用程序,不支持大家己普遍熟悉的以类为模板的面向对象编程方式
(2)运行速度慢,其对象内部采用散列表形式组织,相比数组和结构体,存取速度慢
(3)不支持多核CPU,JavaScript没有线程的概念,也缺乏必要的线程同步手段,使得它几乎无法编写能充分应用客户端多核CPU计算能力的代码
(4)浏览器兼容性问题是硬伤
(5)……

不少被批判的内容并不全是事实,或者说现在不少己经有很大改善,但JavaScript身上的这些骂名是洗不掉的了。

其实,JavaScript本身有很多精华,下面的内容就集中于JavaScript的这些亮点之上。

二、JavaScript技术导航
谈到JavaScript技术,其实应该区分以下三个概念:JavaScript语言、JavaScript库和JavaScript宿主。

JavaScript语言的学习主要是JavaScript语法学习,JavaScript宿主是指JavaScript程序的运行环境,通常是浏览器,浏览器提供了许多对象(比如window,document等),JavaScript代码可以直接调用它们,另外,浏览器还包容一个专门负责运行JavaScript代码的组件,我们把它称为JavaScript引擎,在实际学习过程中,一般不需要深入地了解JavaScript引擎的内部运行机理。JavaScript库通常是指由JavaScript社区所贡献出来的能完成特定功能的打包在一起的JavaScript代码。

在学习过程中,通常是把JavaScript语言与JavaScript运行环境所提供的对象和实现的功能“打包到一块”作为一个整体学习,因此,下面的介绍不再明确地区分哪些内容属于JavaScript语言特性,哪些功能实际上是由宿主环境提供的。至于JavaScript库,不在本文的介绍范围之内。读者可自行阅相关的技术书籍。

[本文作者:金旭亮]
来源:http://blog.csdn.net/bitfan/article/details/10362461
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 63+72=? 的结果(结果是:135)
结  果: