当前位置: 首页 > 科技观察

中国程序员能发明Node.js吗?

时间:2023-03-18 14:45:53 科技观察

今天想到了这样一个问题:像Node.js这样的创新并不是根本性的发明,而是结合了现有的技术:V8引擎、事件驱动、libuv等,为什么这样的创新没有首先出现在中国?国内的互联网和移动互联网这几年发展的很好,肯定遇到过Node.js要解决的问题。国内科技巨头应该也能实现。为什么?没出现?带着这个疑问,我翻看了一下Node.js的诞生史和它的作者RyanDahl的经历,看看能不能得到一些启发。RayanDahl1981年出生于美国加利福尼亚州,6岁时,妈妈给他买了一台AppleIIc电脑。那是1987年,我国内的很多同龄人应该还在玩泥巴吧?RyanDahl在加州大学圣地亚哥分校学习数学,后来到纽约罗彻斯特大学攻读博士学位,主修代数拓扑。(代数拓扑中常研究的结构)数学训练让Ryan具备了很强的抽象思维能力,但在读博士的第三年,写画画实在是太枯燥了。还不如编程,做个网站,然后就可以“炫耀”给别人看。于是他在七月份辍学,买了一张去南美智利的单程机票(为什么?)。没想到七月的时候正是南美洲的冬天,把他冻得够呛。租了房子后,他手头上什么都没有。身无分文的瑞恩,曾经的博士生,开始在智利教英语赚钱。(红色轮廓是智利)这时候,他遇到了一个叫埃里克的程序员,他正在用PHP为一家滑雪板公司做网站。Ryan想起自己在大学写过一个程序,问道:我也可以帮忙吗?于是他的这就是编程生涯的开始。你看,生活还是要更积极一些。2006年,RubyonRails开始流行,Ryan开始用它来开发网站。Ruby语法非常优雅,Rails开发网站速度很快,但运行速度很慢,不易扩展,于是Ryan开始研究这个问题,开始接触底层知识。莱恩在南美待了一年,最大的收获可能就是交到女朋友了。由于女友要回大学,他陪她去了德国,开始了自由职业,主要做Nginx模块开发。Ryan非常喜欢Nginx基于事件的服务器设计。也许他学的是数学。他认为这种编程模型更漂亮,也更容易理解。相反,传统的方式(无限循环接受套接字,通过阻塞方式读写套接字)让人感觉很奇怪。他仍然对Ruby感兴趣。在参加Ruby会议时,他遇到了一个叫ChrisNeukirchen的人。Chris开发了一个叫做Rack的东西,它对Web服务器的各种操作进行了高度抽象:一个叫做call的函数,它接受一个名为environment的参数,并返回一个包含三个值(status、headers、body)的数组。数学系出身的莱恩,非常喜欢这样美丽的抽象。他脑子里冒出一个想法:能不能把Rack的思想和Nginx的非阻塞IO结合起来,创造出新的东西来?Ryan尝试了几种编程语言来开发这样的系统,比如他最喜欢的语言Haskell,但他认为自己无法处理GHC(GlasgowHaskellCompiler),Lua是他最喜欢的语言,但是Lua有太多的类库以阻塞方式编写方式,使用起来很不舒服。2008年,基于V8JavaScript引擎的Chrome浏览器发布。出于好奇,Ryan开始研究V8。他发现V8的代码干净、快速并且非常吸引人。有一天,他恍然大悟:天哪!JavaScript是单线程和非阻塞的!而且JavaScript没有I/O阻塞类库!如果JavaScript、异步IO、HttpServer结合起来,这将是一件很酷的事情!Ryan非常兴奋并立即开始开发它。几个月后,Node.js诞生了!1987年,估计国内同行玩泥巴的多了。2.良好的教育背景。数学系博士生(虽然没有毕业),培养了他强大的抽象思维能力。3.跟随你的兴趣。如果你想读博退休,在中国没有多少人敢这样做。找工作、评职称、落户、招聘人才都需要学位……4.自由生活从美国直飞智利,这是什么作秀操作?为了女友,他从智利跑到德国。在他看来,也许这就是生活。国内程序员大多会走另一条路:在大厂找一份稳定的工作,被逼996,背房贷(不一定能背!),车子,孩子……5.典型的黑客是非-计算机专业的学生,??掌握了C、Lua、Haskell、C++、JavaScript等多种编程语言,从Web应用层开发跳到了Nginx等系统层软件开发,充分说明了他技术上非常强大,学习能力超强。6、研究新技术的好奇心,ChromeV8一出来就玩玩,原来是一片新天地!个人感觉Ryan是一个很自由的人,一直在按照自己的兴趣做事,完全没有生活的后顾之忧,哦,其实不准确的说,Ryan在的时候也是“饥寒交迫”南美洲。很羡慕这种自由,但是学不会,估计一般人也学不会吧!上帝将JavaScript扩展到服务器端的重任交给了Ryan,有一定的必然性,因为从他的经历来看,他一直在思考这个问题,在经过各种失败的尝试后,他一直在寻找合适的编程语言,然后一个偶然的机会,他遇到了ChromeV8。Ryan的同事BrockWhitten对他有这样的评价:Ryan是一个有魅力的程序员,拥有程序员中罕见的从不同角度看问题的能力。Ryan会“质疑”各种东西,数据库是怎么实现的?Parser是如何实现的,什么是WebServer。他总能提出不同的看待问题的方法。一个受过良好教育,可以随心所欲生活的程序员,再加上这种ThinkDifferent的能力,自然可以做出很大的创新。Node.js在国内的出现,可能就是因为缺乏这样的土壤!【本文为专栏作家“刘欣”原创稿件,转载请通过作者微信获取授权公众号coderising】点此查看作者更多好文