自然语言指的是人们日常交流所使用的语言,比如英语、西班牙语和法语。这些语言并非人为设计而成,而是经过长时间的演变自然形成的。
相比之下,形式语言是为了特定目的而专门设计的语言。例如,数学中的符号系统是一种非常有效的形式语言,能够精确表示数字和符号之间的关系;化学家们则使用另一种形式语言来描述分子结构。而最典型的例子是:
编程语言是人们为实现计算过程而设计的一种形式语言。
形式语言通常具有严格的语法规则。例如,3 + 3 = 6 是一个语法正确的数学表达式,但 3+ = 3$6 则不符合语法规则。同样,H2O 是一个语法正确的化学方程式,而 2Zz 则不符合规则。
语法规则主要分为两类:一类针对记号(即语言的基本元素,如单词、数字和化学元素),另一类针对结构。以数学表达式为例,3+ = 3$6 中的 $ 不符合数学记号的标准,因此是不合法的。同样,2Zz 不符合化学记号规则,因为没有化学元素被简写为 Zz。
第二类语法规则规定了记号的组合方式。数学等式 3+ = 3 不符合规则,因为虽然 + 和 = 符合标准,但不能这样连续放置。在化学表达式中,下标数字应当出现在元素名称之后,而不是之前。
“这是一句结构正确但包含非法记号的英语句子。” 这句话的所有记号都是合法的,但结构不符合语法规则。
当我们阅读句子时,无论是自然语言还是形式语言,都需要理解句子的结构。这个过程被称为语法分析。
尽管自然语言和形式语言有许多共同之处,比如都涉及记号、结构、语法和语义,但它们也存在一些显著差异。
歧义性:
自然语言中存在大量歧义,人们通过上下文和其他信息来解决这些歧义。而形式语言则设计为几乎无歧义,即无论上下文如何,每个表达式只有一个明确的含义。
冗余性:
自然语言包含大量冗余,这是为了减少歧义和误解,因此自然语言往往较为啰嗦。形式语言则较为简洁,冗余较少。
字面性:
自然语言中充满习惯用语和比喻,例如“硬币掉了”并不一定意味着硬币真的掉了。形式语言则严格按字面意义表达含义。
由于我们从小就接触自然语言,有时难以适应形式语言。形式语言和自然语言之间的区别类似于诗歌和散文的区别,但更为明显。
诗歌:
诗歌中词语的选择不仅考虑其意义,还考虑其音韵效果,整体表达某种情感或意境。诗歌中的歧义往往是故意设计的。
散文:
散文中词语的意义更为重要,句子结构也提供了额外的意义。散文比诗歌更易分析,但仍存在一些歧义。
程序:
计算机程序的意义不含歧义,直接按照字面意义理解。可以通过记号和结构完全解析其意义。
形式语言比自然语言更复杂,阅读起来需要更多时间。结构至关重要,因此自顶向下的阅读顺序未必最佳。应学会在头脑中解析程序,识别记号并理解结构。此外,细节非常重要。自然语言中的一些小错误,如拼写或标点错误,可能无关紧要,但在形式语言中可能会导致重大问题。