昨天在推上跟别人争执。缘由是马老师(@horse)转了一个笑话:“一个女人让他的程序员丈夫去商店买东西:你去附近的商店买些面包,如果有鸡蛋的话,买6个回来。20分钟后,这个丈夫买了6个面包回来,他的妻子大吃一惊:你为什么买了6个面包?! 程序员丈夫回答:因为他们有鸡蛋。”她的话是一个有歧义的句子:这句话的前半句是个祈使句,没有什么问题;后半句是个假设复句,省略了主语(是商店有鸡蛋还是面包有鸡蛋),也省略了宾语的中心语(六个鸡蛋还是六个面包),结果造成了生活中的小误会。
我不明白的是,为什么这个笑话要强调她丈夫是程序员。马老师说生活语境中当然会买面包和六个鸡蛋。我不能认同,生活语境也不能排除买六个面包的可能。这个故事的场景完全可能是家里来了两个客人,四人打了会儿麻将,到了饭点女主人让丈夫买面包去,因为丈夫知道家里有几个人吃,所以她交待的是“买些面包”。她特别爱吃有鸡蛋的面包,所以马上又补充说明如果面包里有鸡蛋的话就买六个回来。网友@CatChen认为这句话没有歧义,说这句话的分句方法是“你去附近的商店买些面包;如果有鸡蛋的话,买6个回来。”如果这个标点这么写,当然理解为并列的两句话,可惜原文描述的是一个口语的环境,没有标点可看。
后来真相大白,@zhuoqun 发出笑话的英文原文go to the nearby grocery store to buy some bread. Also,if they have eggs, buy 6.原文是两句独立的话,而且bread是不可数名词,自然只能理解为6 eggs。作为程序员的丈夫依职业习惯理解成了计算机语言的语句if(they have eggs) buy(6)。
歧义是自然语言里常见的语病,也闹出了不少笑话和误会。这个笑话翻译成中文之后,改变了笑话的笑点,引起了一小段争执。