自然语言是指我们日常使用的语言,比如英语、西班牙语和法语。这些语言并非人为设计而成,而是自然演化的结果。相比之下,人工语言是为了特定目的而设计的语言。例如,数学符号体系是一种高效表示数字和符号间关系的工具;化学家则使用另一种人工语言来描述分子的结构。而最为关键的是:
编程语言是人类为了表达计算过程而设计的人工语言。
人工语言通常具有严格的语法规则。例如,数学表达式“3 + 3 = 6”是符合语法规则的,而“3+ = 3$6”则不符合规则。同样,化学方程式“H2O”是语法正确的,而“2Zz”则不符合规则。
语法规则主要分为两类:一类针对记号(如单词、数字和化学元素),另一类针对结构。记号是语言的基本构成单元。在数学表达式“3+ = 3$6”中,“$”作为数学符号是不合法的。同样地,“2Zz”在化学表达式中是不合法的,因为不存在缩写为“Zz”的化学元素。
第二种语法规则规定了记号的组合方式。数学表达式“3+ = 3”是不合法的,因为尽管“+”和“=”是合法记号,但它们不能连续放置。同样,在化学表达式中,下标数字应当位于元素名称之后,而非之前。
“这是一个语法正确但包含非法记号的英语句子。”这句话的记号都是合法的,但整体结构却不符合语法规则。“这个句子所有的记号都合法,但结构不正确。”这句话的所有记号都是合法的,但其结构却不符合理论要求。
当我们阅读句子时,需要识别其结构。这个过程被称为语法分析。尽管自然语言和人工语言有许多共同点,比如记号、结构、语法和语义,但它们在某些方面存在差异。
歧义性:
自然语言中充满了歧义,人们通过上下文线索和其他信息来解决这些歧义。人工语言通常被设计成几乎没有歧义,无论在什么上下文中,任何表达式都只有一个明确的意思。
冗余性:
为了应对歧义,减少误解,自然语言中包含了大量冗余信息,因此显得较为冗长。而人工语言则更为简洁,减少了不必要的重复。
字面意义:
自然语言中充满了习惯用语和比喻。例如,“硬币掉了”(The penny dropped)这句话并不一定意味着真的有硬币掉落。而人工语言则严格按字面意义表达其含义。
由于我们从小接触自然语言,适应人工语言可能会有些困难。从某种程度上说,人工语言与自然语言之间的区别类似于诗歌与散文的区别,只不过后者更加明显。
诗歌:
诗歌的创作不仅考虑词汇的意义,还兼顾音韵效果,整首诗旨在传达某种意境或情感反应。诗歌中的歧义不仅常见,而且往往是刻意设计的一部分。
散文:
散文更注重词汇的实际意义,句子结构也提供了额外的意义。散文比诗歌更容易理解,但仍存在一定的歧义。
程序:
计算机程序的意义明确且不含歧义,完全按照字面意思执行。可以通过其记号和结构准确解读其含义。
人工语言相比自然语言,具有更高的复杂度,因此阅读起来需要更多的时间和精力。此外,结构至关重要,简单的从左至右阅读顺序未必有效。相反,应学会在脑海中解析程序,识别记号并解析结构。细节也很重要,自然语言中的小错误,如拼写或标点错误,在人工语言中可能会造成重大影响。