问:现在已经可以用javascript(nodejs)写服务端的代码,但如果是为了语言一致性的话,为什么没人去做过python在浏览器端的实现呢?

答:这个问题其实与Python没半毛钱关系,比如可以把最后一句改成为什么没人去做ruby在浏览器端的实现呢?还可以改成为什么没人去做java在浏览器端的实现呢?等等。

从历史的角度来看,JavaScript的发展一直与浏览器密不可分,最初由网景公司的Brendan Eich设计,叫LiveScript,后与Sun公司合作,改为JavaScript。后来Ecma国际以JavaScript为基础制定了ECMAScript标准。现在大家知道了制定标准的才是最牛B的了吧。

再后来微软的IE干掉了NetScape后,以为自己已经无敌于天下了,开始搞VBScript,JScript,但是大家看微软霸占着浏览器这个小清新非常的不爽,Firefox、Chrome、Safari等浏览器开始出现,Google的V8和Apple的WebKit等牛引擎和框架出来后,JavaScript在浏览器端越发如鱼得水,而且随着V8和Node.js的出现开始侵入服务器端。

说到微软的IE,这里还要插一段,刚刚看到@李松峰老师翻译了一篇叫做《Internet Explorer的创新》的文章,我们不得不说IE是一个划时代的产品,而且当年微软在互联网领域具备得天独厚的优势,Windows独霸天下、捆绑浏览器、MSN等,互联网领域似乎要延续微软在PC端的辉煌,一切那么顺理成章,但是2000年的微软市值5000多亿,已经是个巨无霸公司,公司政治和权利的影响取代了技术。比如MSN Explorer,当年我们这些菜鸟怎么也想不明白微软不好好升级IE,弄出这么个华而不实的东西干嘛;比如2000年比尔盖茨启动的互联网计划,由于Windows之父Jim Allchin的阻止而搁浅;比如迟迟不做搜索;比如Vista的推出用了5年还是个烂货......曾经有一个机会摆在微软面前,它没有珍惜,而世界也因此更加五彩斑斓......所有慵懒的大公司,颤抖吧!

好吧,言归正传,那为啥JavaScript可以写服务器端程序,Python等语言不能去搞前端呢?其实还是标准决定一切。

使用Node.js,开发者面对的是自己开发环境,你只要把自己面对的环境伺候好了就可以了,因为Node.js本身就是建立在标准之上(V8)的东西,而且,Node.js确实简化了服务器端的异步IO和事件驱动开发,这是它最大的意义。如果只是能在后端运行而毫无特性,估计这个技术的生命力不会长久。

但想让类似Python的语言在前端运行,你就得搞定所有浏览器和浏览器厂商。如果有个引擎能搞定Python语言解析,同时又得到各大浏览器厂商的支持,那这种可能性也不是没有。