编程语言的特征是语义,语法或其他方面的概念吗?

时间:2011-03-29 14:00:43

标签: programming-languages

在谈论编程语言的功能时,例如在Programming Language ComparisonD Language Feature Comparison Table中,我想知道概念“功能”属于或在下面讨论的语言的哪个方面?

谢谢和问候!

3 个答案:

答案 0 :(得分:2)

这只是一种直觉,我不是语言理论家或其他任何人。我想说为编程语言添加一个特性意味着两者

  1. 为某些情况或构造添加语义(例如,根据以下50条规则,“Is-expressions返回一个布尔值,根据模板参数的类型是否与某种类型匹配:...”)
  2. 定义属于它的语法(例如在语法中添加IsExpr : "is" "(" someKindOfExpression ")"

答案 1 :(得分:1)

这完全取决于您对“功能”的含义以及它是如何实现的。 Java的泛型等一些特性只不过是语法糖 - 所以这就是“语法特征”。由于type erasure,使用Java的泛型生成的字节码不受影响。这允许向后兼容预通用(例如Java 1.5)字节码。

其他语言功能比语法级别更深入,比如C#的泛型,它是使用reification实现的,以提供"first-class" generic objects

答案 2 :(得分:1)

我不认为编程语言“功能”的概念有一个清晰的分离,因为运行时环境正在提供诸如垃圾收集(Java)或模式匹配(Haskell)等许多功能。所以,通常我会说编程语言 - 语法 - 本身没有提供任何功能。它只是确定了语言的规则(语法)。由于行为是由代码(由语法通过遵守其规则而产生)的解释方式决定的,因此编程语言功能是一个特殊的方面。