一个很有哲学意味的接口设计

工程和哲学,通常很难联系到一起。现实生活中,也确实如此。但如果能在忙碌的工程中,拿出一些时间,也可以在繁杂的代码中,看到一丝哲学的火花。

作为曾经流行的技术,COM已经渐渐远离了人们的视野。然而作为曾经以此谋生的我,还时常会想起它。特别是那个意味深长的接口,IUnknown。

这是一个非常有意思的设计。一个编程用的接口,回答的,却是每个人心中最深沉的问题。这个接口,只有三个API。一个叫AddRef,一个叫Release。这两个API回答的,是生与死的问题。另一个API叫做QueryInterface,它回答的,则是“我是谁”。

人们用天数计算着自己的生命,IUnknown使用引用计数来决定自己的去留。所以,也不奇怪人们把“AddRef”和“Release”称为“生命”周期管理。

而“QueryInterface”,则是一个接口区别另一个接口的标志。COM世界中,一切都是IUnknown,彼此的不同,便只由QueryInterface的不同的回答来决定。如果说“AddRef”和“Release”赋予了IUnknown生命,那么QueryInterface便赋予IUnknown不同的生存价值。由是,便有了你我之分。如果将接口,看成不同的职责,那QueryInterface区别的,就如同职场上不同的职位。如果讲接口看成生活中的不同角色,那QueryInterface所区别的,就是父母,兄弟,夫妻等不同的身份。

如果你对人生有更深的思考,也许会问,那“什么是我”。也许有人会说,“我是谁”和“什么是我”不是同一个问题吗?真的么?我们每天辛勤工作,在公司,是不同的职责,不同的分工。我是工程师,他是老板等等。这是“我是谁”,但都是工程师,什么才是区分你我的根本呢?即使是同一个工作,也可以不同的人来做,哪一个是我?我们追求的所谓个性,无论是简单的IRect,IElement,还是复杂如IOleDocumentView,哪一个是真正的我所独有?都不是。我们工作,不喜欢别人仅以职能或结果来评价我们,因为那不是真正的“我”。我们生活,朝九晚五,吃喝拉撒,久而久之,都会感慨缺少真正属于自己的一片天地。而那缺少的所谓“自己”,究竟是什么?QueryInterface回答的,或者说界定的,是我所有,不是我。关于这个“什么是我”的问题,COM世界给出了坦诚的回答。这回答,便蕴含在IUnknown的名字里:我不知道。

不知道,其实是个不错的回答。因为不知道,才使得IUnknown的继承者,无所不能。而IUnknown本身,则颇有道可道,非常道的意味。

这就是一个程序员,在养家之余,还很享受的阅读代码的一小段思考。

入秋

当阳光温暖地照到我身上
它不说自己已急行甚远
当百合散发郁郁清香
它不说自己已忍耐隆冬
我走在初秋的街道
看缤纷落叶默道着再见
一阵风起
刮散在视野的边界
我最羡慕候鸟
因为它们远行
却不需笨重的行囊
唯有一丝留恋
化作了空中的一周盘旋

Secure和Safe

从这篇博客开始,起一个新的系列,名叫“语言杂谈”。

不知何故,本人对语言有着天生的兴趣。特别喜欢了解不同语言的异同。为了此博客能经常更新,把平时想到的语言相关的片段写到这个小系列里面。

第一篇的话,就从平时想过很多次的两个词语的比较开始:Secure和Safe。

对很多人来说,Secure和Safe都翻译成“安全”。然而,这两个词的含义很不相同,也不能互换。了解这个细节,对正确使用和理解相关的概念很有帮助。

比如这样一个句子:张三现在很安全。应该如何翻译?

在讨论答案之前,我们应该讨论一个学外语的很重要的命题。那就是,学习外语的时候,我们会发现很多只说母语时,不会注意到的现象和细节。这其实也是学习外语的一个重要乐趣和收获。它可以加强我们思维的细致程度,看到由于语言习惯,带来的思维的局限性。就这个问题而言,笔者要首先指出,这个句子:张三现在很安全,本身是一个有歧义的句子。它可以做两种解释。第一种,就是张三遭到仇家寻仇,被四处追杀。现在跑到一个秘密的地方,所以“张三现在很安全”。这是一种解释。另一种则是,张三以前是一个暴脾气,动辄就打伤别人。后来,张三真心忏悔,不再动手了。这时,我们也会说,“张三现在很安全”。这两个用法,就是“Secure”和“Safe”的主要区别。

由此可见,“安全”一词至少含有两种不同的意思,这两种意思在英文中,用两个不同的词去表达。一个是“无意外”的意思,对应“Secure”。另一个是“不伤害”的意思,对应“Safe”。

情景演习:一架飞机在着陆时出现故障,好在机组人员处置得当,所有的乘客都安全地离开飞机,进入机场。这时,作为乘客,我会说“现在安全了”。这句话如何表达?其实“Secure”和“Safe”都可以,但是主语不同。一个应该说“We are secure now”,另一个应该说“It’s safe now”。第一句的意思是说我们大家不会再有意外了。第二个句子是说,现在的情形不会再伤害我们了。第二句的主语是“it”,也就是需要根据上下文推断。

知道了这个重要区别,就可以正确使用和理解这两个词。并且,由此也可以知道,为什么“国家安全”应该叫做“National Security”,为什么计算机安全问题也被成为“Computer Security”。而“工作安全”被称为“Occupational Safety”,等等。最后,经济生活中的“证券”是被叫做“Security”的,大约也代表了某种愿景吧。

永远

昨天北京时间的晚上,姥爷走了。

又一次,没能说再见。

小的时候,姥爷一直是个怪脾气的老头儿。家里的晚辈,对他很是尊敬,却不亲近。就这样,过了很多年。

很多年以前,姥爷生病,医院下过病危通知书。那大约是三十多年了。后来,家里更加注意改善姥爷的伙食。每天都有牛奶鸡蛋。可能真的是有效果,竟是再也没犯过什么毛病。一直到最近几年。

五年前,姥姥意外地离开了。此后,姥爷的身体逐渐走下坡路。医院去的越来越频繁,一年多了能去好几次。脾气依旧是奇怪的。我其实在想,是否真的有人了解他在想什么吗?奇怪的脾气,时常引起家人的不安宁。在此起彼伏的吵闹中,日子一天一天的转过。直到再也转不动的那一天——昨天。

一辆长了锈的28车
手里放不下的啤酒瓶
不服输的象棋
和身上锁住许多不舍的钥匙
全都舍下了

身体不好时,和很多老头儿一样,姥爷会坐在阳台的窗前,望着窗外,许久都不作声。我一直不知道他们在看什么。我只是知道,这就是人老了的样子。也许,只有等我自己坐在那个位子时,才能真正的了解吧。

今天,那个位子空了。

令人悲伤的,不是分离,而是永远。

写些文字,纪念那个怪脾气的老头儿。这才发现,想起的,却是他难得的笑容。