1
我们为什么需要符号语言?
生活中广泛存在着各种各样的语言,但是这些语言能让我们有效交流吗?
恐怕不行。
比如你热心地向正在学习中文的外国人打招呼:吃了吗,请问这时老外正确理解你的意思并回答的概率有多大?那如果你用温州话问他呢?
使用自然语言交流的时候往往会碰到各种各样的问题。比如和别人使用英语交流时,很多人是将对方说的英语转换成汉语来理解,之后再将想说的汉语翻译成英语说出来,可想而知,这样的交流方式效率很低;即使是两个中国人用汉语交流,也可能因为地方方言、文化习惯而产生很多的交流障碍。
素材来源:123RF
那么,在自然语言之外,是否存在一种“通用语言”,各个国家间的人们都能理解同时又能避免误解,甚至连不具备任何智能的机器也能明白呢?
答案是肯定的。这种连机器都能懂的“通用语言”也被称为是符号语言。
说到符号语言,不得不提一位大家耳熟能详的科学家——莱布尼兹,正是他提出了符号语言的概念。《简明逻辑史》的作者亨利希·肖尔兹提到莱布尼兹在符号语言中的贡献时,曾评价说“人们提起莱布尼兹的名字就好像谈到日出一样”,足见莱布尼兹的符号语言影响之重大。基于这种通用语言的思想,有不少学者创造了脱离国家和地区的世界语,莱布尼兹也被后人推崇为世界语的先驱。
戈特弗里德·威廉·莱布尼茨(Gottfried Wilhelm Leibniz),1646-1716年,德国数学家、哲学家。最为人所熟知的贡献为开创了微积分(当然涉及到牛顿和莱布尼兹究竟谁先创立之争)。以他和牛顿名字命名的牛顿-莱布尼兹公式也曾让数学小白们头疼不已。除了在数学领域,莱布尼兹在逻辑学、哲学、法学、神学等方面也均有涉猎,因此也是一个像亚里士多德那样的通才。而其对于机械和符号语言的研究能够体现出莱布尼兹对于一种不依赖于人的感性思维的通用规则的渴望。
人类的语言体系经过了漫长的发展,为什么又要抽象出一种符号语言,这不是画蛇添足吗?
莱布尼兹认为,将复杂事务转化成符号表示,通过数学计算来代替思考,可以消除人们相互交流时产生的误解与歧义,减少没有必要的争论,使得生活更加有效率。因为数学的结果总是明确的,一旦出现了争执,大家可以将问题转化为数学运算,只要一起坐着演算一番便可知道孰对孰错。因此他希望能够寻找一个能够包含全人类思想的符号系统以及操纵这些符号的演算规则(也就是通用语言)。
这种将人的思维抽象为数学运算的方法也确实能够起到很好的计算和推理效果。
举个例子,还记得以前学过的鸡兔同笼问题吗?当我们在解决鸡兔同笼的问题时,我们会假设有x只鸡,y只兔子,再根据一共有几个脑袋、几条腿这样的条件列出一个二元一次方程组来求解。这一过程实际上就是将现实问题转化为符号语言的过程。如果不用这种方式,我们掰着手指头可能算上几个小时也得不到正确的答案。而如果想用机器来解决这样的问题,我们也不得不对我们的思维进行抽象——毕竟机器才不知道什么是鸡、什么是兔子,也不知道这些东西究竟有几个脑袋几条腿。
2
二进制计算器和莱布尼茨定理
说到用于计算的机器,就不得不提莱布尼兹和他的计算器。
莱布尼兹一生设计并制作了多种计算器,其中有一款至今仍被保留在德国汉诺威国家图书馆里。莱布尼兹在一部分计算器的计算系统中创造性地引入了二进制系统,并且在《1703皇家科学院科学论文集》(Histoire de l’Academie Royale des Sciences , Année 1703)中发表了著名的《二进制计算的阐述》一文。
莱布尼茨论文原文的标题和作者部分。图片来源:Wikipedia
这篇文章在莱布尼兹的时代并没有引起其他学者太多的注意,但在今天看来,二进制的引入无疑是计算机发展史上的重大创举,它为计算机的发展奠定了逻辑基础。从1946年诞生的第一台大而笨重的计算机到今天被广泛使用的灵巧的笔记本电脑,都是基于二进制运算的计算机。无论计算机所处理的信息是数字、文字、还是图像,这些信息都会本转换成基于0、1二进制运算系统的信号,一串串的0、1也成为了计算机和信息时代的代表符号。
莱布尼兹的计算器
除了在计算机语言上做出了卓越的贡献外,莱布尼兹还提出了著名的莱布尼兹定理:
“a=b,b=a”。
这一定理看似简单且几乎是不言而喻的,但在逻辑学上,莱布尼兹定理有重大意义。它的提出意味着如果某一物可以被另一物替代且不影响其真实性,则可以认定他们是同一的。通过这一定理,莱布尼兹完善了亚里士多德的三段论。亚里士多德在他的《工具论》中曾论述证明了三段论的3个格,14个有效式。而莱布尼兹对其进行了完善,将3格14式扩展成了4格24式。
3
布尔和布尔代数
莱布尼兹希望将找到一种通用的语言来模拟人类的思维,这一伟大的构想对后来的科学家们启发巨大,而将这一想法向前推进了一大步的人就是布尔。
布尔发现代数运算和逻辑运算之间存在类似之处,于是他开始构想能否将逻辑推理看成是代数运算。这一构想的成果就是以他的名字命名的布尔代数(也被称为逻辑代数)。布尔的代数逻辑在一定程度上实现了莱布尼兹梦想中的通用语言。
乔治·布尔(George Boole),1815-1864年,英国数学家。布尔出身贫苦,在16岁时就开始在当地的学校任教,19岁时着手开创了自己的学校继续从事教育工作。但在教书的同时,他又利用闲暇之余研读数学、逻辑学方面的书籍文献,可以说布尔是一名自学成才的数学家。他撰写的图书《逻辑的数学分析》、《思维规律的研究》在逻辑代数的发展史上具有里程碑式的地位。
布尔一生在逻辑代数领域做出了巨大的贡献。
1848年,布尔出版了《逻辑的数学分析》(The Mathematical Analysis of Logic),这是他第一次对符号逻辑做出贡献;1854年,他出版了其最著名的著作《思维规律的研究》(An Investigation of The Laws of Thought),正是在这本书中,他第一次介绍了我们现在使用的布尔代数。
为了纪念布尔在符号逻辑运算中的突出贡献,现代很多计算机语言中将逻辑运算称为布尔运算,将参与布尔运算的变量类型称为布尔变量。
布尔代数有一套完整的运算规则,可以简单理解为一些命题的“AND”“OR”“NOT”运算。在布尔代数中,用x,y,z…之类的符号来表示命题,被称为布尔变元。用“·”来表示合取(也就是AND),用“+”来表示析取(也就是OR),用1-x来表示x的否定(也就是NOT)。而每个布尔变元的取值只有两种可能1或是0,1表明这个命题为真命题,0表示这个命题为假命题。而在这些运算符号的基础上,布尔提出了布尔代数的运算规则,也就是布尔定律。布尔定律的内容很多,包括了交换律、幂等律、分配律、结合律等,在这里我们就不一一列举了。
布尔代数究竟有什么用呢?不妨来看两个例子。
在公园里散步的时候,你看见A和B两个人正坐在凳子上聊天。这两个人分别养了一只狗,要么是哈士奇要么是金毛。现在知道,如果A养的是哈士奇,那么B养的也是哈士奇;如果B养的是哈士奇,那么A养的是金毛;如果B养的是金毛,那么A养的是哈士奇。问题来了,A和B分别养的是什么呢?
当然,这里所列的条件非常少,只有三个命题,我们通过逻辑推理的方式也能够得到答案。但如果有更多的命题,那么使用布尔代数的方法就可以更方便地求解。
假设x表示A养的是哈士奇,y表示B养的是哈士奇,那么1-x(x的否定)就表示A养的是金毛,1-y(y的否定)表示B养的是金毛,根据已知能够轻松列出下面三个“方程组”。
于是这样的一个逻辑问题就被转化成了一个代数问题,根据布尔代数的运算规则,我们能够得到x=0,y=1,即A养的是金毛、B养的是哈士奇。
第二个例子就发生在我们每天的生活中。我们几乎每天都要去网上寻找想要的信息,而使用的搜索引擎就与布尔代数密不可分。假如你想看苹果的介绍,但并不想看苹果(Apple)官网的信息,那么你可以在搜索引擎的搜索框中输入关键词“苹果 -官网”。搜索引擎会自动将其转化为布尔代数的算式,例如“100110….(假设是“苹果”这个词对应的二进制数)” NOT “11011001…(假设是“官网”这个词对应的二进制数)”,很快搜索引擎就能够将标题中包含“苹果”但是不含“官网”的搜索结果呈现在我们面前了。
布尔代数中命题的取值只有0、1两种可能,分别代表了真(True)与假(False),很容易让人与二进制产生联想,而香农也是其中之一。1938年,香农在他的硕士论文中提出用布尔代数来实现数字电路的开关的构想,这使得布尔代数成为了数字电路的基础,也奠定了用数字电路简单的开和关来模拟复杂的数学运算的理论基础,为后来计算机科学的发展做出了巨大的铺垫。 (编辑:婉珺)