您现在的位置:圣剑网 >> 文章频道 >> 其他技术 >> 正文
编程语言那么多,为什么Google独爱JS?
新闻来源:文章频道发布时间:2015-09-29 00:58我有话说(0)
  我从事软件开发的相关工作已经有 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 年基于λ演算所创造,是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用,也是第一个函数式程序设计语言。)


硅谷创业之父 Paul Graham



  函数式编程的流行之势

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

  这些年,脚本语言大行其道,使用 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 向其它领域开始进军,发挥它的语言威力。微软当年也宣称在服务器端可以内置支持 jscript,不过这完全不可比。

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


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

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

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

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


网友评论

关于圣剑 - 广告服务 - 招聘信息 - 友情连接 - 保护隐私权 - 意见反馈 - 帮助中心 - 联系我们

Copyright © 2016 Sjian.Net Inc. All Rights Reserved.大千网络科技有限公司 版权所有

不良信息举报中心 陕ICP备10005927号 陕公网安备61010402000003号