编程语言那么多,为什么 Google 偏爱 JS?

我从事软件开发的相关工作已经有15年了。目前的工作主要集中于Web和移动应用方面。在这么多年里,我对JavaScript的态度可能比较能代表一大群程序员的看法:从一开始对JS的不屑一顾到最后惊奇它的表现和潜力。

曾经的JavaScript像玩具一样

在 2000年那会儿,我也从事过一段web应用开发。开发平台是Windows,主要使用Asp。那个时候的JavaScript主要用途是检验页面输入数 据是否正确。错误的时候,会弹出个警告窗口。当时整个Web开发、应用环境,实际上都是十分简陋的。Web开发者看待JavaScript估计就如同玩具 一般。因为它能做的真的是十分有限。如果你能找到2000年时候的有关JS的IT图书,内容多半大同小异,充斥着告诉你怎么用JS做个什么跑马灯,怎么制 造烦死人的弹窗,如此这般。这些内容也进一步抑制了大家对js的期望。

后来,我转向C/C++,因为“真正的程序员使用C++”。这一转身就是很多年,我对JS的印象,也就止于那点功用了。

这 几年,因为种种变化,我又转回来了。这个时候再回顾Web开发,已经可以用天翻地覆来形容。相关的概念层出不穷,发展出的各种技术、工具,五花八门,让人 眼花缭乱。而且更要命的是,这些知识除了基础的几类,大部分都十分的不稳定,并且在这种不稳定的情况下迅速发展,以疯狂的速度淘汰更新。今天还在用的工 具,可能明天就有更新、更好的了。

为什么会这样?因为社会需要的热点在这里:需求推动。这个社会的生活、生产,逐渐转移到了网站上、移动端,这就是这些领域快速发展进步的主因。

这个时候再回头看当年的玩具语言:JavaScript,也早已今非昔比。

它已经成长为网络时代不可或缺的前端顶梁柱。现在已经不可想象没有JS的网站是否还能正常运行。不仅如此,它的触角居然还深入到了后端服务,Node.js方兴未艾。一些新一代的产品,如MongoDB,甚至内置了JS语言支持,作为应用交互的工具。

这是很多人都无法想象到的情景,包括我在内。对此,我不得不回过头看一下,思考JavaScript为什么会拥有现在的地位。

冥冥之中注定的语言

JavaScript的总体设计有亮点,但问题也很多。它是作者在10天内设计出来的。因为时间仓促,很多细节未及推敲、深思熟虑就推上了市场,以至于充斥了漏洞、糟粕。Douglas Crockford在《JavaScript语言精粹》(英文名《JavaScript:The Good Parts》)里面提到:“Javascript中糟粕的比重超出了预期。”(注:Douglas Crockford,JavaScript开发社区最知名的权威,是JSON、JSLint、JSMin和ADSafe之父,著有《JavaScript: The Good Parts》。)

连Brendan Eich(JavaScript的创造者)自己都说:"与 其说我爱它,不如说我恨它。它是C语言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:'它的优秀之处并非原创,它的原创之处并不优 秀。'(the part that is good is not original, and the part that is original is not good.)"

但是,似乎是在冥冥之中注定,JavaScript在一开始就抓到了未来编程语言的方向:函数式编程。

“JavaScript设计的最出色的就是它的函数的实现。它近乎接近于完美。...... 函数在javascript中是顶级对象,它是第一个成为主流的Lambada语言,它是披着C外衣的Lisp。”

—— Douglas Crockford

读过《黑客与画家:硅谷创业之父Paul Graham文集》(主要介绍黑客即优秀程序员的爱好和动机,讨论黑客成长、黑客对世界的贡献以及编程语言和黑客工作方法等话题)的人,都会记得作者的预言:Lisp才是语言的终极趋向。(注:LISP源自列表处理LISt Processing的缩写,由来自麻省理工学院的人工智能研究先驱John McCarthy在1958年基于λ演算所创造,是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用,也是第一个函数式程序设计语言。)

函数式编程的流行之势

函 数式编程并不是新发明,它的历史甚至比一些主流语言还早。因为性能和实现等问题,一直饱受冷落。而如今,计算机的硬件性能大大提高,改变了很多事物。原本 不够经济的,变得可行;原本不够好的,在新条件下变得不错。鉴于函数式编程的优良特性和强大能力,它的流行其实并不意外。“过程化->面向对象->函数式”的应用开发范型发展趋势是可以预见的。

这 些年,脚本语言大行其道,使用Python/Ruby/PHP代替原本静态语言开发的应用比比皆是,传统的C/C++应用开始逐渐缩减到桌面应用、高性能 服务器应用、驱动、系统接口等领域。因为大部分的应用的性能已经不是问题,CPU相对过剩,I/O、网速才是瓶颈,因为人们总是更重视开发效率。而 JavaScript因为一开始就有这样的设计能力,把握住了技术的先机,紧随了这股浪潮。

当然,运气也不可或缺。世界上的编程语言至少也有个几百种。一种语言想获得认可并得到流行,光有好的技术设计是不够的,它还需要位置乃至契机。

编程语言要找到适合自己应用的领域,深深的扎下根来,并以此为基地,向外伸展。这个时间,有时候需要20年以上。比如PHP专注于Web开发,C对于系统开发不可缺少,Python在科学计算、网络编程有诸多应用。

在2004年,JavaScript就得到了一次契机:Google推出了使用Ajax技术的Gmail邮箱,那堪比桌面的无刷体验,引发了业界轰动和模仿浪潮。而Ajax的操作核心就是JavaScript。此后,JS在浏览器中的地位变得十分稳固,已经成了事实标准。在2009年,基于Google强大V8 JS引擎的Node.js出现了,它意味着JS向其它领域开始进军,发挥它的语言威力。微软当年也宣称在服务器端可以内置支持JavaScript,不过这完全不可比。

网络时代的需要,JavaScript捷足先登。浏览器一开始就绑定了JS脚本技术,这让它取得先发优势。当年的浏览器大战后,微软的浏览器占据统治地位,IE里面是可以编写vbscript的,但微软在网络时代的停滞不前,让他丢失了很多机会。

由 于网络带来的低成本信息交互以及更低的开发、部署成本,越来越多的产品基于浏览器做为界面。JS在应用开发上当仁不让。业界出于需求,制定了几版相关的技 术标准,比如HTML、CSS、JS便都有了自己的位置和开发标准规范,它们相互紧密协作,融为一体。Web应用开始侵蚀以往的桌面应用。

时间证明了JavaScript的价值,它并没有被淹没在历史的发展里。只要应用领域有足够的渴求,原本有很多不足的东西也会获得强大的推动力,把它改造的更好。

Brendan Eich在今年年5月份做了一个PPT,回顾了JS语言的创造过程和这20年的发展、前景。(观看地址:http://brendaneich.github.io/ModernWeb.tw-2015/

那么我也借用他的话来结尾吧:

My advice:always bet on JS.

文章转载自 开源中国社区[https://www.oschina.net]

时间: 2024-09-08 12:17:17

编程语言那么多,为什么 Google 偏爱 JS?的相关文章

google对 js调用的警告

您好!在审核您的网站时,我们发现您还是没有将我们的广告代码直接置入内容网页的源代码中.您现在是透过.js 档案将我们的代码直入 IFRAME.请将我们的广告代码直接置入内容网页的源代码中.当您完成了适当的改动之后,请回复此电子邮件,以便我们重新审核您的网站.这样我们就能更新您的帐户记录,表明您符合我们的计划政策Google AdSense 小组敬上 所以请大家注意代码调用规则!·

js分享QQ空间,新浪微博,百度,google,人人网,开心网代码

js分享QQ空间,新浪微博,百度,google,人人网,开心网代码 /* *不要下载这个js文件到你的主机里,因为风吟会不定期更新. *存放在Google code 托管是很稳定的,不用担心哪天会被和谐. *我们都应该相信Google.. */ /*  * Share.js  * Copyright(c) 2009 FengYin  * Date: 2010年1月7日 13:16:17  * Blog: http://fengyin.name/ http://www.111cn.net  * U

如何屏蔽博客园中的Google广告

博客园中每篇文章的评论窗口最下面就带了一个Google的广告,当然我这个博客也不例外.不过这些广告我看着就不爽,于是就想办法把该死的广告去掉.使用Mathon2打开博客园中的任何一篇文章,选定Google广告和周围区域,右键"查看选定区域代码"就可以看到原来是Google的JS文件在我的页面中生成了一个Iframe,具体代码为: <SCRIPT type=text/javascript><!--google_ad_client = "pub-42105692

Amazon EC2和Google App Engine,谁是最后的赢家

Amazon EC2和Google App Engine,两大服务平台,谁能更胜一筹,我打算从三个角度来对比这两大云计算平台:技术,业务和未来发展趋势,本文是技术方面的对比,ok,准备好咖啡,我们开始吧! 如果按平台类型来分,大家可能已经知道Amazon EC2属于IaaS(基础设施即服务),Google App Engine属于PaaS(平台即服务).不过,如果Amazon EC2给你一个安装了操作系统的平台,你就可以自己安装应用程序,并且使用AMI(Amazon Machine Image)

做谷歌插件时,为什么JS代码不执行

问题描述 做谷歌插件时,为什么JS代码不执行 json文件中的内容是: "content_scripts": [{ "all_frames": true, "matches": ["http://www.google.com/*"], "js": ["popup.js"] }] 解决方案 chrome高版本不支持内联script块,要放到js文件里面导入..这个你搞对了没有. 解决方案二

Go 再次成为 TIOBE 年度编程语言,可喜可贺

TIOBE 2017 年 1 月编程语言排行榜发布,Google Go 再次成为 TIOBE 年度编程语言.Go 语言在一年中上升了2.16%,和第二名和第三名的 Dart(+ 0.95%)和 Perl(+ 0.91%)拉开了较大的差距. 2016年,其它有前途的语言发生了什么? Dart 从26位跃升到17位,Rust 保持了前50位(从47位到41位),Hack 和 Julia 非常接近50位(分别从61位到51位和73位到52位).此外还有两种语言在 TIOBE 索引上首次亮相:Cryst

在 Ubuntu 14.04/15.04 上配置 Node JS v4.0.0

大家好,Node.JS 4.0 发布了,这个流行的服务器端 JS 平台合并了 Node.js 和 io.js 的代码,4.0 版就是这两个项目结合的产物--现在合并为一个代码库.这次最主要的变化是 Node.js 封装了4.5 版本的 Google V8 JS 引擎,与当前的 Chrome 所带的一致.所以,紧跟 V8 的发布可以让 Node.js 运行的更快.更安全,同时更好的利用 ES6 的很多语言特性. Node JS Node.js 4.0 发布的主要目标是为 io.js 用户提供一个简

JS 巧妙获取剪贴板数据 Excel数据的粘贴_javascript技巧

另外的方法就是用flash了,它可以避开浏览器的安全限制,但是system类中只有set的方法,另外的clipboard类中倒是能访问到,但是似乎需要flash10的版本支持. 网上找了一圈,没啥发现.终于想到去看看google sheet是怎么干的. 发现google sheet实现了excel的纯文本的多数据格粘贴,没有安全限制的需要,没有使用flash.可能很多人都知道这种方法了,反正我一开始很惊讶的,但是无奈,google的js文件是处理过的,看起来太累了.然后又去找ZOHO sheet

天极网:Google启动2005年编程大赛

        Google公司近日宣布2005年全球编程大赛"Google Code Jam 2005"正式启动.Google的全球编程大赛每年都举行.电脑爱好者可以通过网上报名,选择自己喜欢的编程语言,解决一系列Google提出的挑战性问题,用他们的编程技术产生编码解决方案.报名地址是:www.google.com/codejam05.      Google的工程副总裁Alan Eustace表示:"Google编程大赛旨在聚集全球顶尖的计算机人才,并展示他们在解决问题