NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

Node 之父 Ryan Dahl:我不想被定义

  • 2017-09-05
  • 本文字数:2387 字

    阅读完需:约 8 分钟

被称为 Node 之父的 Ryan Dahl 在 2012 年离开了 Node 项目,后来加入 Google 的 Brain 团队,从事深度学习方面的研究,主要专注在图像的着色和超解像技术上。拥有深厚数学功底的 Ryan 经历了从 Web 开发到深度学习的跨越,还主导了多个开源项目,如 HTTP 解析器、 libuv 等,可以说是一个技术多面手。他不喜欢被人定义成某个领域的专家。MTJ(Mapping The Journey)网站对 Ryan 进行了一次深度访谈,他在访谈中提及了他的成长经历、Node 的开发始末、个人的职业变迁以及对深度学习和人工智能的看法。

漫漫求学路

Ryan 在圣地亚哥长大,在他六岁的时候,家里就购买了一台 Apple IIc 电脑,这对他后来走上技术之路产生了一定影响。在念完圣地亚哥社区大学之后,Ryan 到加利福尼亚大学圣迭戈分校继续攻读数学硕士学位。硕士毕业之后又到罗彻斯特大学继续攻读数学博士学位,在这期间他学习了代数拓扑学。数学曾经让他着迷,他觉得数学是一门非常美妙的学科。不过有一天,他意识到数学并不能被完美地应用到现实生活当中,他也不想余生就做一个数学家,于是他就中途退出博士学位计划,跑到南美洲呆了一年。他在那里找到了一份 Web 开发工作,开始了他的职业生涯。

Node 的诞生

在离开南美洲后,Ryan 和他的女朋友去了德国。因为 Ryan 的女朋友是德国人,她要回到大学继续深造。在那里,有个叫 Chris Neukirchen 的人开发了一个叫作 Rack 的 Web 服务器,这个服务器拥有非常简单的接口——接收请求,返回响应。与此同时,在从事自由职业的过程中,Ryan 接触到了 Nginx 的一些模块,他发现 Nginx 的很多东西都是异步的。于是他想,如果把 Rack 和 Nginx 的非阻塞 IO 结合起来,那会变成一个怎样的东西呢?

2008 年 12 月,Google 发布了 V8 引擎,这为 Node 的诞生奠定了坚实的基础。Ryan 开始把玩 V8 引擎,它既有趣又简洁,而且运行速度很快,Ryan 突然想到:JavaScript 本身就是单线程的,而且浏览器发起的 AJAX 请求就是非阻塞的。如果将 JavaScript 和异步 IO 以及一个简单的 HTTP 服务器集合在一起,就会变成一个很酷的东西。就这样,在接下来的四年,Ryan 开发出了如今被广泛使用的 Node。

Node 不是万能的

虽然 Ryan 已经离开 Node 项目很多年了,但当年开发和布道 Node 的经历似乎还历历在目。Ryan 四处发表演讲,试图说服人们相信阻塞式 IO 是错误的方式,如果使用非阻塞的方式来处理所有的事情,那么就可以解决很多难点。比如,可以完全把线程忘掉,在单个进程里处理所有的异步请求。那个时候,Ryan 相信这就是一切,直到 Go 语言的出现。其实 Go 语言早在 2009 年就发布了,Ryan 在 2012 年才注意到它。Go 语言的运行时适当地使用了绿色线程(即用户线程),在运行时和操作系统之间所有的 IO 操作都是非阻塞的,但是它提供给用户的接口却是阻塞式的。在 Ryan 看来,这是一种更好的编程模型。为什么这么说呢?假设你的应用程序要做两件事情,分别是 A 和 B。你发起请求 A,等待响应,出错。发起请求 B,等待响应,出错。Go 语言的阻塞模型可以非常容易地处理这些异常,而换到了 Node 里,要处理异常就要跳到另一个函数里去,事情就会变得复杂。

Node 的非阻塞模型没有了多线程,但却多出了“回调地狱”问题。Ryan 认为 Node 并不适合用来开发大规模的服务端应用,相比之下,Go 语言会是更好的选择。而 Node 能够真正一展拳脚的地方是客户端。

低调

在加入 Joyent 成为全职的 Node 开发人员之后,Ryan 也随之成为更加重量级的人物。参加各种大会,被粉丝要求合影拍照,随便写点东西都会有很多人响应。但 Ryan 并不喜欢这种状态,他说:

我是一个程序员,我想写代码,我想无拘无束地表达我的想法。我并不喜欢这种状态……

离开 Node 项目

在 Node 如日中天的时候,Ryan 离开了项目。首先,他当时已经在这个项目上开发了四年时间,已经实现了他的预期目标。他原先的想法是把 Node 做成简单紧凑的小型化核心,让其他人基于这个核心开发出更多的模块。后来他们不断增加新模块,涵盖了网络协议到文件系统的访问,甚至还把 Node 移植到了 Windows 平台上。随着代码量的膨胀,开始出现大量的 bug,不过在那个时候已经有很多人可以修复这些 bug,无需 Ryan 操心了。在 Ryan 看来,如果继续留在这个项目里,无非就是修修 bug。而且随着 Go 语言的发展,他发现 Node 并不适合用来构建服务器端应用,再加上他不喜欢头上的“光环”,所以决定离开这个项目。

新的起点

在离开 Joyent 和 Node 项目之后,Ryan 去了纽约,开始开发属于自己的项目。他做了一些项目,但都不算太成功,后来他接触到了卷积神经网络和图像分类技术,对机器学习产生了兴趣。两年前,Google 发布了 TensorFlow,同时启动了 Google Brain Residency 计划(为期一年的深度学习研究,有机会与 Brain 团队的人一起工作),Ryan 加入了这个计划,并最终成功成为 Brain 团队的一员。Ryan 的研究方向是图像着色和超解像技术。

对人工智能的看法

Ryan 认为,目前的机器学习系统还很简单,离真正的人工智能还差得很远。但是技术在发展,硬件也在发展,人类正在为人工智能的发展奠定坚实的基础。在未来的 20 年,机器学习技术将被广泛地应用在各个领域,人类一定能够从中获益。

不想被定义

Ryan 从做 Web 开发开始,转而进入机器学习领域,这两个领域看起来相差了十万八千里,但因为 Ryan 拥有牢固的数学背景,所以这种转变对他而言似乎也是一件很自然的事情。不过他不想被定义成某个领域的专家,他说:

人们喜欢把人和他所在的领域联系起来,但我不喜欢那样。我既不想被认为是一个 JavaScript 专家,也不想被认为是一个机器学习专家。探索无限的可能性是一件有趣的事情。创造前所未有的、对人类有益的事物会让人激动不已。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-09-05 19:007527
用户头像

发布了 322 篇内容, 共 134.4 次阅读, 收获喜欢 144 次。

关注

评论

发布
暂无评论
发现更多内容

重回铁王座!时隔5年!Quill 2.0 终于发布啦🎉

Kagol

前端 富文本编辑器

代码评审-findBugs

追随月光的战士

代码质量 githook findbugs

鸿蒙HarmonyOS实战-ArkUI组件(TextInput/TextArea)

蜀道山

鸿蒙 HarmonyOS 鸿蒙开发 构架 ArKUI 3.0

遥控车模的电机控制器

智趣匠

控制 驱动 无刷电机

Milvus 在哈啰的应用与落地

Zilliz

Milvus Zilliz 向量数据库 哈啰

甘特图是什么意思?详细的甘特图制作教程来了,项目管理必备!

彭宏豪95

项目管理 甘特图 在线白板 办公软件 绘图软件

Penpad获Gate Labs以及Scroll联创Sandy的投资

石头财经

Dockerfile创建镜像异常问题解决

百度搜索:蓝易云

云计算 Linux 运维 Dockerfile 云服务器

清华发布最新全球大模型评测:智谱GLM-4、文心一言直追GPT-4,Llama 3表现不俗

Geek_2d6073

Linux设备驱动系列(四)——设备号

Linux内核拾遗

linux开发 Linux内核 设备驱动

鸿蒙HarmonyOS实战-ArkUI组件(CustomDialog)

蜀道山

鸿蒙 HarmonyOS 组件 鸿蒙开发 ArKUI 3.0

让每一份算力都值得:京东广告统一检索平台实践

京东零售技术

人工智能 算法 广告 算力 企业号 4 月 PK 榜

PHP通过Redis解决并发请求的操作问题

百度搜索:蓝易云

php redis 云计算 Linux 云服务器

凭证管理揭秘:Cookie-Session 与 JWT 方案的对决

Phoenix

安全架构 会话管理

区块链DApp开发:打造安全、透明、高效的去中心化应用

西安链酷科技

dapp开发 链游开发dapp开发

百度安全多篇议题入选Blackhat Asia以硬技术发现“芯”问题

百度安全

后端的克星,前端的福音 -快捷提供数据库的REST数据访问接口

zhumingwu

Penpad获Gate Labs以及Scroll联创Sandy的投资

长安区块链

Gate Labs和Scroll联创Sandy投资了Penpad,实属行业幸事

EOSdreamer111

《软件架构设计:大型网站技术架构与业务架构融合之道》PDF

程序员李木子

企业数字化转型,人才是关键。华为政企咨询如何赋能客户高效培养数字化人才?

平平无奇爱好科技

解决Apache Tomcat “Request header is too large“ 异常 ‍

百度搜索:蓝易云

Java Apache tomcat Linux Web

php报错:Malformed UTF-8 characters, possibly incorrectly encoded

百度搜索:蓝易云

php 云计算 Linux 云服务器

百度智能云千帆 ModelBuilder 技术实践系列:通过 SDK 快速构建并发布垂域模型

Baidu AICLOUD

sdk 一站式研发平台 千帆大模型平台 AI 原生 #大模型

一次性讲明白,百度百舸如何搞定一个可以支持多芯混合训练的 AI 集群

Baidu AICLOUD

大模型训练 AI加速 多芯混合训练

Gate Labs和Scroll联创Sandy投资了Penpad,实属行业幸事

股市老人

除了Pura70系列,华为最近还有这件事值得关注!

平平无奇爱好科技

扣非净利同比大增1722.92%,歌尔股份发布2024年一季度财报

财见

联想用万全智算,画出中国AI的山脊

脑极体

AI

OSPF的基本概念

百度搜索:蓝易云

云计算 Linux 运维 OSPF 云服务器

DApp商城开发:构建去中心化电商新生态

西安链酷科技

区块链商城开发

Node之父Ryan Dahl:我不想被定义_语言 & 开发_薛命灯_InfoQ精选文章