自然语言和编程语言在语法的上下文中有什么区别?



自然语言和编程语言在语法方面有什么区别?

自然语言要灵活得多。

此外,自然语言通常不能用上下文无关语法完全描述。例如,在英语中,"分别"从句(以及其他一些结构(会弄乱语法。当然,C# 和 Java 都不是上下文无关的(尽管本文声称早期 C# 具有上下文无关的语法(,但编程语言更有可能具有上下文无关的语法。

最大的区别是自然语言的语法都允许歧义,而编程语言经过精心设计以避免歧义。考虑以下陈述(不幸的是,我已经不记得我最初读过这个例子的数学教科书了(:

凯文在公园里看到约翰拿着望远镜。

谁在使用望远镜——约翰还是凯文?他们中的哪一个在公园里——凯文、约翰还是望远镜?一些解释:

  • 望远镜在公园里。约翰正在使用它。凯文在约翰使用它时看到了他在那里。
  • 约翰在公园里。凯文用望远镜在公园里观察约翰。
  • 望远镜在公园里。凯文用它来见约翰。
  • 等。

编程语言经过精心设计,以避免您写下这样的句子。

最新更新