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

-----------------------------

早期 07 年学习 js 时候翻译的文章,后来发 mail 给 DC,DC 就加上我的链接了,嘿嘿。

作者:Douglas Crockford 08.3.3
原文:http://javascript.crockford.com/popular.html

《计算机语言:历史与基石》一书由 Jean Sammet 写于 1969 年。内容是对 120 种编程语言的考查,对一些语言进行了详尽地介绍。Sammet 他写这本语言编年史的时候,结构化编程革命(Structured Programming Revolution)和随后流行的面向对象编程尚未到来。书籍以一张巴别塔(Tower of Babel,又译通天塔。见译注)的图片作封面。塔身由一块块砖块围成,围在里面的是各种名称的编程语言。

这便是《圣经Genesis》[11:1-9] 里面大家所熟知的故事了:

耶和华降临,要看看世人们所建造的城和塔。耶和华说,看那,他们成为一样的人民,都是一样的言语,如今既作起这事来,以后他们所要作的事就没有不成就的了。所建造的城和塔。耶和华说,看哪,他们成为一样的人民,都是一样的言语,如今既作起这事来,以后他们所要作的事就没有不成就的了。 我们下去,在那里变乱他们的口音,使他们的言语彼此不通。于是,耶和华使他们从那里分散在全地上。他们就停工,不造那城了。因为耶和华在那里变乱天下人的言语,使众人分散在全地上,所以那城名叫巴别(巴别就是变乱的意思)。

译注:西方语系中,巴别塔即《圣经》中的通天塔,大洪水之后诺亚的子孙繁衍,并试图建造通天塔直通天界,上帝不爽,于是给他们创造了不同的语言,制造了语言隔阂和交流障碍,最终通天塔也轰然倒塌。

这段意思有多种理解意思,有时理解为做人不能太傲慢;有时指的是一个寓言故事,告诉你为什么人们在说不同的语言:耶和华为防止人们达到自己的潜能而制造了 i18N 问题。不过我想把这个道理放到编程语言上去理解也是如此。编程根本问题在于对复杂问题的把握掌控能力。如果语言在需求变化时未能帮助我们处理复杂的系统,而最终令人感到混乱,自然离失败不远。

为何有如此之多的编程语言?不计 Sammet 当时的数量,过去四十年已有大量新语言问世。虽说我们已经在好长的时间内是在一个高级(High Level)的环境下编程了,但真正能跨域边界,达致完备特性的语言还不是很多。那么,我们应不应该就遵循某种恰当的方式来做,来更加幛显地发挥计算机的优势呢?能够以同一种绝佳的语言来统一设计,这样的话,所带来的效率毫无疑问是很明显的。因此我们也可以更有效地集中资源来配合来进行培训或开发工具。那么,为什么我们还不那样子做?

实际上,我们已努力过,已经有好几种语言尝试过构建起大规模的、通用的设计,结果失败了。随着新语言不断加入更多的新功能,使语言本身变得越来越复杂。

因此我们看到取而代之的是许多的专用语言。在完成一些任务的领域中,专用语言可以非常高效地解决,而且本身是不错的。对于要完成某些任务的人而言,选择好的语言,自然如虎添翼。

一门编程语言从某些表达式的语法的运算得到其模型的修正。大多数语言有一组常用的值如数字和文本(numbers、texts 在大多数语言中,奇怪地称作字符串),和若干的操作,如改变和合成值,或一些变量和循环的操作,还有就是把一些常用的操作打包到命令中。

变化行如幻影,线路莫测,就像一道菜和一首乐曲每一次都不尽相同。语言设计的艺术在于清楚哪些是舍的(leave out)。一门良好语言,它里面的功能应该是和谐地工作在一起,帮助我们更好地明白问题和找出解决方案的最佳表达方式(the best expression of its solutio)。

一门好的语言由几组功能所构成,但哪一项的功能才是最好的就永远没有结论。程序员可以不断地讨论这个话题和是否比其他的语言优秀。这里不是说功能不重要。功能它非常重要。只不过我们当时还没清楚它真的那么重要。

于时髦与技术之间而言,语言设计需要做更多的倾向于时髦方面。时髦是 nerdliest 艺术中一种主要的因素,看起来可能怪怪的,却一点都不假,事实如此。无论语言的设计有多么精巧,若以另一种语法出现的话,则是另类,没有希望得到广泛使用的。这样会约束了语言的进化。

像音乐和食物一样,编程语言也属于时间的产物。语言设计的深层问题不是技术上的,而是属于心理上的问题。一门编程语言应该与我们认知的结构相吻合,从而帮助我们更高效率地判断问题。

编程语言像猫这种动物,驯化一只不听话的猫不容易,干脆重新演过好了。照此理,大多数语言成功后由后来的升级版所取缔。然而重新规划的语言很难到达旧版所达到的那种成就。例如,Fortan 曾是语言翘楚,好些年亦不断改进,不过 Fortran IV 的声誉始终非现代化后的 Fortran 方言所能企及。类似地,Pascal 是结构化编程的流行语言,但其 OO 的版本却难盖原 Pascal 之光芒。结果,它渐渐被取代。

专业用途的语言做起来挺有意思的,这也解释了它们的数量为什么是如此地多。如果一门语言结构不太庞大,那么一个程序员就可以掌控它了。大多数语言可以由一个设计师自己创造出来。Pascal:Wirth。C: Ritchie。C++: Stroustrup、Java: Gosling. C#:Hejlsberg、Rebol: Sassenrath、Python:van Rossum、PHP: Lerdorf、Perl:Wall、Ruby: Matsumoto、Lua: Ierusalimschy. E:Miller、JavaScript:Eich。

大多数语言失败之处在于不够清晰。有的语言只是在单个项目或某个公司中使用而已,很少能够脱颖而出成为重要的语言。

大体上说,有两种途径会使某种语言变得重要。一是它能让人类的思想发出光芒,启迪前进。Smalltalk 和 Scheme 可以说具备了这种特质,虽然 Smalltalk 和 Scheme 使用并不广泛,现在看也过时,但在历史上它们却被公认地认为是杰出的语言,而且对后世的语言设计带来深远的影响。

第二是其本身的流行程度怎么样,体现了语言的重要性如何。

程序员在选择一门编程语言的时候,必须再三考虑很多东西,不过到了 web 浏览器编写程序的时候,唯一的选择便是 JavaScript。

JavaScript 可算是一种乖张、亦正亦邪的语言,其貌不扬。它这种乖张的特性给它带来极其糟糕的声誉。DOM 文档对象模型也与 JavaScript 同休公戚,是一个让人不太讨好的 API。在理清了 JavaScript 的概念之后关于 DOM 各种乱七八糟的东西又随着来(译注:跨浏览器的障碍)。有许多人嚷着要改进 JavaScript,但就目前 Web 开发的状况而言可改善的余地很少。JavaScript 语言的功能不够清晰,包括别扭的交互操作或失败的设计。正如 Emperor Joseph 所说的,这语言搞太多花样了。

嗯,既然这个 JavaScript 缺失之处这么多,一点都不讨好,怎么还做 Web 龙头的编程语言?回顾萌芽阶段当初,那位 Brendan Eich 仁兄就误打误撞的,说服了当时 Netscape 的秃头老板,说 Navigator 要做自己的脚本语言,还要不是新的语言不做,——就这样,匆匆忙忙地设计出一门新的语言来。话说回来,还真得要设计新的语言,那时并没有替代品。后来,为了能蚕食 Netscape 的市场,微软的 IE 团队决定兼容 Netscape 浏览器的 JavaScript,于是就心翼翼地通过逆向工程来得到 JavaScript,尽管明显有许多错误但也不管三七二十一了。其他浏览器厂商亦如是,效仿微软的做法,因此不存在浏览器必须实现的是“标准的 JavaScript”之说法。除了 JavaScript 外,没有其他语言能够在所有浏览器行得通。再者彼时互联网发展充满着一切未知,也不存在对某个语言进行仔细地调研,没有什么前期性的调研或周密的设计。它只是出自 Netscape 之手然后不断被复制而已。若我们人为地、刻意地、费煞苦心地创造一个类似 JavaScript 的东东但又为它过早地去建立标准,那样的东西,说不定不是我们想要的。

尽管 JavaScript 充满着缺点,但深入其内核是有许多地方错有错着的。当你一步一步慢慢到内部了解其奥秘,便会发现 JavaScript 是一个精练而且强大的编程语言。许多 AJAX 库现在用 JavaScript 来处理 DOM,以网页的形式来生成应用程序的交互平台。AJAX 变得更为流行正因 JavaScirpt 还算可以的,而且某些方面还超乎我们的想象。世界上最为流行的 JavaScript 曾经是世界上最受误解的语言。以其明显的缺陷、不时髦的编程模型、令全世界都误导的简介与它那个不相称的名字,曾经让大多数聪明的程序员觉得毫无价值而遭到抵制。但 AJAX 给了 JavaSciprt 二次新生。

正因为 JavaScript 是浏览器的正统语言,正因为 Web 浏览器渐渐成为传送消息程序中的重要部分,正因为 JavaScript 并不是太糟糕,故所以,JavaSciprt 已经成为世界上最流行的编程语言。由于其流通性在加大,同时也被应用在一些嵌入式程序中,故所以,JavaScript 业已经越来越重要了。

比聪明更好的是……好命!(It is better to be lucky than smart..)

时间: 2024-09-20 14:07:11

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

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

javascript JavaScript, aka Mocha, aka LiveScript, aka JScript, aka ECMAScript, is one of the world's most popular programming languages. Virtually every personal computer in the world has at least one JavaScript interpreter installed on it and in act

世界上没有完美的编程语言, 不要和一种语言厮守终生

简评:就像段子中说的那样,如果你想爆发一场程序员之间的世界大战,只需要发一句"PHP是最好的语言"就可以了.其实对于程序员而言,往往喜欢给自己打上"Java程序员"."PHP程序员"或者"OC程序员"的标签,并且对于什么才是最好的语言争论不休,甚至者更有"程序员鄙视链"链式地鄙视下去,但是其实世界上本没有完美的编程语言,当你在处理某些领域的问题时往往需要换一种语言,语言只是解决问题的工具,仅此而已.编程语言

Qore Programming Language 0.8.4发布 嵌入式多线程编程语言

Qore Programming Language 是一款http://www.aliyun.com/zixun/aggregation/17547.html">功能强大.嵌入式多线程逻辑和面向对象的编程语言,其设计是应用于以灵活的脚本为基础的企业界面开发.它也可作为一种通用语言. Qore Programming Language 0.8.4该版本进行了重要的更新,增加了用户模块,模块在运行时扩展语言,现在可以书面Qore本身的支持.Qore现在支持绑定到值类型,它提供了可运行在任何Qo

出版商统计出最受欢迎的编程语言:Python 居首

世界上编程方面的最大的出版商 Packt Publishing 最近对 11000 名访客进行了调查,根据调查结果,Python 和 JavaScript 是当今最流行的编程语言,而 Java 紧随其后,排名第三. 调查内容包括开发者使用的编程语言.喜欢的框架.薪酬信息等.调查显示,如果就编程人员每天都要使用的语言来看,当今前10名的编程语言排名是 Python.JavaScript.Java.PHP.HTML(虽然不算编程语言). C#.SQL.CSS(也不算) .C++ 和 R. 从之前的类

出版商统计出最受欢迎的编程语言

世界上最大的编程相关书籍出版商Packt Publishing进行的市场研究显示,JavaScript和Python是当今最流行的编程语言,Java流行程度位居第3.该公司通过调查11000受访者得出以上结论.受访者还回答了其他问题,包括他们使用什么语言,喜爱的框架,和工资详细信息.调查显示,如果就编程人员每天都要使用的语言来看,当今前10名的编程语言排名是JavaScript, Python, Java, PHP, HTML , C#, SQL, CSS , C++和R. Packt Publ

2011年7月编程语言排行榜,Objective-C将成为年度语言

TIOBE公布了2011年7月编程语言排行榜,本期的榜单标题: Objective-C将成为年度语言. 前三甲依然是Java.C.C++,4至10名依次为C#.PHP.Objective-C.Visual Basic.Python.Perl.JavaScript.从下图的榜单中可以看出Objective-C和Lua借苹果之势,使用的人也越来越多了. 以下内容为乌帮图翻译(如有错误,还望指正): 2011年已经过去一半,从市场占有率来看,有一种语言脱颖而出,那就是Objective-C,相对201

TIOBE 2011年7月编程语言排行榜:Objective-C成为年度语言

TIOBE 7月份编程语言排行榜已经发布,本月热点关注的语言是Objective-C将成为年度语言.前三甲依然是Java.C.C++,4至10名依次为C#.PHP.Objective-C.Visual Basic.Python.Perl.JavaScript.从下图的榜单中可以看出Objective-C和Lua借苹果之势,使用的人也越来越多了. 前三甲依然是Java.C.C++,4至10名依次为C#.PHP.Objective-C.Visual Basic.Python.Perl.JavaScr

那些阿里人写过的书

注:本文资料整理自天猫,作者身份与职务来自出版社标注信息,可能与目前实际不符,请注意! 技术类: 1.Storm 实战 作者:商家数据业务部, 隶属于阿里巴巴集团数据平台事业部. 出版时间:2014-08-01 内容简介:     随着大数据实时处理需求的强劲增长,Storm的出现填补了大数据处理生态系统的缺失,并被越来越多的公司所采用.阿里巴巴集团数据平台事业部商家数据业务部正是最早使用Storm的技术团队之一.     <Storm实战:构建大数据实时计算 >是一本系统并且具有实践指导意义

全面理解面向对象的 JavaScript

全面理解面向对象的 JavaScript JavaScript 函数式脚本语言特性以及其看似随意的编写风格,导致长期以来人们对这一门语言的误解,即认为 JavaScript 不是一门面向对象的语言,或者只是部分具备一些面向对象的特征.本文将回归面向对象本意,从对语言感悟的角度阐述为什么 JavaScript 是一门彻底的面向对象的语言,以及如何正确地使用这一特性. 前言 当今 JavaScript 大行其道,各种应用对其依赖日深.web 程序员已逐渐习惯使用各种优秀的 JavaScript 框架