通过编写代码翻译器来增强语言能力:为什么这是一个坏主意?

Ben*_*man 1 ruby erlang code-translation

几年前,当我学习 C++ 时,我有一些想法,例如:“为什么不通过编写具有统一语法的统一程序来在语言中添加一些有用的词汇结构,该程序将通过几个翻译模块获得预源代码(用 smt.portable (如 perl) 编写)”并将最终文件传递给编译器。”

现在我脑子里唯一的想法是:

  1. 如果您不知道如何用纯 C++ 编写它 - 请再想一想
  2. 它可能(在一些糟糕的实现中)不是类型安全的
  3. 如果您使用其中一些“语法模块”,其他程序员可能无法理解您的代码

但:

  1. 我并不是说它不能用 C++ 编写 - 我只是说它看起来肯定不完美。我说,如果 C++ 看起来像 Ruby< 例如,那就没有什么问题。
  2. 如果实施良好-没问题。
  3. 如果某人。使用您从未听说过的库,它不会花费您太多时间来理解它的一般工作原理 - 语法也是如此。

事实上,现在我对 C++ 没有任何反对意见(除了某些情况下可怕的错误消息)。我现在的想法是——

编写一个翻译器,将 Ruby* 这样的美妙语言翻译成 Erlang 这样强大的语言。

当然,我不会涵盖它们的所有功能,但对于范围狭窄的任务(例如 - 直接用于 Web 开发),这可能没问题,不是吗?

* 在尝试之前,我也对 Ruby 和 RoR 持怀疑态度。我应该说 - 我很惊讶,但很高兴。

Chu*_*uck 5

如果您认为 C++、Ruby 和 Erlang 等语言之间的唯一区别是语法,那么我谨建议您还没有彻底思考这个问题。语法在某种程度上很重要,但更大的问题是语义。所有这三种语言都具有相当不同的语义,因此将一种语言中编写良好的智能代码转换为另一种语言中同样智能的代码并不是一项简单的任务。

顺便说一句,Erlang 已经有一种类似 Ruby 的编程语言,称为Reia。当您查看 Reia 代码时,两种语言之间的差异已经很明显了(对于初学者来说,Erlang 是不可变的,而 Ruby 是可笑的可变的,并且 Erlang 的模块/参与者/数据结构和 Ruby 的对象结构之间存在很大差异)。AFAIK,该项目已被放弃。