逻辑——真与假的世界

逻辑——消除歧义的工具
     我们平时说话所用的语言被称为自然语言。自然语言的缺点就是容易引起歧义。这就体现出了逻辑语言的重要性。举以下一个例子:

技术员:这个水坝系统设计思路为按下紧急按钮或者水位高于危险水位的时候,报警器就会报警。
提问者:这个“或者”是排他么?
技术员:什么意思呢?
提问者:就是,当按下紧急按钮的同时水位超过危险水位的时候,报警器会报警么?
技术员:当然会啦!

****************************分割线************************************************

A:他现在在山东或者浙江。
B:这个“或者”是排他么?
A:什么意思呢?
B:就是他现在可能在山东同时又在浙江么?
A:当然不可能啦!

由此可见,身为一个程序员,必须走出自然语言的逻辑迷宫,逻辑有两方面的好处。一,可以消除自然语言中的歧义部分,更加严密准确的记述事物的工具。二,将更加难以表达的问题转变为更加浅显易懂的新式。

车费问题——兼顾完整性和排他性

费用规则A

6岁以上的乘客

100元

不到6岁的乘客

0元

   按照此规则,4岁的A不用付任何车费。10岁的B需要支付100元的车费。而6岁的C同样也需要支付100元的车费(“以上”包含当前元素)




那现在来看看完整性的问题——是否有遗漏的规则

费用规则B

乘客年龄大于6岁

100元

乘客年龄小于6岁

0元

    按照此规则,很明显可以看出,6岁的A没有适合的规则来决定他的费用。
    因此,费用规则B就存在完整性的问题,不适于应用于实际生活



排他?防止歧义的操作

费用规则C

乘客年龄6岁以上

100元

乘客年龄6岁以下

0元

      此时,6岁就存在明显的重复的现象,对于6岁的人来说,可以选择上面的规则,但也可以选择下面的规则(毕竟两者的条件都同时满足)。


重复一定错误?
我们来看看以下的规则

费用规则D

乘客年龄6岁以上

100元

乘客年龄6岁

100元

乘客年龄不到6岁

0元

    明显是在6岁这一元素上产生了重复,但是由于上下的规则相同。所以并没有歧义的产生。





也许有时会觉得:“这不都是理所当然的么?不是很简单么?”
是的,粗略看来,似乎完整性和排他性很简单。但是在实际操作中,程序员通常要用上几十条,上百条的if语句来进行划分。然而在这错综复杂的if语句中,若是任意的完整性和排他性没有做好,就会产生BUG。考虑完整性时,需要将自己看作一个不正常的人(或者是故意找茬的人),这样才能充分的发现程序的逻辑是否有问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值