Unix哲学集思广益的智慧.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Unix哲学集思广益的智慧.doc

Unix哲学:集思广益的智慧 这个世纪的哲学会成为下一个世纪的常识——中国幸运饼干 许多人都发明Unix操作系统ATT公司的Ken Thompson,从某种意义上来说,他们是对的。1969年在新泽西州美利山AT&T公司的贝尔实验室,Thompson编写出了Unix的第一个版本。它作为程序的平台运行在Digital PDP-7小型机上。此前,程序运行在由麻省理工学院开发的Multics系统上。 Unix的开发基于Multics系统,最早的一批分时操作系统。在Multics开发之前,大多数计算机操作系统都运行在批处理模式下,迫使程序员们要去大堆的打孔卡片或纸带。在那些日子里,编程是一个耗时力的过程。上帝那些了打孔卡片盒的傻瓜。 Thompson借鉴了Multics的许多特性,并将它们融入到早期的Unix版本,其中最主要的特点就是分时处理。如果没有这种特性,那些在当前Unix系统或是其他操作系统上被人们视作理所当然的大部分功能就会失去它们真正的力量。 Thompson的开发工作Multics的想法入手,对于Unix开发人员而言,这样的套路可谓是驾轻就熟:好的程序员写出的软件,的程序员窃取的软件。当然,我们并没有暗示Thompson是一个小偷。但正是他这种在某些方面避免(Not Invented Here)的意愿和基于别人的成果添加颇具创造性价值的做法,大力推动了这一款历史上最精巧操作系统的出台。我们还将在后面探讨窃取软件的意义。现在只需要记住,一个个大脑想法。 1.1综合征 软件开发人员经常会受到综合征的影响。在查看别人编写的软件解决方案时,他认为自己可以做更好。也许他真的能工作,但他并不知道别的开发人员当时面临的限制条件。他们可能迫于时间或预算的压力,于是,只能集中精力处理这个解决方案中的某特定部分。 NIH综合征的特点就是人们会为了自己能提供卓越的解决方案而放弃其他开发人员已经完成的工作。这种狂妄自大的行径此人并兴趣去维护他人,此为新的高度。,还浪费了大量宝贵时间,这些时间完全可以用提供其他解决方案。更糟的是,新的解决方案有时候只是,从而问题。 偶尔,新的解决方案确实更好,只是因为开发人员早已前人的工作,因此他们可以取其精华,去其糟粕改善解决方案。这是对前人工作的加强和延伸,不是NIH综合征。这借鉴其他开发者的概念是Linux世界中一种做法,当然前提条件是每个人都能得源代码。事实上,在原有软件的基础上进行加强和扩展也是Unix哲学的核心概念之一。 1.2Unix的开发 人们为Unix的可移植性感到惊叹,但一开始它并没有这个特性。Thompson最早是使用汇编语言编写Unix的。1972年,他采用了种可移植的编程语言了代码。很明显,他可能是想利用新硬件的优势。1973年另一位AT&T贝尔实验室的成员Dennis Ritchie对B语言,将其发展为今天全世界程序员为之爱恨交加的C语言。 同样,Thompson了一个后来广为Unix开发人员的例:背水一战的人常常能够编写出伟大的程序。编写应用程序的时候,如果条件(1)它必须满足实际的需要;(2)周围并不存在任何该如何编写此程序的专家;(3)没有足够时间 ,那么,写出优秀软件作品的概率就比较。就好比Thompson的情况,他需要使用一种可移植的语言来编写这个操作系统,因为他必须将他的程序从一个硬件架构迁移到另外的架构;他找不到任何所谓的可移植性操作系统专家;他当然也没有足够的时间去。 不过,Ken ThompsonUnix哲学整体发展的作用有限。虽然他在文件系统结构、管道、I/O子系统和可移植性等领域的设计方面做出了杰出贡献,然而Unix哲学的成型还是众人努力的结果。初期与Unix打交道的每一个人都将自专业领域知识应用在Unix上,帮助塑造了这一哲学理念。下面列出了一些贡献者和他们的主要贡献贡献者 所的贡献 Alfred Aho 文本扫描分析排序 Eric Allman 电子邮件 Kenneth Arnold 屏幕更新 Stephen Bourne Bourne shell命令解释器 Lorinda Cherry 交互式计算器 Steven Feldman 计算机辅助软件工程 Stephen Johnson 编译器设计工具 William Joy 文本编辑,类似C命令语言 Brian Kernighan 正则表达式编程规范计算机排版计算机辅助指令 Michael Lesk 高级文本格式拨号网络 John Mashey 命令解释器 Robert Morris 桌面计算器 D. A. Nowitz 拨号网络 Joseph Ossanna 文本格式语言 Dennis Ritchie C语言 Larry Wall Patch工具Perl语言rn网络新闻

文档评论(0)

ailuojue + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档