JavaScript 如何打败众语言,成为 Node 的实现语言?

栏目: IT资讯 · 发布时间: 6年前

内容简介:Node.js 是一种将 JS 放在服务器端实现的平台,而为什么要把js放到服务器端实现,JS 最初设计是在浏览器端解释执行,后来为什么搞Node.js 把他放在服务器端执行呢? 关于这个问题,近日有网友解释道: Node.js 的...

Node.js 是一种将 JS 放在服务器端实现的平台,而为什么要把js放到服务器端实现,JS 最初设计是在浏览器端解释执行,后来为什么搞Node.js 把他放在服务器端执行呢?

关于这个问题,近日有网友解释道:

Node.js 的作者 Ryan Dahl 是一名资深的 C/C++ 程序员,在创造出 Node 之前,他的主要工作都是围绕高性能 Web 服务器进行的。经历过一些尝试和失败之后,他找到了设计高性能,Web 服务器的几个要点:事件驱动、非阻塞I/O

Ryan Dahl 最初的目标是写一个基于事件驱动、非阻塞 I/O的 Web 服务器,以达到更高的性能,提供 Apache 等服务器之外的选择。他提到,大多数人不设计一种更简单和更有效率的程序的主要原因是他们用到了阻塞 I/O 的库。写作 Node 的时候,Ryan Dahl 曾经评估过 C、 Lua 、Haskell、Ruby 等语言作为备选实现,结论为:

  • C 的开发门槛高,可以预见不会有太多的开发者能将它用于日常的业务开发,所以舍弃它;

  • Ryan Dahl 觉得自己还不足够玩转Haskell,所以舍弃它;

  • Lua 自身已经含有很多阻塞 I/O 库,为其构建非阻塞 I/O 库也不能改变人们继续使用阻塞 I/O 库的习惯,所以也舍弃它;

  • Ruby 的虚拟机由于性能不好而落选。

相比之下,JavaScript 比 C 的开发门槛要低,比Lua的历史包袱要少。尽管服务器端 JavaScript 存在已经很多年了,但是后端部分一直没有市场,可以说历史包袱为零,为其导入非阻塞 I/O 库没有额外阻力。

另外,JavaScript 在浏览器中有广泛的事件驱动方面的应用,暗合 Ryan Dahl 喜好基于事件驱动的需求。当时,第二次浏览器大战也渐渐分出高下,Chrome 浏览器的 JavaScript 引擎 V8 摘得性能第一的桂冠,而且其基于新 BSD 许可证发布,自然受到 Ryan Dahl 的欢迎。考虑到高性能、符合事件驱动、没有历史包袱这3个主要原因,JavaScript 成为了 Node 的实现语言。

内容摘自知乎,作者马小秋。


【声明】文章转载自:开源中国社区 [http://www.oschina.net]


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

无线:网络文化中激进的经验主义

无线:网络文化中激进的经验主义

[英] 阿德里安·麦肯齐 / 张帆 / 上海译文出版社 / 2018-9

本书研究了无线是如何成为当代人类经验的主角的。从路由器、智能电话、电子书、城市到在线工作、服务协议、玩具以及国家等各个方面,人们已经感觉到了无线技术所引发的变革。本书作者援引一个世纪之前的哲学技术来分析当代最前沿的后网络时代的人类状况。基于威廉•詹姆斯的实用主义哲学相关的彻底经验主义,作者提出了把失序的无线网络世界与人们的感知匹配起来的新方式。一起来看看 《无线:网络文化中激进的经验主义》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具