解密编程语言林林种,为何还用JavaScript?

网友投稿 519 2022-05-30

现在已经有许多种编程语言了,为什么还要用JavaScript呢?下面从7个方面来讲述如何选择一门编程语言及如何评判JavaScript的整体表现。

JavaScript可以自由使用吗?

JavaScript可以说是最开放的编程语言:ECMA-262,JavaScript语言的规范,它是一个ISO标准,有着许多独立的实现,其中一些是开源的。此外,该语言是由TC39演变而来,TC39是一个由几家公司组成的委员会,包括所有主要的浏览器厂商。这些公司通常都是竞争对手,但是却能为JavaScript语言的福祉而一起工作。

JavaScript是一门优雅的编程语言吗?

这很难说,我使用过几种语言,写过许多不同范式的等价代码。因此,我很清楚JavaScript并非那么极致的优雅。然而,它是一种非常灵活的语言,拥有一颗相当优雅的内核,并且能够让你使用面向对象和函数式编程的混合方式。

JavaScript引擎之间的语言兼容性往往会是一个问题,但如今不再是了,这一定程度上要感谢test262套件(https://github.com/tc39/test262),它可以用于检查引擎是否遵循ECMAScript规范。相反,浏览器和DOM的差异仍然是一个挑战。这也是为什么我们通常会借助于框架来隐藏这些差异的原因。

JavaScript有用吗?

如果它不能让你写出你想要的程序,那么哪怕它是世界上最漂亮的程序语言都没有任何用处。

1. 图形用户界面

在图形用户界面方面,JavaScript受益于它已成为HTML5的一部分。我用HTML5这个术语来表示“跨浏览器平台”(HTML、CSS,以及浏览器JavaScript API)。HTML5现被广泛部署并且仍在不断地进步,它正逐渐变成完善的一层,能够写出功能完备的、跨浏览器的应用;类似于Java平台,它就像是一个嵌入式的操作系统。HTML5的一个卖点是允许你编写跨平台的图形用户界面。当然,这总会有一些妥协:通过放弃一定的质量要求换取不仅限于单一的操作系统。在过去,“跨平台”意味着Windows、Mac OS,或者Linux。但是现在我们又有了两个交互平台:Web以及mobile。通过HTML5,你可以通过使用诸如PhoneGap、Chrome Apps(http://developer.chrome.com/apps/)、以及TideSDK(http://www.tidesdk.org/)等这些技术去触及所有的平台。

另外,有些平台拥有和原生应用一样的Web应用,或者可以让你将它们安装到本地,例如Chrome OS、Firefox OS以及Android。

2. 其他技术补充完善JavaScript

有更多不是HTML5的技术对JavaScript进行着有效的补充,使得该语言变得更为实用。

(1)类库

JavaScript有大量的类库,从解析JavaScript(通过Esprima(http://esprima.org))到处理和显示PDF文件(通过PDF.js(https://github.com/mozilla/pdf.js))等,足以让你完成任务。

(2)Node.js(http://nodejs.org)

Node.js平台允许你编写服务端代码以及Shell脚本(如构建工具、测试执行等)。

(3)JSON (JavaScript对象表示法, 参见第22章

JSON是一种基于JavaScript的数据格式,已经成为网络上流行的数据交换格式(如Web服务的结果)。

(4)NoSQL数据库 (诸如CouchDB[http://couchdb.apache.org]以及MongoDB[http://www.mongodb.org])

这些数据库和JSON以及JavaScript紧密相连。

JavaScript有什么好用的工具?

JavaScript正在具备越来越好的构建工具(如Grunt[http://gruntjs.com])和测试工具(如mocha[http://visionmedia.github.io/mocha/])。Node.js使得我们可以通过Shell(不仅仅是通过浏览器)来运行这些工具。这一领域存在一个风险就是碎片化,现在正日渐出现太多类似的工具。

JavaScript IDE的空间仍处于较为初级的阶段,但是发展迅速。Web开发的复杂性和活力为它带来创新的沃土。两个开源的例子是Brackets(http://brackets.io)和Light Table(http://www.lighttable.com)。

此外,浏览器也越来越具备开发的环境。如Chrome,尤其是在最近取得了令人印象深刻的进步。看着许多IDE和浏览器未来将整合在一起,这将非常有趣。

JavaScript在处理你要做的事情时够快吗?

JavaScript引擎已经取得了极大的进步,旧的编译器进化成了实时的编译器。绝大多数的应用程序现在已经运行得足够快了。况且,新的想法也正在开发中,它们都为了让未来应用里的JavaScript程序可以执行得足够快。

asm.js(http://asmjs.org/)是一个JavaScript(非常稳定)的子集,它在当前的引擎上跑得很快,具备C++编译过的程序的70%的性能。例如,它可以用于实现Web应用程序中性能至上的算法部分,也可以用于将基于C++的游戏移植到Web平台。

ParallelJS(http://www.2ality.com/2013/12/paralleljs.html)使用和JavaScript截然不同的代码,使用新的数组方法mapPar, filterPar,以及reducePar(JavaScript对于已经存在的数组平行版本方法是map、filter,以及reduce)。为了使其并行工作,回调函数必须写成指定的格式;主要的限制是你不能够改变那些回调中创建的数据。

JavaScript是广泛使用的吗?

一门被广泛使用的语言通常有两个好处。首先,这门语言有更好的文档和支持。其次,越来越多的程序员了解它,这点非常重要,不论你是想要雇用别人还是销售基于这门语言的工具。

JavaScript被广泛使用,且获得了以下两个好处。

JavaScript相关的文档和各式各样的支持:书籍、播客、博客、电子邮件时事通信、论坛等。

JavaScript开发人员需求量很大,尽管他们的排名也不断在增加。

JavaScript有前途吗?

有几件事表明JavaScript有一个光明的未来。

语言是稳步发展的;ECMAScript 6看起来不错。

有许多JavaScript相关的创新(例如,上述提到的asm.js和ParallelJS,微软出品的TypeScript等)。

JavaScript的网络平台是一个必需的组成部分,正在迅速成熟。

JavaScript是被联盟广泛支持的,而不是被单独的人或者公司控制。

以上内容节选自《深入理解JavaScript》

相关本书评论:

这是一本为刚接触编程的程序员写的最简洁完整的JavaScript书籍。

这是一本非常棒的书,极易理解。对Web开发新人和高手来说都是必备读物。

—— Ariya Hidayat, Shape Security工程总监

Dr.Axel Rauschmayer 专攻JavaScript和Web开发领域。他在2ality.com写博客,教Ecmanauten,编辑JavaScript Weekly周刊,组织MunichJS用户组。Axel从1985年开始编程,1995年开始开发Web应用。

译者们

王玉林

花名:小飞

微博:@非常长

魔筷科技创始人,原阿里巴巴资深前端工程师,原阿里花名“飞长”。喜欢安静地写代码,同时也愿意从商业角度做一点点思考,努力做一些可能很微小,但对这个世界有那么点意义和价值的事。目前魔筷科技正专注于提供完整的移动电商解决方案。

杜欢

解密!编程语言林林种,为何还用JavaScript?

花名:风驰

邮箱:fengchi.dh@taobao.com

淘宝高级技术专家,专注Web产品设计、整体架构和可用性实施,热爱标准化。

庄婷婷

花名:紫溪

邮箱:sleep.ztt@gmail.com

阿里前端工程师,在前端开发方面积累了多年经验。闲暇时喜欢旅行、阅读,偶尔翻译点技术文章,不断探寻有趣的事。

章子鹏

花名:乔福

微博:@请强刷五次

一名普通的前端开发工程师,就职于淘宝用户体验部。以前的愿望是期望国内的IE6份额不断降低,现在力求利用丰富的Web技术构建优秀的用户体验的产品。在业余时间会做一些翻译,捣鼓前端技术、Linux和Shell等。目前在学习iOS和日语。

软件开发 编程语言 Web应用防火墙 WAF 前端开发

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《敏 捷 教 练:如何打造优秀的敏捷团队》—3.2 提问
下一篇:微服务进阶(三):Dubbo服务治理
相关文章