" When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck."
——美国诗人詹姆斯·惠特科姆·莱利(James Whitcomb Riley,1849-1916)
中文:
「当我看到一只鸟走起路来像鸭子,游起泳来像鸭子,叫起来也像鸭子,那么我就把这只鸟称为鸭子。」
鸭子类型(Duck Typing)的理念在编程语言里也得到了体现,它不关注对象的类型,而是关注对象具有的行为(方法)。鸭子类型的概念对一个没接触过动态语言的程序员来说是一个极大的冲击,有趣的是,这只鸭子很容易让人联想到另一只神奇的动物——卡尔‧萨根(Carl Sagan)的喷火龙:
萨根向朋友声称:「我的车库里有一条喷火的龙!」
他的朋友很兴奋,急忙跑到车库中,但没有看见龙。问:「龙在哪里?」
萨根说:「我忘了说明,这是一条隐形的龙。」
他朋友有些狐疑、然后提议说:「那可艾萨克一些粉末在地上,看看龙的爪印是不是会出现。」
但萨根又说:「这条龙是飘浮在空中的,所以采集不到牠的爪印」。
「而且牠正在喷火」。
朋友又问:「既然这条龙在喷火,我们用红外线检测仪来做一个热扫描如何?」
萨根说,「那也不行、因为隐形的火焰也没有温度。」
朋友又问:「不然对这条龙喷漆让它现形?」
萨根说:「这条龙是非物质的、油漆无处可沾。」
不管他朋友怎么提议,萨根的回答就是让他朋友没有任何的物理方法,可以去检测到这条龙的存在。
萨根最后说:「这样一条看不见又摸不着、没有实体的、飘在空中喷着没有热度的火,而且任何仪器都无法能够探测得到的龙,和『根本没有龙』之间又有什么差别呢?」
一般认为这是用来论证「证伪主义」的,即以「逻辑上存在验证其错误的可能」作为科学的范畴,在各种科普文中广泛流行。
但今天把「喷火龙」和「鸭子类型」放在一起看,体现的哲学用「操作主义」来描述更加贴切。
操作主义在量子力学和相对论中体现得淋漓尽致,事实上它们也正是在相同的时代背景下发展起来的。虽然操作主义已经诞生快一百年了,但今天的我们,哪怕是学习了很多科学知识,看到它的概念时可能还是会有些难以接受。
先说相对论,与其说它赋予观测者独特的地位,倒不如说它发现了观测行为的意义,操作直接影响事实,绝对时空并不存在。量子力学则更具颠覆性,甚至连爱因斯坦都难以接受。我们熟知的波粒二象性就在一定程度上是科学家观念变革的产物,问「电子的本质是波还是粒子」,是没有意义的。「用任何方式都无法同时确定粒子的动量和位置」则说明,谈论任何物理量都是没有意义的,除非你首先定义你测量这个物理量的方式。一个电子的动量是什么?我不知道,根据测量方式的不同,这个动量可以从十分精确一直到万分模糊,这些结果都是可能的,也都是正确的。一个电子的动量,只有当你测量时,才有意义。假如这不好理解,想象有人在纸上画了两横夹一竖,问你这是什么字。嗯,这是一个「工」字,但也可能是横过来的「H」, 在他没告诉你怎么看之前,这个问题是没有定论的。现在,你被告知:「这个图案的看法应该是横过来看。」这下我们明确了:这是一个大写字母H。只有观测手段明确之后,答案才有意义。而脱离了观测手段去讨论这个图案「本质上」到底是「工」还是「H」,这个问题却是无意义的。
这里请大家思考一下,日常生活中的颜色该怎么定义?(考虑色盲患者以至其他动物)
操作主义直接作用于概念,它认为概念必须由(唯一的)操作来严格定义。比如说一块石头是硬的,是指用小刀以一定力度割它,不会留下划痕。这和自柏拉图以来的西方主流哲学大相径庭,因此在观念上,它对许多常识发起了挑战,可谓现代哲学之先声。
过去我总认为做事一定要做极致,要心无旁骛,如果投身科学事业,就搞理论物理;致力实业,就搞计算机;人文学科,就搞哲学。但我渐渐发现世界上的事情不是这么简单的,首先任何工作的存在都有意义,其次一元化的知识局限太多,最后悠游于各种知识之间更合我胃口。
生今之世,承诸圣之表章,经群英之辩难,岂不幸乎?
我得以坐集千古之智,折中其间,不亦快哉?