服务粉丝

我们一直在努力
当前位置:首页 > 财经 >

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

日期: 来源:前端早读课收集编辑:Douglas

前言

本文于作者写于 2001 年,也就是 22 年前。作者:@Douglas Crockford 分享

正文从这开始~~

JavaScript, 亦称为 Mocha、LiveScript,也叫做 JScript ECMAScript,是世界上流行的编程语言之一。事实上世界上差不多每台个人电脑都至少安装了一个 JavaScript 解释器。JavaScript 的流行完全在于它作为 WWW 的脚本语言的角色。

不管它有多么流行,极少有人了解 JavaScript 是一个十分动态的通用面向对象编程语言。这怎能成为一个秘密呢?为什么这个语言如此被误解?

关于名字

这个 Java - 前缀暗示了 JavaScript 和 Java 的关系,也就是 JavaScipt 是 Java 的一个子集也就是不如 Java 强大。看上去这个名称就故意制造混乱,然后随之而来的是误解。JavaScript 并不是解释型的 Java 语言。Java 是解释型的 Java,JavaScript 是另一种语言。

JavaScript 和 Java 的语法很相似,就象 Java 和 C 的语法相似一样。但它也不是 Java 的子集就像 Java 也不是 C 的子集一样。在应用上,Java 要远比原先设想的好得多(Java 原称 Oak)。

JavaScript 并不是由 Sun 公司──Java 的老家──开发的。JavaScript 是由 Netscape 公司开发。它本来叫做 LiveScript,这个名字并不是那样容易混淆。

这个 - Script 后缀暗示了它不是一个真正的编程语言──脚本语言好象不是真正的编程语言。但其实这是一个专长的问题。相对 C 而言,JavaScript 牺牲性能但带来更强的表达力和动态性。

披着 C 外衣的 Lisp

JavaScript 的 C 风格的语法,包括大括号和复杂的 for 语句,让它看起来好象是一个普通的过程式语言。这是一个误导因为 JavaScript 和函数式语言如 Lisp 和 Scheme 有更多的共同之处。它用数组代替了列表,用对象代替了属性列表。函数是第一型的。而且有闭包。你不需要平衡那些括号就可以用 lambda 算子。

思维定势

JavaScript 是原被设计在 Netscape Navigator 中运行的。它的成功让它成为几乎所有浏览器的标准配置。这导致了思维定势。JavaScript 简直就是程序语言中的 George Reeves (一位曾扮演超人的演员,但后来死于枪杀,被官方认为自杀,细节不详──译注)。其实,JavaScript 也适合很多和 Web 无关的应用程序。

不断改变的目标

JavaScript 的第一个版本功能十分弱。它缺少异常处理、内部函数和继承。而它的现在的形态,它已经是一套完整的面向对象语言。但很多看法都是基于认为它的形式不成熟。

管理这个语言的 ECMA 委员正在开发扩展 ,原意是很好,而这样却会加剧这个语言最严重的问题:版本太多了。这也造成了混淆。

设计错误

没有什么编程语言是完美的,JavaScript 也有它的设计上的错误,如的重载同时表示加和带类型转换的串连接,和有错误倾向的 with 语句应该避免使用。保留字策略过于严格。分号的加入是一个很大的错误,正则表达式的记号也是。这些错误会导致编程错误,并把语言的设计作为整个叫做问题。幸运的是,这些问题可以用一个很好和 lint 程序来避免。

这个语言的设计从整体上看还是十分健全的。但很令人惊讶的是, ECMAScript 委员会好象根本不想修正这些错误。也许他们对重新制作一个更感兴趣。

肮脏的实现

JavaScript 早期实现错误百出。这对该语言带来了很恶劣的影响。更糟糕的是,这些实现还被嵌入的更错误百出的浏览器中。

拙劣的书籍

几乎所有的书籍都十分恐怖。里面到处是错误、蹩脚的例子还自创一套拙劣的惯例。语言中重要的特性却常常解释不好,或者干脆完全不写。我翻阅了几十本 JavaScript 的书,我只推荐两本:JavaScript: The Definitive Guide (4th Edition) by David Flanagan and Dynamic HTML (2nd Edition) by Danny Goodman. 都来自于 O'Reilly.

不够标准的标准

该语言的官方标准规格说明书由 ECMA 发布。该规格书也是质量奇差。它难以阅读也难以理解。它也对拙劣书籍的问题作出了自己的一份 “贡献”,因为作者无法使用这个标准文档来增加他们对语言的认识。ECMA 和 TC39 委员会应该为此感到深深的羞愧。

业余爱好者

大部分写 JavaScript 的人都不是程序员。他们缺乏训练写好程序的修养。JavaScript 有如此丰富的表达能力,他们可以任意用它来写代码,以任何形式。这给 JavaScript 带来了一个名声──它是专门为外行设计的,不适合专业的程序员。这显然不是事实。

面向对象

JavaScript 是不是面向对象的?它拥有对象,可以包含数据和处理数据的方法。对象可以包含其它对象。它没有类,但它却有构造器可以做类能做的事,包括扮演类变量和方法的容器的角色。它没有基于类的继承,但它有基于原型的继承。

两个建立对象系统的方法是通过继承(是一个……)和通过聚合(有一个……)。JavaScript 两个都有,但它的动态性质让它可以在聚合上超越。

一些批评说 JavaScript 不是真正面向对象的因为它不能提供信息的隐藏。也就是,对象不能有私有变量和私有方法:所有的成员都是公共的。S

但又有证明了 JavaScript 对象可以拥有私有变量和私有方法。当然,极少有人认识到,因为 JavaScript 是世界是最受误解的程序嘛!

另外还有批评说 JavaScript 不能提供继承,这里证明了 JavaScript 不仅能支持传统的继承还能应用其它的代码复用模式。

关于本文
英文版:http://crockford.com/javascript/javascript.html
中文版:http://crockford.com/javascript/zh/javascript.html

之前有介绍过一本《JavaScript 二十年》,有兴趣的可以看看。

相关阅读

  • 炸裂!免费的ChatGPT来了~

  • Hello 大家好 我是库库。继上次给大家推荐的以GPT为首的AI绘画产品深受大家的喜欢,很多粉丝后台私信要求多发一些类似于这种的软件;目前市面上也是衍生了许许多多的AI产品,让人
  • 沣东车辆小学举办钢笔字书写大赛

  •   阳光讯(栾明沙 记者 刘杰)近日,西咸新区沣东新城车辆小学三年级语文组开展了“书法润童心,墨香沁校园”钢笔字书写比赛,带领孩子们一起赏中国书法,悟字里千秋。    本次活
  • 生物多样性保护需重视非英语文献

  • 澳大利亚昆士兰大学官网近日报道称,该校研究人员调查了37个非英语国家和地区的生物多样性报告,发现非英语文献虽在本国报告中被广泛使用,但在全球报告中未能体现。在生物多样
  • 远程亲吻神器~终结异地恋之苦

  • 这是一款号称能终结异地恋之苦的远程亲吻神器——可能吻。用时只需要在手机上打开app,将手机固定在亲吻神器上就可以用啦!它内置传感器,能自动识别亲吻时的力度、动作、温度和
  • 加纳乔晒照,胸前新添十字架翅膀文身

  • 近日,曼联的阿根廷小将加纳乔新添了文身。加纳乔在社交媒体晒出文身师正在为他文身的照片,文身的位置是胸前。文身师晒出了加纳乔的胸前文身图案,是一个十字架翅膀。
  • 语言认知 | 中医对孤独症谱系障碍的认识(二)

  • 开栏语语言认知康复专栏将定期为您推出有关语言、智能障碍及认知行为问题的康复诊疗相关科普知识,欢迎持续关注!上次我们提到中医如何认识孤独症谱系障碍,今天我们主要和大家分
  • 几十秒看完10分钟的视频,就靠这个AI输入法。

  • 前两天,动作电影界出了个大新闻,三上要引退了。作为自己的启蒙老师,世超刷到这条推特后,心里能不急么。于是立马点开她发的视频链接,想看看她说了啥。不过,即便世超有多年日语观影
  • 聊一款我很期待的大屏笔记本

  • 还记得上周我们点评了戴尔新出的灵越13 Pro,刚拿到电脑时我并没有多期待,结果测完发现表现还可以,在13.3英寸下可以考虑。(点我回顾)由于戴尔 灵越13 Pro给了我意外的惊喜,所以我
  • 我对 ChatGPT 下手了!

  • ChatGPT是一款非常神奇的 AI 软件,它能够帮助我们改简历、写文章、阅读汇总。同时,它也是我们的一个非常好的文字秘书。但是,在使用它的过程中,总会让我感到非常头疼。因为作为

热门文章

  • “复活”半年后 京东拍拍二手杀入公益事业

  • 京东拍拍二手“复活”半年后,杀入公益事业,试图让企业捐的赠品、家庭闲置品变成实实在在的“爱心”。 把“闲置品”变爱心 6月12日,“益心一益·守护梦想每一步”2018年四
  • 美国对华2000亿关税清单,到底影响有多大?

  • 1 今天A股大跌,上证最大跌幅超过2%。直接导火索是美国证实计划对华2000亿美元产品加征25%关税。 听起来,2000亿美元数目巨大,我们来算笔账。 2000亿美元,按现在人民币汇率

最新文章

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

  • 前言本文于作者写于 2001 年,也就是 22 年前。作者:@Douglas Crockford 分享正文从这开始~~JavaScript, 亦称为 Mocha、LiveScript,也叫做 JScript ECMAScript,是世界上流行的编程
  • 【第2917期】JSON 的故事

  • 前言周末愉快。你有开始接触播客了么?今日前端早读课文章由 @软件考古学家分享。前端早读课:重视信息质量【第2859期】React 纪录片心得 — 社群驱动创新【第2858期】React
  • 炸裂!免费的ChatGPT来了~

  • Hello 大家好 我是库库。继上次给大家推荐的以GPT为首的AI绘画产品深受大家的喜欢,很多粉丝后台私信要求多发一些类似于这种的软件;目前市面上也是衍生了许许多多的AI产品,让人
  • 微信这次改变,有点惊艳!

  • 作者:沉默王二Java 程序员进阶之路:https://tobebetterjavaer.com大家好,我是二哥呀。不知道,大家有没有被灰度到,微信又悄悄地“搞事情”了,当点击订阅号中的链接,微信会弹出一个
  • 外国人在深圳工作,已经被卷到崩溃了

  • 本文经授权转载自深圳微时光(ID:szdays)原标题 | 外国人卷在深圳职场:同事自愿加班、微信秒回,被卷到崩溃作者 | joanna部分图源 | pixabay法国人Alan戴上头盔骑上小电瓶准备下班
  • 一代顶流CP,崩得互联网集体吵到决裂

  • 《名侦探柯南》粉丝现状↑4月以来,《名侦探柯南》的争议就没掉出过热搜。先是与优衣库联名的T恤图案率先引发粉丝大战,官方晒出的宣传图中,作者青山刚昌、柯南本人都穿着柯哀图