Access denied, Please sign in and make sure you have proper permission.
这要分两种情况,你想实现的是编译型的语言还是解释型的语言。
- 编译型的语言并不在意母语言是什么,因为最终是需要将语言生成机器码,例如采用 llvm 作为编译器后端,那生成 llvm 的中间码就可以了。
- 解释型的语言又分为直接引用 ruby 进行解释,还是用 ruby 写一个高效的解释器来执行解释,如果直接生成 ast 用 ruby 解释的话,ruby 本身的性能并不高,再直接用 ruby 进行解释,性能就更差了。
顺带一提 Rubinius,就是以 C++ 为基础,其他大部分代码都是 ruby 实现的 ruby 解释器,核心那部分的性能还是需要 C++ 来支撑一波。
如果做语言的话,ruby 适合做 dsl,
如果要重新发明一个语言,不建议使用 ruby,因为效率太低
如果是从 ruby 到另一种语言,那就是语言的编译和移植
同意,真正做一门语言离不开 c 和 c++,因为需要和硬件交互,如果在 ruby 的基础上开发,移植更合适