- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
目前我正在考虑是否重写我用 C++ 维护的编程语言解释器。解释器目前是用 C 语言实现的。
但我想知道,primary 实现——因为,当然,人们已经使用不同于原作者使用的语言制作了许多解释器的版本——任何流行的 目前使用的编程语言解释器是用 C++ 编写的?
如果没有,是否有充分的理由不用 C++ 编写解释器?我的理解是,如果 C++ 代码编写得当,那么它的可移植性非常好,并且可能编译后运行的速度与执行相同操作的已编译 C 代码一样快。
最佳答案
我用 C++ 编写了一个解释器(在多年使用 C 之后),我认为 C++ 是一种体面的语言。关于实现,我只会回到过去,改变我对实现同时运行多个不同解释器(每个多线程)的可能性的选择,仅仅是因为它使代码更复杂,而且它从未使用过。多线程非常有用,但是解释器的多个实例毫无意义......
但是现在我最大的遗憾确实是我编写了那个解释器,因为现在它已在生产环境中使用,编写了相当多的代码并经过培训,而且因为该语言相当丑陋并且不如 python 强大......但现在切换到 python 会增加成本。它没有我知道的错误......但它比 python 更糟糕,这是一个错误(除了无缘无故支付编写成本的错误之外)。
我最初应该使用 python 代替(或 lua 或任何其他易于嵌入且具有合理许可的现成解释器)......我唯一的借口是我不了解 python 或那时的lua。
虽然编写解释器作为编程练习是一件很有趣的事情,但我建议您避免为生产环境编写自己的解释器,尤其是(请不要把它个人化)如果低级复杂性需要的照顾已经不存在了在你的范围内(例如,我发现几个内存泄漏的存在非常令人震惊)。
C++ 仍然是一种低级语言,虽然您可以在内存处理方面获得一些帮助,但 该语言的主要假设是您的代码是 100% 正确,因为没有运行时错误会帮助你(只有未定义的行为守护进程)。
如果您错过了 C(一种更简单的语言)代码 100% 正确的假设,那么我看不出您如何确信您会用 C++ 编写正确的代码(相比之下,这是一个复杂的怪物)。我怀疑你最终会得到另一个你必须扔掉的错误解释器。
关于c++ - *任何*流行的编程语言解释器的主要实现是用 C++ 编写的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3185593/
我想知道是否有一个“标准”类(JDK、Guava、Apache *)可以帮助延迟初始化/计算模式? 我正在考虑这样的事情(现在让我们忽略同步): abstract class Lazy { T i
我要创建一个从 html 到某种格式的转换器。我正在考虑使用中间格式 XML(XSL-FO)。 我的问题:如果没有那么多应用程序渲染它,为什么 FO 格式很受欢迎? 最佳答案 我很清楚 CSS 和 X
我发现了 IDEF就在昨天,我立即想知道为什么它不比 UML 更流行。从documents来看,IDEF 至少与 UML 一样适用于软件建模,但与 UML 相比,它已经成熟和稳定了大约 30 年。 这
首先,对于版主来说,如果这不是发布此内容的正确位置,请不要生气:)。 我想知道是否有类似 TodoMVC 的东西适用于 Django、Rails、Symfony 等流行的 Web 框架。 如果没有这样
在我的应用程序中,我有一个 UIScrollView,其中包含 N 个可以向左或向右滑动的 ViewController 在每个 Controller 中,我希望能够推送新的 viewControll
我是一名优秀的程序员,十分优秀!