GUI哲学
前些日子,看了Tinyfool老师的一篇文章《开发人员为何应该使用 Mac OS X 兼 OS X 小史》,才恍然Mac系统可不仅仅是UI上与Windows大相径庭,而是自底而上的区别。这种区别渗透到了整个系统框架的设计理念中。
简单概括下我的认识:相比Windows和Linux两大阵营,Mac OS X除了『品味』上的优势之外,最重要的两点是:1.对GUI应用程序脚本化的有力支持;2.能实现GUI程序之间快捷的进程间通信。
GUI程序之间的进程间通信
IPC对于多用户分时系统的重要性不言而喻。其中从用户视角来看,如何让多个程序之间能更友好的交互是非常重要的。C++语言虽然面向对象,但在底层来看,其实依旧是冷冰冰的汇编代码,没有更整体的对象环境支撑,而以此构建的Linux也无法对进程间通信形成强力的支持。相比之下,乔布斯的团队借助于SmallTalk的消息传递机制创造了Objective-C,并搭建了自己的运行时和类库框架Cocoa,让系统无论从自身的迭代开发还是应用开发,得到了很大提升。值得一提的是,Objc虽然最近才由于iOS、Mac平台的开发的火热进入热门编程语言的行列,其实它比Java还早十年出生。像最近由于Rails框架而火爆起来的Ruby和持续坚挺的Java,都从SamllTalk中吸收了很多设计理念,就别提C#了。
GUI应用程序的脚本化
图形的交互方式确实人性化,但应用程序脚本化控制的方式在一些特定的场景里也可以大大提高生产效率。比如微软Office的VBScript。即使是一般用户,不愿意自己写脚本,脚本化的方式也能让开发人员更方便快捷的开发出新颖的功能和产品。
让应用全部统一开放脚本很难,特别是从市场的层面而言,如果没有一直贯彻这一战略,造成平台很多应用不支持这一功能,则很难推广。苹果九十年代已经开始积累这方面的基础,有先见之明。