Unix编程艺术之第一部分

第一部分 上下正文

第一章.哲学

文化?什么文化?

这一本有关于Unix编程的书籍,但是我们反复提到’文化’,'艺术’和’哲学‘。如果你不是一个程序员,或你是一位很少接触过Unix的程序员,对这些词语可能奇怪。然而Unix有一种文化,它具有一种独特的编程艺术;文化承载着一种强有力的设计哲学。理解这些传统文化会帮助你构建出更好的软件,即使你不在Unix平台上开发。

每种工程设计分支都有技术文化。在大多数工程领域中,这个领域不成文文化与(随着经验增长,甚至更重要)官方手册和教科书一样重要,这种文化成为从业人教育的一部分。高级工程师发展出大量的隐性知识,这些知识通过(正如佛教禅宗所说的)“经文之外的一种特殊传播”传递给下级。

软件工程通常对这种规则是一种例外,技术改变的非常快,软件环境来的快,消失的也快。技术文化是很脆弱的和短暂的。然而对于这个例外是有例外的。很少的软件技术能够持久地发展强有力的技术文化,独特的艺术和代代工程师传承的相关设计理念。

Unix文化就是其中之一。互联网文化是另一种文化,或者在21世纪,可以说是同一种文化。从1980初以来,这两种文化越来越难分离,在这本书中我们不会特别努力去分开的。

Unix的持久性

Unix诞生于1969年,从那时开始连续的生产使用。以行业标准来看,这是几个地质时代,比PC、工作站、微型处理器、甚至视频显示终端还要老,和第一个半导体存储器同时出现。在如今所有生产分时系统中,仅有IBM的VM/CMS可以声称存活的时间更长,Unix机器可以提供成百上千倍服务时间,实际上,Unix可能支持比所有其他分时系统加起来还要多的计算。

相比其他操作系统,Unix在更广泛的机器上得到应用。从超计算机到手持设备和嵌入式网络硬件,通过工作站、服务器、PC和小型计算机,Unix可能比其他三种操作系统加起来都还要多体系结构和更多的古怪的硬件。

Unix支持令人难以置信的广泛使用。没有任何其他操作系统能同时作为研究工具、技术定制应用程序的友好主机、商用现成商业软件的平台和互联网的重要组成部分技术而闪耀。

自从Unix诞生以来,每年有人满怀信心的预测,Unix会枯萎,或者被其他操作系统排挤出去。然而,Unix,在它今天的化身中,如Linux、BSD、Solaris和MacOS X以及其他六个变种,似乎比今天更强。

至少Unix的核心技术之一—C语言–已经在其他地方广泛的使用。实际上很难想象没有C作为普遍存在的系统编程语言来进行软件工程。Unix也引入了无处不在的树形文件名称空间和目录节点、已经连接程序的管道。

Unix的耐久性和适应性令人震惊。其他技术像蜉蝣样来来去去。机器的能力已经提高了千倍,语言在改变,行业实践已经经历多次变革–并且Unix仍然存在,依然在生产,支付订单,仍然赢得了地球上许多最好、最聪明软件技术专家的忠诚。

计算能力与时间的指数曲线以及软件开发的相应的速度所带来的后果之一是,人们所知道的东西50%会在每18个月就会过时。Unix并没有消除这个现象,但是在包含这种现象方面做的很好。

唯有不变的基础–语言、系统调用、工具调用–可以使用多年,甚至几十年。在其他地方,不可能预测什么是稳定的,甚至整个操作系统停止使用。在Unix下,瞬时知识和长久知识之间有相当明显的不同,人们可以提前知道(大约90%都是确定的),当他们学习时,什么东西可能会落到哪个类别。因此就是Unix 命令。

Unix的稳定性和成功在很大程度上归功于其固有的优势,这要归功于Ken Thompson、Dennis Ritchie、Brian Kernighan、Doug McIlroy、Rob Pike以及早期Unix开发人员在一开始所做的设计决策;一遍又一遍被证明是正确的决定。但这也要归功于早期围绕Unix发展起来的设计理念、编程艺术和技术文化。从那以后,这个传统就一直在与Unix的共生关系中成功地传播着。

反对学习Unix文化的案例

Unix耐久性和技术文化当然是那些已经喜欢Unix感兴趣的,同时也是技术历史学家感兴趣的。但是Unix最初作为中型和大型计算机的分时操作系统的应用程序正在迅速退出历史迷雾,被个人工作站所消灭。对被微软主导的主流商业桌面市场上,微软能取得成功还是有怀疑的空间。

局外人常常把Unix当作学术玩具或黑客的沙箱而不屑一顾。一个著名的论战,Unix Hater者的手册》(加芬克尔),遵循一个敌对的Unix本身一样古老,在写它的信徒崇拜的宗教狂和输家。当然,AT&T、Sun、Novell以及其他商业供应商和标准协会在错误定位和错误营销Unix方面一再犯的巨大错误已经成为传奇。

甚至从Unix世界内部来看,Unix似乎在普遍性的边缘徘徊了很长一段时间,以至于人们怀疑它永远不会真正实现它。一个持怀疑态度的外部观察者的结论可能是,Unix太有用而不能消亡,但太笨拙而不能从后面的房间里跳出来;一个永久的操作系统。

最让怀疑论者困惑的是Linux和其他开源的unix(如现代的BSD变种)的兴起。事实证明,Unix的文化非常重要,即使十年来供应商管理不善也无法遏制它。今天,Unix社区本身已经控制了技术和营销,并且正在迅速而明显地解决Unix的问题(我们将在第20章更详细地研究这种方法)。

Unix出了什么问题

对于可以追溯到1969的一个设计来说,在Unix中识别明显错误的设计选择是非常困难的。有个几个很受欢迎的候选方案,但是每个都仍然是激烈辩论的主题,不仅仅在Unix爱好者之间,而且在思考设计操作系统的更广泛群体中也是如此。

Unix文件没有超过字节级的结构。文件删除是不可撤销的。Unix的安全模型可以说太原始。工作控制太拙劣。事物有太多种类的名称。拥有一个文件系统是一个错误的选择。我将在20章讨论这些技术问题。

但是,这个对Unix最持久反对可能是它的一个理念的特性的结果,这个特性最初由X窗口系统设计者明确提出。X努力提供机制,不是策略,支持一组非常通用的图像操作,并将有关工具包和界面外观(策略)的决策推迟到应用级别。Unix的其他系统级别服务也显示出类似的趋势,最终行为的选择被尽可能推向用户。Unix用户可以在多个shell中进行选择。Unix程序通常提供许多行为选项和精心设计的首选工具。

这中趋势反映了Unix作为主要为技术用户设计的操作系统的传统,并且用户比操作系统设计人员更了解他们自己的需求。

但是机制-非策略方法的代价是,当用户可以设置策略时,用户必须设置策略。非技术用户经常发现Unix丰富的选项和接口风格势不可挡,并退回到至少假装提供简单性系统中。

在短期内,Unix的自由放任方法可能会失去很多非技术用户。然而,从长期来看,这种“错误”可能会带来一个关键的优势——因为政策的寿命往往很短,而机制往往很长。今天界面外观的时尚常常成为未来进化的死胡同(使用过时的X工具包的人会告诉你一些感觉!)因此,另一方面,“机制,而不是策略”哲学可能使Unix能够在竞争者更多地将其联系在一套策略上或已经从人们视野退化的界面选择之后很久,Unix才更新了它的相关性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值