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

What's the difference between natural languages and programming languages in the context of their grammars?

提问人:Spencer 提问时间:8/10/2017 最后编辑:EJoshuaS - Stand with UkraineSpencer 更新时间:6/13/2022 访问量:1670

问:

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

与语言无关的 编程语言

评论


答:

2赞 EJoshuaS - Stand with Ukraine 8/12/2017 #1

自然语言要灵活得多。

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

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

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

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

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

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