fbpx
维基百科

Unix哲学

Unix哲学是一套基于Unix操作系统顶级开发者们的经验提出的软件开发的准则和哲学。

來源

UNIX 哲學由 Doug McIlroy 在1978年的《Bell System Technical Journal 》中發表:[1]


McIlroy:A Quarter Century of Unix

道格拉斯·麥克羅伊是Unix系统上管道机制的发明者,也是Unix文化的缔造者之一。他归纳的Unix哲学如下:

程序应该只关注一个目标,并尽可能把它做好。让程序能够互相协同工作。应该让程序处理文本数据流,因为这是一个通用的接口

更加简化的版本是:做一件事,做好它。虽然只有第三条是特指Unix系统的,但Unix开发者们常常同时强调这三个信条。

Pike:Notes on Programming in C

羅勃·派克在他的《Notes on Programming in C (页面存档备份,存于互联网档案馆)》中提到了以下格言。虽然这些规则是关于程序设计的,但作为Unix哲学丝毫不为过:

  1. 你永远不会知道你的程序会在什么地方耗费时间。程序的瓶颈常常出现在意想不到的地方,因此在你确信找到瓶颈后再动手优化英语Optimization (computer science)代码吧。
  2. 测试代码。只有在你详细测试了代码,并且发现一部分代码耗费了绝大部分的运行时间时再对程序作速度优化。
  3. 功能全面的算法(fancy algorithm)在处理小规模问题时效率很低,这是因为算法时间效率中的常量很大,而问题往往规模很小。除非你知道你遇到的常常是复杂的情况,否则就让代码丑陋但是简单而高效吧。(即使问题规模确实很大,也首先尝试第二条规则。)
  4. 功能全面的算法比简单的算法更容易产生bug,更难实现。尽量使用简单的算法和数据结构
  5. 数据决定一切。如果选择的数据结构能很好的管理数据,算法部分往往不言自明。记住,数据结构,而非算法,才是编程的关键。
  6. 没有第六条规则。

Pike的第一、二条规则重申了高德纳的著名格言:“过早的优化是一切罪恶的根源。”[2] Pike的第三、四条规则被肯·汤普逊改述成:“疑惑不定之时最适合穷举。”事实上,这两条规则也是KISS原则的具体表现。规则五在之前Fred Brooks人月神话中也被提及。Jon Bentley英语Jon Bentley的《Programming Pearls英语Programming Pearls》中也有一章阐述了相同的设计哲学。此规则作为“如果你的数据结构很好,那么控制它的算法就无关痛痒了”的例子常常被简化成“简约地写代码,聪明地用数据”。第六条规则当然只是Pike针对蒙提·派森之小品Bruces sketch英语Bruces sketch的幽默发挥而已了。

Mike Gancarz的《UNIX哲学》

1994年,X Window系统开发组的成员Mike Gancarz根据他自己的Unix系统经验以及和其他领域使用Unix系统的资深程序员们的讨论结果,写成了The UNIX Philosophy,提出了9条训格之言:

  1. 小即是美。
  2. 让程序只做好一件事。
  3. 尽可能早地建立原型。
  4. 可移植性比效率更重要。
  5. 数据应该保存为文本文件
  6. 尽可能地榨取软件的全部价值。
  7. 使用shell脚本来提高效率和可移植性。
  8. 避免使用可定制性低下的用户界面。
  9. 所有程序都是数据的过滤器。

此外还有十条原则则并不为所有人认同,甚至还是争论的焦点(如宏内核微内核之争):

  1. 应该允许用户定制操作环境。
  2. 让操作系统核心小而轻。
  3. 使用小写字母并尽量简短。
  4. 节约纸张,保护树林。
  5. 沉默是金。
  6. 并行地思考。
  7. 部分加部分大于整体。
  8. 寻找问题的帕雷托法则
  9. 程序随需求而增长(更糟就是更好)。
  10. 层级地思考。

糟糕的更好

Richard P. Gabriel英语Richard P. Gabriel 提议Unix的一个关键优势是他称作“糟糕的更好”的设计哲学。在“糟糕的更好”的设计风格下,接口和实现的简单性比系统的任何其他属性都更重要,包括准确性、一致性和完整性。Gabriel主张这种设计风格拥有关键的进化优势,尽管他也怀疑一些结果的质量。


参考文献

引用

  1. ^ Doug McIlroy, E. N. Pinson, B. A. Tague. (PDF). The Bell System Technical Journal. Bell Laboratories: 1902–1903. 8 July 1978 [2019-10-06]. (原始内容 (PDF)存档于2022-04-27).  参数|journal=与模板{{cite web}}不匹配(建议改用{{cite journal}}|website=) (帮助)
  2. ^ Knuth, Donald: Structured Programming with Goto Statements (页面存档备份,存于互联网档案馆). Computing Surveys 6:4 (1974), 261–301.

来源

  • The Unix Programming Environment by Brian Kernighan and Rob Pike,1984
  • Notes on Programming in C (页面存档备份,存于互联网档案馆),Rob Pike, September 21, 1989
  • A Quarter Century of Unix, Peter H. Salus, Addison-Wesley, May 31, 1994 (ISBN 0-201-54777-5)
  • — from The Art of Unix Programming (页面存档备份,存于互联网档案馆),Eric S. Raymond, Addison-Wesley, September 17, 2003 (ISBN 0-13-142901-9)
  • Final Report of the Multics Kernel Design Project(页面存档备份,存于互联网档案馆) by M. D. Schroeder, D. D. Clark, J. H. Saltzer, and D. H. Wells, 1977.
  • The UNIX Philosophy, Mike Gancarz, ISBN 1-55558-123-4

外部链接

  • Worse is Better(页面存档备份,存于互联网档案馆),Richard P. Gabriel
  • The Rise of "Worse is Better" (页面存档备份,存于互联网档案馆),Richard P. Gabriel

参见

unix哲学, 此條目需要擴充, 2009年9月14日, 请協助改善这篇條目, 更進一步的信息可能會在討論頁或扩充请求中找到, 请在擴充條目後將此模板移除, 是一套基于unix操作系统顶级开发者们的经验提出的软件开发的准则和哲学, 目录, 來源, mcilroy, quarter, century, unix, pike, notes, programming, mike, gancarz的, unix哲学, 糟糕的更好, 参考文献, 引用, 来源, 外部链接, 参见來源, 编辑unix, 哲學由, doug, m. 此條目需要擴充 2009年9月14日 请協助改善这篇條目 更進一步的信息可能會在討論頁或扩充请求中找到 请在擴充條目後將此模板移除 Unix哲学是一套基于Unix操作系统顶级开发者们的经验提出的软件开发的准则和哲学 目录 1 來源 2 McIlroy A Quarter Century of Unix 3 Pike Notes on Programming in C 4 Mike Gancarz的 UNIX哲学 5 糟糕的更好 6 参考文献 6 1 引用 6 2 来源 7 外部链接 8 参见來源 编辑UNIX 哲學由 Doug McIlroy 在1978年的 Bell System Technical Journal 中發表 1 McIlroy A Quarter Century of Unix 编辑道格拉斯 麥克羅伊是Unix系统上管道机制的发明者 也是Unix文化的缔造者之一 他归纳的Unix哲学如下 程序应该只关注一个目标 并尽可能把它做好 让程序能够互相协同工作 应该让程序处理文本数据流 因为这是一个通用的接口 更加简化的版本是 做一件事 做好它 虽然只有第三条是特指Unix系统的 但Unix开发者们常常同时强调这三个信条 Pike Notes on Programming in C 编辑羅勃 派克在他的 Notes on Programming in C 页面存档备份 存于互联网档案馆 中提到了以下格言 虽然这些规则是关于程序设计的 但作为Unix哲学丝毫不为过 你永远不会知道你的程序会在什么地方耗费时间 程序的瓶颈常常出现在意想不到的地方 因此在你确信找到瓶颈后再动手优化 英语 Optimization computer science 代码吧 测试代码 只有在你详细测试了代码 并且发现一部分代码耗费了绝大部分的运行时间时再对程序作速度优化 功能全面的算法 fancy algorithm 在处理小规模问题时效率很低 这是因为算法时间效率中的常量很大 而问题往往规模很小 除非你知道你遇到的常常是复杂的情况 否则就让代码丑陋但是简单而高效吧 即使问题规模确实很大 也首先尝试第二条规则 功能全面的算法比简单的算法更容易产生bug 更难实现 尽量使用简单的算法和数据结构 数据决定一切 如果选择的数据结构能很好的管理数据 算法部分往往不言自明 记住 数据结构 而非算法 才是编程的关键 没有第六条规则 Pike的第一 二条规则重申了高德纳的著名格言 过早的优化是一切罪恶的根源 2 Pike的第三 四条规则被肯 汤普逊改述成 疑惑不定之时最适合穷举 事实上 这两条规则也是KISS原则的具体表现 规则五在之前Fred Brooks的人月神话中也被提及 Jon Bentley 英语 Jon Bentley 的 Programming Pearls 英语 Programming Pearls 中也有一章阐述了相同的设计哲学 此规则作为 如果你的数据结构很好 那么控制它的算法就无关痛痒了 的例子常常被简化成 简约地写代码 聪明地用数据 第六条规则当然只是Pike针对蒙提 派森之小品Bruces sketch 英语 Bruces sketch 的幽默发挥而已了 Mike Gancarz的 UNIX哲学 编辑1994年 X Window系统开发组的成员Mike Gancarz根据他自己的Unix系统经验以及和其他领域使用Unix系统的资深程序员们的讨论结果 写成了The UNIX Philosophy 提出了9条训格之言 小即是美 让程序只做好一件事 尽可能早地建立原型 可移植性比效率更重要 数据应该保存为文本文件 尽可能地榨取软件的全部价值 使用shell脚本来提高效率和可移植性 避免使用可定制性低下的用户界面 所有程序都是数据的过滤器 此外还有十条原则则并不为所有人认同 甚至还是争论的焦点 如宏内核和微内核之争 应该允许用户定制操作环境 让操作系统核心小而轻 使用小写字母并尽量简短 节约纸张 保护树林 沉默是金 并行地思考 部分加部分大于整体 寻找问题的帕雷托法则 程序随需求而增长 更糟就是更好 层级地思考 糟糕的更好 编辑Richard P Gabriel 英语 Richard P Gabriel 提议Unix的一个关键优势是他称作 糟糕的更好 的设计哲学 在 糟糕的更好 的设计风格下 接口和实现的简单性比系统的任何其他属性都更重要 包括准确性 一致性和完整性 Gabriel主张这种设计风格拥有关键的进化优势 尽管他也怀疑一些结果的质量 参考文献 编辑引用 编辑 Doug McIlroy E N Pinson B A Tague Unix Time Sharing System Foreword PDF The Bell System Technical Journal Bell Laboratories 1902 1903 8 July 1978 2019 10 06 原始内容 PDF 存档于2022 04 27 参数 journal 与模板 cite web 不匹配 建议改用 cite journal 或 website 帮助 Knuth Donald Structured Programming with Goto Statements 页面存档备份 存于互联网档案馆 Computing Surveys 6 4 1974 261 301 来源 编辑 The Unix Programming Environment by Brian Kernighan and Rob Pike 1984 Notes on Programming in C 页面存档备份 存于互联网档案馆 Rob Pike September 21 1989 A Quarter Century of Unix Peter H Salus Addison Wesley May 31 1994 ISBN 0 201 54777 5 Philosophy from The Art of Unix Programming 页面存档备份 存于互联网档案馆 Eric S Raymond Addison Wesley September 17 2003 ISBN 0 13 142901 9 Final Report of the Multics Kernel Design Project 页面存档备份 存于互联网档案馆 by M D Schroeder D D Clark J H Saltzer and D H Wells 1977 The UNIX Philosophy Mike Gancarz ISBN 1 55558 123 4 Basics of the Unix Philosophy外部链接 编辑Worse is Better 页面存档备份 存于互联网档案馆 Richard P Gabriel The Rise of Worse is Better 页面存档备份 存于互联网档案馆 Richard P Gabriel参见 编辑 软件主题 信息技术主题 计算机科学主题 Unix体系 英语 Unix architecture 更糟就是更好 Plan 9 from Bell Labs 英文写作指南 The Elements of Style The UNIX HATERS Handbook 英语 The UNIX HATERS Handbook 软件工程 取自 https zh wikipedia org w index php title Unix哲学 amp oldid 71695511, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。