是出于性能原因吗?与编译语言相比,大多数解释语言都有点慢,但我认为由于Node.js,CoffeeScript(JavaScript)中的差异几乎可以忽略不计.
从开发人员的角度来看,我认为使用高级语言编写一个编译器要容易得多.不幸的是,大多数编译器都是用C/C++编写的.是仅仅因为遗留代码?
回复评论:
> Bootstrapping只是一种说明这种语言足以编写一个编译器的方法.它不应该是我们选择语言来实现编译器的主要原因.
>我同意下面给出的猜测,“大多数编译器开发人员会回答,因为大多数编译器相关工具(bison,yacc)都会发出C代码”.但是,GCC和Clang都没有使用生成的解析器,他们自己实现了一个.这个前端流程独立于目标架构,不应该是C/C++的优势.
>或多或少的共识是,绩效是一个关键因素.实际上,即使对于GCC和Clang来说,构建合理大小的C项目(Linux内核)也需要花费大量时间.是因为前端还是后端.我必须承认,我在编译器的后端方面没有太多经验,因为我们完成了使用生成的LLVM代码的编译器课程.
I am exposed to C because of embedded system programming, and I think
it’s one wonderful language in this field.
是.它比Java更好.
However, why is it used to write compilers?
如果不向开发人员询问,这个问题就无法回答.我怀疑他们中的大多数会告诉你普通的编译器编写软件(yacc,flex,bison等)会产生C代码.
If the reason for gcc is that there aren’t many good languages,
there’s no excuse for clang.
GCC不是编程语言,也不是Clang.它们都是C编程语言的实现.
Is it for performance reasons?
不要将实现与规范混淆.速度是编译器和计算机引入的属性,而不是编程语言. GCC碰巧产生了相当高效的机器代码,这可能会影响开发人员使用C作为他们的主要编程语言……但是在十年的时间里,它可能是node.js比GCC产生更高效的机器代码.别忘了,StackOverflow是永远的.
*可以,但很可能不会.有关详细信息,请参阅下面的Ira Baxters评论.
Mostly interpreted languages are a bit slower compared with compiled
languages, but I guess the difference is almost negligible in
CoffeeScript (JavaScript), because of Node.js.
同样,解释或编译不是语言的选择,而是语言的实现.例如,GCC和Clang选择将C编译为机器代码. Ch和CINT是两个解释器,它们将C代码直接转换为行为,而不是机器代码. Java曾经主要使用解释进行翻译,但现在主要编译成JVM字节码. Javascript似乎也在逐步走向主流编译.谁知道?也许你会看到十年后主要用Javascript编写的编译器……
From the perspective of developers, I suppose it’s much easier to
write one compiler using high level languages.
所有这些编程语言在技术上都是高级的.它们主要是用抽象机器来定义的;他们当然不是低级别的.
Unfortunately, most of compilers out there are written in C/C++.
我不认为C用于编写软件是不幸的;这不是一个糟糕的编程语言.
Is it just because of legacy code?
我认为遗留代码可能会影响程序员的决定.最后,正如我所说,你必须问开发者.他们可能只是决定使用C或C,因为C或C是他们最喜欢的编程语言…为什么你会说英语?
相关文章
- 为什么这个C代码与一些编译器编译而不是其他编译器?
- V8引擎将JavaScript编译为机器代码.那么,为什么node.js不比C快?
- c++ 为什么这个代码用gcc编译而不是用clang编译
- c# - 为什么.net使用JIT编译器,而不是在目标机器上编译一次代码?
- 如何将CoffeeScript AST编译为CoffeeScript而不是JavaScript?
- javascript - 如何使用Node.js自动编译.coffeescript?
- 什么是`using namespace std;`,为什么我需要用最近的C编译器编译程序?
- javascript - 使用WebSharper编译器编写Node.js应用程序
转载注明原文:为什么编译器是用C/C++编写的,而不是使用CoffeeScript(JavaScript,Node JS)? - 代码日志