代码之家  ›  专栏  ›  技术社区  ›  Hai Minh Nguyen

所有编程语言都有共同的词汇表吗?[关闭]

  •  0
  • Hai Minh Nguyen  · 技术社区  · 14 年前

    每种编程语言都有自己的词汇表,这真的很烦人。例如,在Java中,我们有

    if ... {}
    

    但是在bash脚本中我们有

    if ... then ... fi # using "fi" is so insane for me
    

    如果所有编程语言都共享相同的词汇表,那就太好了。然后,语言设计者可以定义底层语义。我想知道是否有人试图建立这样一个词汇表?

    6 回复  |  直到 14 年前
        1
  •  2
  •   paxdiablo    14 年前

    嗯,IBM有一个产品,VisualAge Generator,它有一种通用语言,然后被“编译”到从UNIX下的C到大型机上的COBOL的所有内容。我认为它现在已经完全不起作用了,可能还有其他的尝试没有立刻引起人们的注意。

    然而,拥有不同语义的关键在于语言 不同的是,否则没有理由在BCPL上通过COBOL或Ruby选择Java。

    fi 是一个 明亮的 想法。为每个构造使用不同的结束词大大简化了解析器,并允许更大的错误检查。换言之, if FI , case esac . 我唯一的东西 不要 就像那样 do 使用 done 而不是 od -)

        2
  •  5
  •   Adam Matan    14 年前

    不,因为同样的原因,所有人类语言都不共享相同的词汇:词汇和语义服务于特定的利基需求。希伯来语有20多个词来描述收割(每个水果、谷类和蔬菜都有一个独特的词!)阿拉伯人有几十只骆驼,等等。

    计算机语言非常相似。 bash 强调一些特性(例如短命令、立即执行OS命令),而Java强调其他特征(例如清晰的对象层次结构)。这些强调使用不同的语义和词汇实现。

    有人可能会争辩说,可以有一个自动的翻译程序,将一个程序从一种语言翻译到另一种语言。尽管理论上是可能的 turing-complete languages 因为一种语言中命令的含义和另一种语言中命令的含义之间存在细微的差异,所以这可能非常乏味。例如,其含义 if 关键字可能在上述语言之间略有不同,特别是在出现错误和意外输入的情况下。

    编辑: 下面的评论:我选择了另一个例子,因为似乎因纽特人的语言并没有确切的数百个词来形容雪,只是很多形容词。

        3
  •  2
  •   Mchl    14 年前

    很高兴他们(或绝大多数)都使用拉丁字母,不像人类语言。;)

        4
  •  0
  •   Julio Faerman    14 年前

    即使在像if语句这样的简单情况下,它也不可行。 例如,有些语言可以使用“statement-if-condition”子句,这在bash中可能不可行。 然后考虑pradigm特有的语义(类、函数、谓词….),它比词汇更深入。

        5
  •  0
  •   Will Dean    14 年前

    有许多语言采用了C语言(C++、C语言、Java、JavaScript、Verilog等)的约定。我不知道在任何形式的收敛上有什么努力。

    如果你看看语言设计/标准化过程中陷入的那种微小的东西,我认为在整个行业内使事物同质化的努力不会有多大。

    似乎现代语言是由一群有思想的聪明人组成的,他们试图尽可能多地借鉴他们的传统。不是所有的语言都是这样创建的,尽管…

        6
  •  0
  •   Ed B    14 年前

    不,但是你可以用任何语言创建一个“你好世界”应用程序。