|
the Art of Unix Programming
第一章 哲学
目录:
文化?何言文化?
Unix生命力
反对者
Unix之失道
Unix之得道
基本Unix哲学(尚未完成)
一句话Unix哲学
应用Unix哲学
态度决定一切
文化?何言文化?
这是一本关于Unix编程的书,然而此刻我们正反复于“文化”“艺术”以及“哲学”等词眼上。如果你不是程序员或者不了解Unix世界,这看上去会很奇怪。但是Unix确实存在着某种文化;一种脱颖而出的编程艺术;一套强大的设计理念。理解这些传统,有助于你开发更好的软件即使不是在Unix平台下。
没一个工程或设计领域都有其特定的技术文化。多数时候,这些不成文的传统和教科书以及标准文档有着同等地位并通常一齐教给受育者,随着受育者在刚行业经验的积累,这些传统会变得比教科书更重要。高级工程师会留下大量的“碣语”给他们的后辈,就像禅师授业那般。
软件业却成为了这一惯例的例外;技术的高速发展、软件环境的频繁更迭,使得技术文化的影响是如此无力而短暂。然而也有一个例外中的例外。很少的一部分软件拥有足够强大的生命力,使得它的技术文化、个性和设计理念在一代代工程师间得以流传至今。
Unix文化正是这些绝对例外中的一员。Internet则是另外一位(在21世纪此二者实际上是一体的)。Unix和Internet在19世纪80年代早期便彼此共生无法分辨,本书也不打算强行拆分她们。
Unix生命力
Unix诞生于1969年,并在此后的日子里不断有新版本推出。对计算机工业标准来说,这是久远的地质年代-比PC、工作站、微处理器或图形显示终端都要早。在那个年代第一个半导体存储器刚刚被研制出来。Unix至今保持着“服役时间最长的分时操作系统”的记录。
Unix已经运行在极广泛的机器上,没有如何操作系统比得过她。从超级计算机到手持或嵌入式网络设备,无论是工作站、服务器、PC还是迷你型计算机,Unix支持的硬件比任何其它三种操作系统之和还要多。
Unix应用之宽泛令人惊异,没有哪个操作系统能同时拥有如此多的功能并与之争辉。一个位定制技术应用的友好主机,一个电子商务软件平台,一个Internet上的关键节点。
可以肯定地预言,Unix终会凋谢,或被遭到其它的操作系统排挤。尽管这些新兴的系统还处于幼年。当今Unix的化身Linux、BSD、Solaris、MacOS X以及超过十数种的其它Unix变种正变得日益强大。
Robert Metcalf[以太网络的发明者]曾说过:如果将来有什么会取代以太网,那么它的名字就是以太网。因此以太网是不可战胜的(注)。Unix经历了类似的变革。 -Ken Thompson
(译者注,原文:Robert Metcalf [the inventor of Ethernet] says that if something comes along to replace Ethernet, it will be called “Ethernet”, so therefore Ethernet will never die. Unix has already undergone several such transformations. -- Ken Thompson)
Unix的一个核心技术-C语言-就已经到处生根。事实上人们很难想象在缺少C语言的情况下进行系统级编程。Unix还引进了现在被普遍使用的树状文件系统(包含目录节点以及用于连接程序的管道。)
Unix的生命力和适应性确实教人称奇。而其它的技术则犹如蜉蝣般过过往往。机器被加强,语言产生了变化,业界的规范在历经数次变革后也面目全非-然而Unix仍在那儿,仍在被生产,销售并忠诚地服务于运行在其上地一些极好的软件。
业界种流传着一个结论,每18个月50%已知的西西将成为历史。Unix并没有违背这一现象,而且做了很好的工作来包容它。一些基础性且不易变的,如语言、系统调用和工具的习惯用法人们可以一直使用数年甚至十几年。而其它部分(包括这个操作系统)则很难确定其稳定性。Unix里,稳定性知识和临时性知识有着明显区别,人们可以很容易知道(90%的可靠)哪些知识可能会在学完之后就过时。
Unix的稳定和成功很大程度上归功于其与生俱来的品质。为了一个决定,Ken Thompson,Dennis Ritchie,Brian Kernighan,Doug McIroy,Rob Pike和其它早期的Unix开发者反复验证知道最终被证明合理有效。正像这些归结于设计哲学、编程艺术和技术文化那样,这些传统在Unix世界得以持续传播。
注:事实上,以太网已经两次被同一个名称的技术取代。一次电缆被赋予一倍的双绞线;另一次是Gbit以太网。(译者注:前一次是指由10Mbps的以太网过渡到100Mbps的快速以太网。事实上以太网的技术进步并没有停留在Gbps的水平上。)
反对者
对于Unix的拥护者和科技史学家来说,Unix的生命力和技术文化是他们津津乐道的。但是Unix的最初应用:一个为大中型计算机准备的通用分时操作系统却因为个人工作站的出现而渐渐推出历史的舞台。这样,他们有足够的理由怀疑Unix能否在目前由 M$统治的主流商务桌面上重铸辉煌。
外行人通常把Unix视为学院派和计算机黑客们的玩具而拒绝使用她。一个著名的论战,《Unix Hater's Handbook》(Garfinkel),以其反对阵线把Unix开发、使用者描述为某种有着怪诞思想的邪教组织。而一些大型的商业公司或其它组织如AT&T,Sun,Novell等所犯的错误也增加了Unix的传奇成分。
甚至在Unix世界内部,Unix也因长期受到不断增长的置疑而显得摇摇欲坠,人们怀疑Unix是否还有存在的必要。一个持怀疑态度的观察家的结论是:Unix因为太有用了而不能消失;但是Unix也过于复杂使其不能出新。
使怀疑论者迷惑的不是别的,正是Linux和其它开源Unix(如现代BSD变种)的崛起。Unix的文化被证明是有活力的,所以尽管经历了十年错误,它也没有消亡。现在Unix社区重新控制了它自己的技术和市场,并快速而有效的解决着Unix的问题。(本书第20章有详细描述)
Unix之失道
在设计Unix的1969年,人们很难确定一个设计是否有明显的错误。一个技术的候选方案通常有很多,社区中不仅仅有Unix爱好者,也包括了所有对操作系统本身进行思考和设计的人们。
Unix文件在字节层之上是无结构的。文件的删除动作是不可逆的。Unix的安全模型也显得过于原始。作业控制十分拙劣。此外事物的名称、术语很是繁杂。这个文件系统或许就是一个错误的选择。我们将在20章讨论这个问题。
但是也许反对Unix最长的是其哲学某个特性所产生的结果,这一哲学体系由X window系统第一次明确提出。X试图提供“机制”而不是“策略”,它支持一个非常通用的图形操作集合并且听从应用程序层的调遣(策略)。Unix其它系统级的服务也有相似的结构;最终的行为特征最大程度的交给用户决定。Unix用户可以在多种shell目前选择他们喜欢的那种。Unix应用程序通常提供很多的选项和复杂却不失精美的设施。
这种结构使得Unix的继承者多为有一定技术水准的人,这种结构也使得用户可以比操作系统的设计者更清楚他们自己的需求。
这个原则由贝尔实验室的Dick Hamming(注)明确提出,当时(上世纪50年代)计算机是缺稀且昂贵的。在用户编写他们代码的开放式计算站里,计算是强制性的。毕竟用错误的方式解决正确的问题比用正确的方法解决错误的问题好得多。-Doug McIlroy
(译者注:原文:This tenet was firmly established at Bell Labs by Dick Hamming who insisted in the 1950s when computers were rare and expensive, that open-shop computing,
where customers wrote their own programs, was imperative, because “it is better to solve the right problem the wrong way than the wrong problem the right way.”)
然而这种结构的代价是:当用户可以为自己定制策略时,他们“必须”部署策略。不懂技术的终端用户常常会被Unix丰富的选项和接口风格吓到。
咋一看,Unix的这种极端自由性会失去很多的终端用户。但从长远考虑,这个“错误”会带来一个极大的好处-因为策略是短命的而机制相对长寿。现今流行的通常就是明日黄花(去问问那些最早使用X工具的用户,他们会告诉你真实感受!)。所以“提供机制而非策略”是使得Unix可以在竞争对手疲于更换界面时总是得以创新(注)。
注:Yes,the Hamming of 'Hamming distance' and 'Hamming code'
注:Jim Gettys,X的缔造者之一(对本书的完稿也提供了帮助)在《双刃剑》中沉思了X的这种风格。为了其中的建议和Unix经验,这篇文章非常值得一读。 |
|