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

时间:2011-12-04 00:56:11

标签: ruby erlang code-translation

当我几年前学习C ++时,我有一些想法:“为什么不在语言中添加一些有用的词汇结构,编写一个统一的语法,通过一些翻译来获得前源代码-modules(用smt编写,像perl一样可移植)“并将最终文件传递给编译器。”

现在我想到的唯一想法是:

  1. 如果您不知道如何用简单的C ++编写它 - 再想一次
  2. 可能(在某些不好的实现中)不是类型安全的
  3. 如果您使用其中一些“syntax-modules”
  4. ,其他程序员可能无法理解您的代码

    可是:

    1. 我不是说它不能用C ++编写 - 我只是说它看起来不完美。我说如果C ++会以某种方式看起来没有错,Ruby<例如。
    2. 如果执行得很好 - 没问题。
    3. 如果是smb。使用你从未听说过的库不会花太多时间来理解它的工作原理 - 与语法相同。
    4. 实际上,现在我对C ++没有任何反对意见(除了在某些情况下糟糕的错误消息)。我现在的想法是 -

      将一个翻译器从接近Ruby等语言的东西写成像Erlang这样强大的语言。

      当然,我不会涵盖他们的所有功能,但是对于一系列狭窄的任务(例如 - 直接用于网络开发)可能没问题,不是吗?

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

1 个答案:

答案 0 :(得分:4)

如果您在C ++,Ruby和Erlang等语言之间看到的唯一区别是语法,我会恭敬地建议您没有考虑过问题。语法在某种程度上很重要,但更大的问题是语义。所有这三种语言都具有相当不同的语义,因此将一种语言中编写良好的智能代码转换为另一种语言中同样智能的代码并非易事。

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