您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

JavaScript:世界上最被误解的语言

2024/4/10 10:35:41发布11次查看
javascript,也叫mocha,livescript,jscript,ecmascript,是世界上最受欢迎的编程语言之一。事实上,世界上每个人的个人电脑上至少安装了一种javascript的解释器,并且被广泛地使用着。javascript如此受欢迎的原因在于它在万维网中所扮演的脚本语言的角色。
名字java这个前缀的暗示使得人们总会把javascript和java联系起来,认为javascript是java的一个子集或者是一个功能差于java的一个版本。似乎javascript这个名字就是有意造成一种混淆,而这种混淆带来了后来的误解。javascript不被解释成java,java就是java。而javascript则是另一种不同的编程语言。
javascript的语法和java相类似,这就像java和c类似一样。但是,javascript并不是java的一个子集就像java不是c的子集。javascript在应用程序方面比java(oak)当初所打算的表现地更好。
javascript并不是在java的诞生地——sun microsystems公司,被开发出来的,而是在netscape(网景)被开发出来的。它最初被叫做livescript,而这个名字并没有让人们很迷惑。
script这个后缀的暗示,说明javascript不是一种真正的“编程语言”,作为一门脚本语言和编程语言相比,还是有差距的。但是,这的确是一个专业化的问题。和c语言相比,javascript通过牺牲性能而换取更加丰富的表达能力和动态性。
披着 c 外衣的 lispjavascript的类 c 语法,包括花括号和笨重的for语句,使得它看起来更像是一种普通的过程式的语言。这是一种误导,因为和c 或 java相比,javascript 和 函数式语言——比如 lisp 和 scheme,有着更多的相似之处。它用数组代替列表,用对象代替属性列表。函数是第一类型,函数可以有闭包。你不需要去平衡所有的这些圆括号,就可以使用匿名函数。
语言类型定型javascript最初的设计是运行在netscape navigator上的。它的成功使它事实上成为了所有网页浏览器的标准配置。这就造成了语言类型的定型。可以说,javascript就是编程语言中的 george reeves(注:美国演员,因扮演“超人”出名,导致被定型,而无法接演其他角色)。javascript也适用于很多和网页无关的应用程序。
变动的(语言设计)目标javascript的第一个版本相当的弱。它缺少异常处理、内部函数、继承。就它现在的形式而言,它已经是一门完整的面向对象的编程语言了。但是,针对这门语言的很多观点都是基于它不成熟的形式而引发的。
负责管理这门语言的ecma委员会正在开发扩展,这本是出于好意,但是这也加剧了一个更大的问题:版本变得越来越多。而这造成了更多的困扰。
设计错误没有任何编程语言是完美的。javascript也有它本身设计错误,比如重载表示相加和附带类型转换的串连接两个含义,易错的with语句也应该避免使用。保留字策略过于严格。分号的嵌入也是一个巨大的错误,正则表达式的符号也是一样。这些错误会导致编程错误,同时将语言的设计作为一个整体质疑。幸运地是,这些问题中的很多问题可以用一个非常不错的 lint 程序来缓和。
这个语言的设计整体上是相当健全的。令人惊讶地是,ecmascript委员会似乎对于纠正这些错误并不感兴趣。也许,他们对创造一个新的语言更感兴趣吧。(注:这里应该是作者的调侃语)。
糟糕的实现javascript早期的一些实现可谓是错误百出。这一点反映在语言上。更糟糕地是,这些实现被嵌入到了更加错误百出的web浏览器之中。
糟糕的参考书籍几乎所有关于javascript的书籍都相当地糟糕。它们充满了错误,不恰当的例子,和没什么帮助的练习。这门语言中的重要特性被糟糕地解释,或者被完全忽略。我修订过很多关于javascript的书籍,但是我只推荐一本:《javascript权威指南(第五版)》——作者:david flanagan。(作者语:如果你写了一本很好的书,请给我邮递一本赠阅本。)
不合格的标准javascript的官方规范是由ecma出版的。这个官方规范的质量相当的低。而且难以阅读和理解。这是一个造成拙劣书籍问题的一个原因,因为作者们无法使用标准文档来提升他们对语言的理解。ecma和tc39委员会应该为此感到深深地窘迫和不安。
业余爱好者很多使用javascript的人并不是程序员。他们缺乏专业素质和编写优秀程序的训练。无论如何,javascript拥有如此强大的表现力,以致于他们通过使用javascript可以做很多有意义的事情。这就让javascript背上了一个名声,就是说,javascript完全是给业余人员设计的语言,它不适合用于专业编程。其实,事实并非如此。
面向对象javascript是面向对象的吗?它拥有对象,它的对象可以包含数据和处理数据的方法。对象中可以包含其他的对象。它没有类,但是它有构造函数,通过构造函数可以做类似于类的操作,包括充当类变量和方法的容器。它没有面向类的继承,但是它有面向原型的继承。
创建对象体系的两个主要方式分别是通过继承和通过聚合。javascript两个方法都有,但是它的动态性使得它可以在聚合的基础上变得更加优秀。
一些争论认为javascript不是一门真正的面向对象,因为它不支持(提供)信息的隐藏。也就是说,对象不能拥有私有变量和私有方法:所有的成员都是公共的。
但是又有证明显示,javascript中的对象可以有私有变量和私有方法。(注:原文中,作者这里是一个链接,介绍关于对象私有变量和私有方法的文档)当然,很少有人理解这一点,因为javascript是世界上最被误解的编程语言。(注:作者这里使用了一种轻松的调侃方式)。
一些争论认为javascript不是一门真正的面向对象,因为它不支持继承。但是这又被证明javascript不仅能支持传统的继承还能应用其它的代码复用模式。(注:原文这里仍然是一个链接)
版权2001年道格拉斯crockford。版权所有wrrrldwide。
【推荐课程:javascript视频教程】
以上就是javascript:世界上最被误解的语言的详细内容。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product