按 ‘ 逻辑 ’ 标签归档

武侠传奇小说的逻辑能力

古龙写过一个张聋子,人物设定是确实全聋,但视力好,通过读唇语来“听”人说话。故事进展到终于见到了大怪,张聋子通过读唇语,发现大怪是个傀儡,理由是大怪大喝“站住”时嘴唇没动。这就矛盾了……如果张聋子没看到嘴唇动,却知道大喝的内容,就说明他不是聋子……

说到视力再说个“蓝大先生”,也是古龙写的吧,是个跑龙套的小脚色,表演了一出吃面之后就被干掉了。吃面剧情是为了展现他的眼力,收碗的老板收到他这一桌时愣住了:碗里全是断面条,老板推断此人眼力好,只吃整根的。“碗里只剩断的→他只吃了整的”是个不及格的逻辑推导,还有我觉得面馆老板眼力更好:蓝大先生吃得很慢很仔细,而老板一眼扫过就看出了真相。

倪匡在《异宝》里写过一个会读心的小设备,故事的铺垫角色带着它过安检时,因为不知道它是个什么东东,所以很担心不让上飞机。被安检问到时,就说是个小磁铁。安检随手拿它吸吸铁,没吸起来,以为此人在开玩笑,瞪了他一眼,就随手还给他了。这个思路很不对!如果此人说是磁铁却不是,更要严查才对啊!

下面这段和逻辑没关系,只是隐隐觉得故事有可能往这个不妥的方向发展:

南希仁仰起脖子,竭力要想说话,但嘴唇始终无法张开,撑持片刻,头一沉,往后便倒。郭靖叫了几声“四师父”,抢着要去相扶……南希仁右手食指慢慢在泥上划字,月光下见他一个字一个字的写道:“杀……我……”郭靖痛哭道:“四师父!你受苦了!徒儿遵命!”【砰

程序员入伙书——并且、或者、不是、真真假假

上一章介绍if-else时,我在结尾举了个程序优化的例子,里面用到了一个词:and,我答应会细细讲到它,现在这个章节就是。

if-else的执行过程是这样的:比如语句是if a > 3,那么它就会看,a大于3吗?如果a的当前值等于4,那么4 > 3这个表达式就会算出一个“真”值,if a > 3就成了if True。程序看到了if True,就决定执行这段程序。如果a等于2,它就会最终看到if False(“假”值),if False的结果就是使程序跳过这段代码,转而执行下一个判断。

做个实验,这个实验证明if True所对应的程序段会无条件执行,而if False所对应的,则铁定不执行:

>>> if True:
	print("I am in the True block")

	
I am in the True block
>>> if False:
	print("I am in the False block")

	
>>> 

True的意思是“真”,False的意思是“假”。数学上说的真命题、假命题,和这两个概念等价。

不是所有的条件判断都是a > 3这么简单的,有时需要把几个条件组合起来。例如“晚上如果停电,我就点蜡烛”这句话,等同于“如果到了晚上,并且停电,我就点蜡烛。”只有“晚上”和“停电”同时满足时,才会引起点蜡烛的动作。而如果是大白天、或者有电、或者既是大白天又有电,那就没必要点蜡烛了。“他夫妻俩都去,我就去”的意思是“他去,并且她去,我就去。”如果这小两口有一位不出席,我就未必去。

这个表达“两个条件同时满足,才能得到True”的词:“并且”,在Python里被写为and。and两边的值必须同时为True,才能得到True的结果,否则结果是False。

>>> True and True
True
>>> True and False
False
>>> False and True
False
>>> False and False
False
>>>

and对条件要求相当苛刻,相当于给了所有投票者一票否决权。另有一种要求不那么苛刻的,只要有一个投了赞成票,就绿灯放行。这种运算叫做“或者”,Python里写作or。

“两个人有一个好的,这架就打不起来。”这话的逻辑就是or。意思是说,如果张麻子是好的or王二狗是好的,甚至两个人都是好的,就不会打得头破血流。

1971年,副统帅说想动一动,周丞相说,如果想动一动,需要周、黄、吴、李四人同时下令。但李是副统帅家的人,把这话解释为,只要周黄吴李中有人下令,就可以动。于是山海关的那架三叉戟就动了,动静还挺大。

这个例子,就是本来应该用and的地方写了or,原本是“周同意 and 黄同意 and 吴同意 and 李同意”变成了“周同意 or 黄同意 or 吴同意 or 李同意”。把and和or用错,很多老程序员都可能会犯。众所周知,那架三叉戟后来掉下来了。这个故事告诉我们:and和or千万不能弄反,故意制造Bug就更要不得了。
猛击阅读全文

还有其它宇宙吗?

新浪爱问上总有些小孩,专门问一些貌似勤学好问的傻冒问题。例如这个:“我冒昧的问一下,是不是只有我们现在这一个宇宙呢?是否还有其他的呢宇宙吗?”(语法不通,原文如此)

俺的回答:

“宇宙”的一个较简单的定义是:一切现成的东西所构成的统一整体。照这个定义,“宇宙”这个概念是可以自我扩展的。只要你发现了从前未被发现的东西,它就自动加入现有的“宇宙”,成为它的一部分。

因此,即使有其他的“宇宙”,无非让现在人们认为的“宇宙”边沿扩大一些。假如人们只能看五公里远,就会定义方圆五公里内为“宇宙”。当发现五公里外还有别的东西时,就会重新定义“宇宙”为方圆十公里,而不把五公里外的东西算作其他“宇宙”的财产。

现在有人说:“可能有一个反宇宙。”事实上,如果有一天,人们果然发现了这个“反宇宙”,结果会如何呢?大家只会说:“在宇宙里发现了一个巨大的由反物质构成的星区哎。”而不会说:“我们发现了第二个宇宙。”

所以,按照这个逻辑,宇宙永远不会超过一个。

那怎么办呢?

和K.O.一道看《西游记·真假美猴王》。孙悟空打死了几个强人,被唐僧赶走,到南海去找观音菩萨诉苦。 菩萨说:“他赶走你是不对,可你也不能一走了之呀。”我心想,那孙悟空该怎么办,才能既让唐僧眼不见心不烦,又不至于“一走了之”呢。 正沉吟间,只听到身边的小朋友咕哝了一句——

“那怎么办呢?”

逻辑训练

假如有这样一个命题:克隆人是否会对他人造成可触及的损失?

我觉得讨论这个命题应该是安全的,因为目前世界上还没有一个成年的克隆人,因此每个独立参与讨论的人,都是自然出生的,也就是说,都可以从旁观的角度来讨论这个,而不用夹杂着利害的心思。 另外我不想用“伦理”这种词,因为“伦理”太抽象,帽子的尺寸太灵活,以至于扣在任何人头上都很合适。 所以现在我只想从功利的角度来谈论这个话题。

之所以说“我觉得应该是安全的”,是因为还是有风险的,大致在于以下几点:

一般人的心思总以为,某人赞同什么,就代表某人想去做什么。 假如有人赞同克隆人,大家就很容易认为他有克隆自己的动机。 好比两年前,有一场关于性服务行业是否正当的讨论,正方攻击反方的主要突破口,在于“你认为性服务没问题,那么你肯定乐于提供性服务了?” 即使是非不论,稍微受过逻辑训练的人也知道这个推导过程是错误的,因为这个世界很丰富,和一种无缺陷的事物相对的事物,并不一定就有缺陷。 比如,精神健全的男人都会认为女性是个优秀的性别,但这并不代表世界上这么多男人都乐于做女人,因为男性也是个优秀的性别。

另外,预先弄明白一件事是不是合理,将来遇到这种事情发生的时候,就知道该赞同还是反对。 即使思考的结果是“应该反对”,并不代表“想一想这事情都是罪恶”。 好比去商店买东西,一个商品的标价是十块,我想五块钱买下来,我就问售货员可不可以,如果她愿意卖,皆大欢喜,如果她不愿意卖,那我就把那东西放回货架上去。 但是如果我问一问,她就打电话叫警察来抓强盗,那就太荒谬了。

普通人的心思还认为,某人赞同什么,就代表某人讨厌其他的事物。 假如有人赞同克隆人,大家就很容易认为他讨厌自然出生的人类。 还拿两年前的那场论战来说,正方还有一个突破口,就是“难道那么多体体面面的行业还不如性服务?” 这个推导过程也是错误的,比如,任何精神健全的男人都会认为女性是个优秀的性别,但这并不表明世界上这么多男人就会讨厌男性,因为自己也是男性,讨厌的结果会引起自己的性别认同障碍的。

还有一个常见的推导,就是“假如大家都去……,那么这世界就完了”的句式,从而推导出这个事情是不合理的。 当然这个推导过程也是错误的,社会是有分工的,这世界上,不管一个职业是怎么好,假如大家都去做,那么这个世界肯定会玩完。 比如当美国总统是个相当有前途的职业,假如大家都去做,白宫就住不下了,就算住下了也不知道该听谁的才好。 男人(女人)是好的,假如大家都去做了男人(女人),就真的绝后了。 地球和太阳的距离很合适,以至于出现了生命,是自然的奇迹,当然很好,但假如其他的行星也都在地球的轨道上运转,那就会撞个稀烂了。