JavaScript,或者叫 Mocha,或者叫 LiveScript,或者叫 JScript,又或者叫 ECMAScript,是世界上最流行的编程语言之一。事实上世界上的每一台个人电脑都安装并在频繁使用至少一个JavaScript解释器。JavaScript的流行完全是由于他在WWW脚本语言领域中的地位决定的。

  尽管它很流行,但是很少有人知道JavaScript是一个非常棒的动态面向对象通用编程语言。这居然能成为一个秘密!这门语言为什么被误解如此之深?

  名字

  Java- 前缀很容易使人联想到Java,并认为它是Java的子集或简化版的Java。看起来最初给它选这个名字是别有用心的,是故意混淆概念、故意制造"误解"的。JavaScript不是解释执行的Java。Java是解释执行的Java。JavaScript是另外一种语言。

  JavaScript的语法和Java有相似之处,这就像Java的语法和C很相像一样。但是它不是Java的子集,就像Java不是C的子集一样。它在Java(Oak)最初打算进军的领域中比Java更好。

  JavaScript不是Sun Microsystems的产品,Sun是Java的家。JavaScript是在Netscape被开发出来的。它最初叫LiveScript,嗯……还是这个名字好。

  -Script后缀让人认为他不是一门真正的编程语言,和一门"编程语言"还有相当的差距。但是这只是应用领域的问题。和C相比,JavaScript是牺牲了性能但换来了丰富的表现力和灵活的形态。

  披着C皮的Lisp

  JavaScript的类C语法,包括大括号和语句的形式,让它看起来像普通的面向过程编程语言。这是一种误解,因为JavaScript和函数式语言,比如 Lisp 或 Scheme,有更多的相似之处,而不是和C或Java。它使用数组而不是列表,使用对象而不是属性列表。函数是第一位的,它有闭包(closures 怎么翻译??),另外你还可以使用lambda表达式。

  类型转换

  JavaScript最初被设计成在Netscape Navigator中运行,它在Navigator中的成功引领它成为事实上所有web浏览器的标准装备。这就造就了"类型转换"。JavaScript是编程语言中的 George Reeves(超人),是大量非web程序的称职之选。

  移动靶

  JavaScript的最初几版非常弱,没有异常处理,没有内部函数和继承。现如今,它已经成为完全面向对象的编程语言。但是这门语言的许多思想是基于它不成熟的形式的。

  ECMA委员会,这门语言的管家,正在对它进行扩展,也在蓄意恶化它最大的问题:有太多的版本。这是混乱的根源。

  设计上的错误

  没有什么编程语言是完美的。JavaScript也有它设计上的错误,比如重载的+号随着类型的不同既表示"相加"又表示"连接",和本该避免的有错误倾向的 with 语句。它的保留字策略过于严格。分号的插入是一个巨大的错误,比如作为字面正则表达式的符号时。这些失误已直接导致编程中的错误,也使这门语言的整体设计遭人质疑。还好,这些问题中有许多都可以在良好的 lint 程序中得以缓解。

  这门语言的整体设计(上的问题)是相当明显的。奇怪的是ECMAScript委员会并没有对修正其中存在的问题表现出太大的兴趣,也许他们更热衷于制造新的问题。

  糟糕的实现

  JavaScript的一些早期实现有许多bug,这反过来对语言本身产生了很坏的影响。更糟糕的是这些满是bug的实现是嵌入在满是bug的web浏览器中的。

  糟糕的书

  几乎所有的JavaScript书都是相当可怕的。它们包含错误,包含不好的例子,并鼓励不好的做法。JavaScript语言的一些重要特性它们要么没有解释清楚,要么根本就没有提及。我看过很多JavaScript的书,但我只能推荐一本:David Flanagan著的 JavaScript: The Definitive Guide (4th Edition) (《JavaScript权威指南 第四版》)。(作者们请注意:如果你们写出了好书请发给我一份副本,我给你们校对。)

  “准标准”的标准

  ECMA公布的官方语言规范的质量极其的差。不仅难读而且极其难懂。它可为那些"糟糕的书"做出了不小的贡献,因为那些作者无法通过这个标准文档来更深地理解这门语言。ECMA和TC39应该为此感到非常尴尬。

  业余者

  使用JavaScript的人大多不是程序员,他们缺少写良好程序的培训和训练。JavaScript有非常强大的表现力,不管怎样他们也能使用它做有用的事情。这给了JavaScript一个”全然适合业余爱好者而不适合专业程序员“的名声。这很明显是一个错误。

  面向对象

  JavaScript是面向对象的吗?它有对象,它的对象可以包含数据以及对数据进行操作的方法,对象也可以包含其他的对象。它没有类,但是它有构造函数来做类的事情,包括声明类的变量和方法。它没有面向类的继承,但是他有面向原型的继承。

  构建对象系统的两大主要方法是继承(is-a)和聚合(has-a)。这两者JavaScript都有,但是它的动态天性允许有比聚合更好的实现方式。

  一些关于JavaScript不是真的面向对象的争论其理由是它没有提供信息隐藏。也就是说JavaScript的对象没有私有变量和私有方法:它的所有成员都是公开的。

  但是事实是JavaScript 的对象可以有私有变量和私有方法(点击这里来看如何实现)。当然,之所以很少有人知道这个是因为JavaScript是世界上误解最深的语言嘛。

  另一些关于JavaScript不是真的面向对象的争论其理由是它没有提供继承。但是事实是JavaScript不但支持经典的继承,而且支持其他一些代码重用的模式。

作者:道格拉斯·克罗克福德(Douglas Crockford)

作者简介:Douglas Crockford是Web开发领域最知名的技术权威之一,ECMA JavaScript2.0标准化委员会委员。被JavaScript之父Brendan Eich称为JavaScript的大宗师(Yoda)。曾任Yahoo!资深JavaScript架构师,现任PayPal高级JavaScript架构师。

他是JSON、JSLint、JSMin和ADSafe的创造者,也是名著《JavaScript: The Good Parts》(中文版《JavaScript语言精粹》)的作者。撰写了许多广为流传、影响深远的技术文章,包括“JavaScript:世界上最被误解的语言”。
Douglas Crockford曾在著名的Lucasfilm电影公司任技术总监;在Paramount(派拉蒙)公司任新媒体高级总监;communities社区创始人兼CEO;State软件公司CTO。
2012.05.14,Paypal宣布Douglas Crockford加入Paypal。
(简介来源于百度百科)
翻译:袁晓辉  原文链接: http://www.crockford.com/javascript/javascript.html 

JavaScript:世界上最被误解的语言相关推荐

  1. JavaScript: 世界上最被误解的语言|Douglas Crockford

    这篇文章是javascript大牛Douglas Crockford 写的,实习的时候曾读过,现在再读,又有了不同的理解,特此转载. 原文地址:JavaScript: The Wrrrld's Mos ...

  2. javascript世界上最被误解的语言

    http://www2.uuzone.com/blog/555080192/18957.htm

  3. javascript——从「最被误解的语言」到「最流行的语言」

    JavaScript曾是"世界上最被误解的语言",因为它担负太多的特性,包括糟糕的交互和失败的设计,但随着Ajax的到来,JavaScript"从最受误解的编程语言演变为 ...

  4. 世界上最有能量的语言,一定要经常说!

    1.能控制住对方发火的语言: 对不起! 2.筑起谦虚人格塔的语言: 谢谢你! 3.让对方耸起肩膀的语言:做得好! 4.能召唤和解和和平的语言:我错了! 5.能提高存在感的语言:你真棒! 6.把对方心情 ...

  5. JavaScript:从最受误解的编程语言演变为最流行的语言 The World's Most Misunderstood Programming Language Has Become the Wo

    edit@2011-4-27 by frank: 1.加入了插图:2.修改了文章的字眼.语句:3.统一了CSS样式. 最新地址在 http://www.ajaxjs.com/popular.htm - ...

  6. 世界上最有效率的语言

    https://www.sohu.com/a/120594953_418353 人类现存于世的语言有六七千种之多,哪一种是效率最高的语言呢?法国里昂大学的语言学家给出了一个衡量标准--信息率,即在相同 ...

  7. 有人说Java是世界上最好的语言,也有人说Java这几年就会没落,你怎么看呢

    Java语言长期以来一直霸占多数热门编程语言榜单的榜首,可见这是一个备受程序员热捧的编程语言.但随着各种语言的兴起,出现了很多问题,Java真的要没落了吗?Java这个20多年的后端常青树难道真的要走 ...

  8. 世界上最著名的操作系统是用什么语言编写的?

    Unix 与 C 语言的关系 在服务器领域,最著名的系统莫过于Unix了,即便Linux也是类Unix的操作系统.Unix 是用 C 语言编写的,而且是世界上第一个用 C 语言编写的操作系统.但是 U ...

  9. 在别人网页上运行js脚本_初始JavaScript,世界上最流行的语言之一

    1.JavaScript 是什么? JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思) 脚本语言:不需要编译,运行过程中由 js 解释器( j ...

最新文章

  1. CUDNN_STATUS_NOT_INITIALIZED解决汇总
  2. 解决Dependency ‘xxxx‘ not found
  3. 【OpenCV入门教程之五】 分离颜色通道多通道图像混合(转)
  4. 结对-人机对战象棋游戏-开发过程
  5. [jzoj 5775]【NOIP2008模拟】农夫约的假期 (前缀和+递推)
  6. 一颗接一颗的飞鸽传书
  7. android视频播放器sdk对比,Android项目之android SDK视频播放与vitamio视频播放
  8. VMware Workstation Player与VMware Workstation Pro的区别
  9. diskgenius扩容c盘重启电脑卡住_用diskgenius更改分区参数的终止柱面,扩大C盘空间后...
  10. PHP在线测算带支付运营版,【PHP】最新在线自动发卡平台源码,带多个支付接口及商户平台...
  11. codebook码本算法
  12. PhotoShop 2018 CC 破解 (Win10 附补丁)
  13. 1.CLUSTERDOWN Hash slot not served
  14. python中如何判断词性_python进行词性分析
  15. Three.js修改模型中心点
  16. java模拟简单的qq聊天_初学java之模拟QQ聊天软件(简单实现)
  17. 学习虚幻4(一)U3D与UE4的比较
  18. android studio lint,Android Studio Lint 工具
  19. JME 3 入门教程 3 - Hello Assets
  20. python归一化 增大差异_Python实现描述性统计

热门文章

  1. 加勒比海盗5——死无对证
  2. python处理pdf文件
  3. Python-Flask开发微电影网站(二)
  4. 人脸识别被滥用,三人成虎不足挂齿?
  5. 让Octave支持中文
  6. java poi分批次导入Excel
  7. 雅思考试为您揭秘美国大学最新排名中的玄机
  8. java像素鸟素材_像素鸟FlappyBird素材(图片+音乐)
  9. 图书销售管理系统的设计与实现
  10. 银行活期存取款业务处理系统的数据流图