找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 5123|回复: 0

原创:为什么是javascript?

[复制链接]
 楼主| 发表于 2015-9-14 14:45:15 | 显示全部楼层 |阅读模式
我从事软件开发的相关工作,已经有15年了。目前的工作,主要集中于Web和移动应用方面。
在这么多年里面,我对javascript的态度可能会代表一大群程序员的看法:从一开始对js的不屑
一顾到最后惊奇它的表现和潜力。

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


在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中
糟粕的比重超出了预期。”连Brendan Eich自己都说:"与其说我爱Javascript,不如说我恨它。它是C语
言和Self语言一夜情的产物。十八世纪英国文学家约翰逊博士说得好:'它的优秀之处并非原创,它的原创
之处并不优秀。'(the part that is good is not original, and the part that is original is not good.)"

但是,似乎是在冥冥之中注定,Javascript在一开始就抓到了未来编程语言的方向:函数式编程。Crockford
大叔说:”Javascript设计的最出色的就是它的函数的实现。它近乎接近于完美。...... 函数在javascript中是
顶级对象,它是第一个成为主流的Lambada语言,它是披着C外衣的Lisp。”读过那本《黑客与画家》的人,
都会记得作者的预言:Lisp才是语言的终极趋向。

这几年,函数式编程有流行的趋势。函数式编程并不是新发明,它的历史甚至比一些主流语言还早。因为性
能和实现等问题,一直饱受冷落。而如今,计算机的硬件性能大大提高,改变了很多事物。原本不够经济的,
变得可行;原本不够好的,在新条件下变得不错。鉴于函数式编程的优良特性和强大能力,它的流行其实并不
意外。过程化->面向对象->函数式,这个应用开发范型发展趋势是可以预见的。这些年,脚本语言大行其道,
使用Python/Ruby/PHP代替原本静态语言开发的应用比比皆是,传统的C/C++应用开始逐渐缩减到桌面应用、
高性能服务器应用、驱动、系统接口等领域。

因为大部分的应用的性能已经不是问题,CPU相对过剩,I/O、网速才是瓶颈。人们更重视开发效率。Javascript
因为一开始就有这样的设计能力,把握住了技术的先机,紧随了这股浪潮。

运气也不可或缺。搞技术的会知道,世界上的编程语言至少也有个几百种。一种语言想获得认可并得到流行,光
有好的技术设计是不够的,它还需要位置乃至契机。它要找到适合自己应用的领域,深深的扎下根来,并以此为
基地,向外伸展。这个时间,有时候需要20年以上。比如PHP专注于Web开发,C对于系统开发不可缺少,因为
接口都是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创造者的话结尾 - My advice: always bet on JS.


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?用户注册

×
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-21 16:56 , Processed in 0.016396 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表