Hegel2011的博客

读书 - 工作 - 生活 - 笔记

开发语言还真是一个问题

使用Node.js开发Express框架的的牛人TJ Holowaychuk宣布 退出使用Node.js。 这个效果有点类似于如果DHH宣布不再使用Ruby进行开发。

此牛希望开发分布式的系统,但受不了Node倾向于性能而忽略 使用的便利性(usability)和鲁棒性(robustness)。 而他使用Go语言开发的分布式系统,则坚固,表现的也更好,代码也更易维护。 他也提到了同步式的代码比异步式的还是容易测试及理解。

从我个人的经历而言,有一阵子仔细研究过Node,我的硕士毕业论文中Node是最重要的一个组成部分。 也开发了一个不错的HTTP分发系统。但是,最终我并没有采用Node在生产系统中。 原因在于,尽管Node的基于事件的并发模式很易于处理大并发的慢速请求, 但除非去做云计算级别的分发,不然Java的NIO已足够应付性能方面的需要。

而在Node的web开发方面,Node及Express提供的基础设施比Rails差的很远,开发效率和体验都是不能比的。 所以,看来看去在服务端并没有很适用Node.js的场景。 至少,在Java和Ruby可以作为选择的场合下,没有Node的发挥空间。

至于Go为什么适合分布式开发,则需要进一步了解。不过以前看见go编译输出的是a.out就很让人有使用的欲望。

Node的崛起很大程度上托V8引擎性能优异的福,在脚本语言中,Node的运行性能就是独一无二的。 但和编译型语言比起来,Node就没什么优势了。只是有一阵子大家都相信脚本语言天生可以比编译型开发的更有 效率些,所以万众瞩目于Node。很多受Ruby运行性能之苦的开发者,也转到了Node开发服务。随后, 移动引用的兴盛使得JSON成为一种标准的传输形式,也由此Node成为了很多接口服务的开发选择。

然而,对此我还是秉承我的观点,仅仅开发接口的话,Java的开发效率也不低,性能一般也不会成为瓶颈。 而Node的开发还是不如Java方便,人才和教育的基础二者差距就更大了。Javascript只有在浏览器中才是王者。 因为浏览器的单线程,以及等待事件发生,才是天生适合他的。而且,世上浏览器那么多,所有的浏览器都只认可 Javascript。 至于服务端,只有在特定的少数的场合, Node才具备突出的优势。

Ruby和Rails的优势是在于开发效率以及让人快乐,性能始终是不让人满意的一个环节。
Java的优势是大量的人才基础和教育基础,强大的性能和稳定性。也因为人才众多,所以才有足够的人力来打造像Spring这样的 开发工具。对很多语言来讲,如果像Java那样啰嗦,是很难得到足够多的产出的。
Javascript,还是在浏览器中发挥威力吧。

Included file 'twitter_sharing.html' not found in _includes directory