笔记19 练习28中的布尔表达式
这一部分撞到我较为熟悉的内容了,ex28中每一段代码,就是一个完整的陈述语句。完整陈述句的特征,那就是它一定在真值上有一个确定的值,要么真,要么假。
构成语句的基本单位称为原子语句,你再也不能拆分了,如果要拆分,拆分后的结果就不是语句而是语词。
而用连接词连接而成的语句则是复合语句,它可以由原子语句构成,也可以由复合语句构成。只要你熟悉那些基本连接词的真值表,这些代码涵义就很好理解。连接词连接的只能是语句,所以,连接词左右两边都是语句,由not来否定的那些由括号来限定的符号串也是语句。
习题27中列出了4个连接词,分别是“并非”(not),“或者”(or),并且(and),还有“非或”(not or)。前面3个好理解,不用多做解释。这里特别说明一下“非或”。这个连接词实际上是对于“或者”连接词的否定,所以,你只要看看“或者”的真值表,和那个“非或”的真值表对着干就ok了。用教材的话讲,就是给它连接的那个语句值取反。
在练习28中由连接词组合成的表达式,可以是具体的语句,也可以是语句的值。在ex28的第一个语句,True and True这个复合语句中,True表述的是一个语句的值,因为任何一个陈述句都有真值,说它表示的是一个真语句,应该更为准确。这是在更为抽象普遍的意义上对于语句对象的运用,True有点像python中的一个变元,这个变元对应于一个语言中的任意一个真语句。所以在这个意义上,这个真值语句实际上也是一个函数。对于False,自然是完全类似的理解。
除了这个True和False之外,一个数学公式也是一个语句。所以,在这个练习28中,由等值符号==和不等值符号!=符号连接的数字也好,字符串也好,文字也好,它们都属于语句,一看就知道这些语句是取真值还是假值。例如2==1,自然是假值。而1 !=0,自然是真值。这些语句实际上就是真值变元所对应的具体语句,很容易判定语句的值。但在实际的自然语言当中,这样的判定就不是那么容易。所以,这个现实的世界之中,就常常有对于同样语句的不同理解,进而形成不同的观念群落。
布尔语句的训练真是一个逻辑体操,这个体操经过了几百年才形成今天这样的计算机语言。三百年前的莱布尼兹,他在德国,大概没有想到他的字符语言的构想会成为布尔代数。而大约200年前的布尔,他在英国,大概也没有想到,他把逻辑放到代数之中形成的布尔代数,然后由弗雷格、罗素、皮尔斯等人弄成成熟的符号逻辑。进而启发香农的逻辑电路理论,从而引发延续近100年的信息科技浪潮。
由此而大大提升了人类的智慧水准,让人类的科技传布全球,传布太空,人类的智慧真的很了不得。2020/04/19