中国程序员发明不了Node.js?

开发 开发工具
今天想到了这么一个问题:Node.js这样的创新并不是基础性的发明,实际上组合利用了现有技术:V8引擎,事件驱动,libuv等。 为什么这样的创新,没有在中国率先出现呢?

 [[346506]]

今天想到了这么一个问题:Node.js这样的创新并不是基础性的发明,实际上组合利用了现有技术:V8引擎,事件驱动,libuv等。 为什么这样的创新,没有在中国率先出现呢?

这些年国内互联网和移动互联网的发展非常好,肯定也遇到了Node.js要解决的问题,国内的技术大牛应该也有能力把它实现,为什么就是没有出现呢?

带着这个问题,我扒了扒Node.js的诞生历史及其作者Ryan Dahl的经历,看看能不能得到一些启示。

Rayan Dahl 1981年出生于美国的加利福尼亚,在6岁时,他的妈妈就给他买了一个Apple IIc的电脑。这可是在1987年,国内的同龄人估计很多还在玩泥巴吧?

[[346507]] 

Ryan Dahl 大学在加州大学圣地亚戈分校读数学,后来进入纽约罗彻斯特大学读博士,专业是代数拓扑。

[[346508]] 

(代数拓扑常常研究的结构)

数学的训练给了Ryan强悍的抽象思考的能力, 可是在博士第三年的时候,他觉得研究方向和现实生活关联不大,整天坐在屋子里在纸上写写画画, 实在没意思,比不上编程,做一个网站,然后就能给别人“显摆”一下。

于是在7月份他退学了,买了一张单程票去了南美洲的智利(为啥?),没想到南美的7月份是冬天,把他冻得够呛,租了房子之后,手头就没啥钱了,饥寒交迫之下,前博士生Ryan开始在智利教英语赚钱。

 

(红色轮廓即为智利)

这时候他遇到了一个叫Eric程序员,正在给一个滑雪板公司用PHP做网站,Ryan想起大学时写过程序,就问道:我能不能也来帮忙? 于是他的编程生涯就此开始了, 你看,人生还是要主动一些。

2006年,Ruby on Rails开始流行,Ryan开始用它开发网站,Ruby语法非常优雅,Rails开发Web网站又非常快速, 但是运行起来却很慢,并且不容易扩展, 于是Ryan便开始研究这个问题,开始接触底层的知识。

[[346510]] 

Ryan在南美洲呆了一年, 最大的收获可能是交了女朋友。 由于女朋友要回到大学上学,他就陪着女朋友来到了德国,开始了自由职业者的生涯,主要做Nginx的模块开发。

[[346511]] 

Ryan很喜欢Nginx这样基于事件的服务器设计,也许是学数学的吧,他认为这样的编程模型更加漂亮,更容易理解。相反,传统的方式(一个无限循环来接受socket,通过阻塞的方式来读写socket)反而让它觉得很奇怪。

他依然对Ruby感兴趣, 参加Ruby会议的时候,遇到了一个叫做 Chris Neukirchen的家伙, Chris开发了一个叫Rack的东西,对Web服务器的各种操作做了一个高度的抽象:一个叫做call的函数,接受一个叫做enviroment的参数,返回一个包含三个值(status, headers, body)的数组。

[[346512]] 

数学系出身的Ryan很喜欢这样漂亮的抽象,他脑子中冒出一个想法:能不能把Rack的思想和Nginx的非阻塞IO给结合起来,搞出个新东西?

Ryan 尝试用了几种编程语言来开发这样的系统,比如他很中意的语言Haskell, 但是他觉得搞不定GHC(Glasgow Haskell Compiler),Lua是他比较中意的语言,但是Lua有太多用阻塞方式写的类库,用起来不爽。

2008年,基于V8 JavaScript引擎的Chrome浏览器就发布了,基于好奇,Ryan开始研究V8,他发现V8的代码整洁、快速、非常吸引人。有一天,他突然意识到:OH, My God! JavaScript不就是单线程,非阻塞的嘛!并且JavaScript没有I/O阻塞的类库!

如果把JavaScript,异步IO,Http Server的东西给组合起来,这将是一个非常酷的东西!

Ryan非常激动,立刻着手开发,几个月后,Node.js诞生了!

总结一下,Ryan的经历中有几个鲜明的特点:

1. 6岁玩电脑

这可是在1987年,国内的同龄人估计玩泥巴的比较多。

2. 良好的教育背景

数学系的博士生(虽然没毕业),培养了他强悍的抽象思维能力。

3. 追随兴趣,博士想退就退

在国内敢这么干的估计不多,我们需要学位来找工作,评职称,落户口,人才引进.....

4. 自由生活

直接从美国跑到智利,这是什么骚操作?

为了女朋友,又从智利跑到德国, 在他的脑海中,也许这才是生活吧。

国内程序员大多会走另外一条路:找个稳定的、大厂的工作,被迫996, 背上房贷(还不一定能背得上!),车子,孩子......

5. 典型的黑客

一个非计算机专业的学生,掌握了C, Lua, Haskell, C++, JavaScript等编程语言,并且从Web应用层开发跳跃到了Nginx这种系统层软件开发,充分说明他在技术上是非常厉害的,学习能力超强。

6. 好奇心

研究新技术,Chrome V8出来就把玩一番,结果玩出了新天地!

我个人感觉Ryan是一个非常自由的人,一直在追随兴趣做事情, 完全没有为生活发愁,哦,其实不准确,在南美的时候,Ryan也曾经“饥寒交迫”过。

我很羡慕这种自由,但是学不来,估计绝大多数人也学不来吧!

上帝把JavaScript拓展到服务器端这样的重任交给了Ryan,有一定的必然性,因为从他的经历看,他一直在思考这个问题,并且做了各种失败的尝试,他一直在寻找一个合适的编程语言,然后机缘巧合碰到了Chrome V8。

Ryan的同事Brock Whitten对他有这样的评价:

Ryan 是一个充满魅力的程序员,他有一种在程序员中很罕见的能力,可以从不同的角度来看待事物。Ryan会“质疑”各种各样的东西,数据库是怎么实现的?Parser是怎么实现的,Web Server是怎么回事。他总是能提出不同的方法来看待一个问题。

一个有着良好的教育背景,可以自由生活,追随兴趣的程序员,再加上这种Think Different的能力,自然可以做出伟大的创新。Node.js在国内出现,可能就是缺乏这样的土壤吧!

【本文为51CTO专栏作者“刘欣”的原创稿件,转载请通过作者微信公众号coderising获取授权】

戳这里,看该作者更多好文

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2013-11-01 09:34:56

Node.js技术

2015-03-10 10:59:18

Node.js开发指南基础介绍

2012-09-29 11:13:15

Node.JS前端开发Node.js打包

2014-02-14 10:48:32

Visual StudNode.js

2011-09-08 13:46:14

node.js

2011-09-02 14:47:48

Node

2011-11-01 10:30:36

Node.js

2011-09-09 14:23:13

Node.js

2013-05-17 09:41:02

Node.js云应用开发IaaS

2012-10-24 14:56:30

IBMdw

2011-11-10 08:55:00

Node.js

2021-12-25 22:29:57

Node.js 微任务处理事件循环

2015-07-15 10:32:44

Node.js命令行程序

2020-05-29 15:33:28

Node.js框架JavaScript

2019-02-20 11:14:08

程序员技能沟通

2012-02-03 09:25:39

Node.js

2015-06-23 15:27:53

HproseNode.js

2014-03-31 10:49:47

IT技术周刊

2020-10-26 08:34:13

Node.jsCORS前端

2021-02-01 15:42:45

Node.jsSQL应用程序
点赞
收藏

51CTO技术栈公众号