为什么Node.js使用C/C++编程语言编写?

10

很遗憾,JavaScript是我唯一有经验的编程语言。自然而然地,我的直觉就是想知道为什么你不使用JavaScript来编写编程语言(在这种情况下是Node)呢?

为什么选择C语言?您能获得哪些好处?


5
Node.js是用C++编写的。 C++和C是不同的语言,各有优缺点。 C语言最擅长获取最直接的硬件访问和最接近的控制——例如,Linux内核就是用C语言编写的。 C++则擅长协调数百个模块之间的连接;这使它非常适合类似Node这样的应用。 - Lee Daniel Crocker
8
Node其实就是Chrome的V8引擎,所以你实际上想问的是,为什么V8要用C++编写? - ndugger
因为你需要在某些基础虚拟机上运行JavaScript,它不能仅仅依靠自身运行。而且这个虚拟机是用C++编写的,因为它快速且成熟,你不想等待一个漫长的时间来加载页面,对吧? - 0xB00B
3个回答

16

C语言是一种低级语言,适用于系统编程——也就是构建操作系统、数据库引擎和其他需要高效完成特定任务(时间和空间)的代码。C语言“靠近裸金属”,可以将代码有效地编译成机器码和CPU指令。

你当然可以用比C更高级的语言编写编译器和中间件。虽然这样做可能具有开发速度优势,但它们几乎总是运行更慢并且消耗更多的内存。许多语言(例如Python、PHP、JavaScript等)由于这个原因而是用C(或C++)实现的。

如果你想在另一种语言中实现像Node这样的东西,最好选择另一种专为系统编程设计的语言,例如C++、C#、Rust、D等。


12
Node是使用C++编写的。 - Lee Daniel Crocker
1
维基页面 https://en.wikipedia.org/wiki/Node.js 实际上涉及到 C、C++ 和 JavaScript。但我已经改变了我的问题的标题! - Antonio Pavicevac-Ortiz
libuv是Node.js所著名的高性能异步网络的绝对核心,它是用纯C编写的。 - muusbolla
如果实现程序的代码没有经过优化或高效处理,那么程序就会变得更慢。我相信,实现C ++的代码是由专业团队开发提供的,比单个开发人员编写的C代码要更稳定和更快。内存的异常消耗通常是由内存泄漏引起的,在C代码中非常普遍且难以解决,而在C ++中可以完全避免。因此,除了针对特定硬件的特殊代码库之外,在C ++ 中编写代码更加方便。所有程序生命周期都将从中受益。 - Bemipefe

1

-4

Node.js是使用JavaScript语言创建的,可以在桌面上运行以创建应用程序。Node.js也是用C++编写的,因为当Web服务器需要访问内部系统功能(如网络)时,C++具有许多可直接与操作系统进行交互的特性,而JavaScript则没有!因此,它必须与C++一起工作以控制这些计算机功能。

参考客户端和服务器端架构示例。(这里的Mick是客户端)Mick的Mac/Windows需要访问托管在互联网某个服务器上的网站,该服务器基本上是一台计算机。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接