`
nba520pz
  • 浏览: 21744 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
最近访客 更多访客>>
文章分类
社区版块
存档分类

关于Unix哲学

阅读更多
先讲两个很老的小故事。

第一个故事。

有一家日本最大的化妆品公司,收到了用户的投诉。用户抱怨买来的肥皂盒是空的。这家公司为了防止再发生这样的事故,很辛苦地发明了一台X光检查器,能够透视每一个出货的肥皂盒。

同样的事故,发生在一家小公司。他们的解决方法是买一台强力的工业电扇,对着肥皂盒猛吹,被吹走的就是空肥皂盒。

第二个故事。

美国太空总署(NASA)发现在太空失重状态下,航天员无法用墨水笔写字。于是,他们花了大量经费,研发出了一种可以在失重状态下写字的太空笔。猜猜看,俄国人是怎么解决的?(答案在本文结尾处。)

=====================

这几天,我在看Unix,发现很多人在谈“Unix哲学”,也就是开发Unix系统的指导思想。

Wikipedia上列出了好几个版本,不同的人有不同的总结。发明管道命令的Doug McIlroy总结了三条,而Eric S. Raymond则在The Art of Unix Programming一书中,一口气总结了17条(英文版,中文版)。

但是我发现,所有人都同意,“简单原则”——尽量用简单的方法解决问题——是“Unix哲学”的根本原则。这也就是著名的KISS(keep it simple, stupid),意思是“保持简单和笨拙”。



下面就是我对“简单原则”的笔记。如果你想最简单地完成一项编程任务,我认为可以从四个方面入手:

1. 清晰原则。

代码要写得尽量清晰,避免晦涩难懂。清晰的代码不容易崩溃,而且容易理解和维护。重视注释。不为了性能的一丁点提升,而大幅增加技术的复杂性,因为复杂的技术会使得日后的阅读和维护更加艰难。

2. 模块原则。

每个程序只做一件事,不要试图在单个程序中完成多个任务。在程序的内部,面向用户的界面(前端)应该与运算机制(后端)分离,因为前端的变化往往快于后端。

3. 组合原则。

不同的程序之间通过接口相连。接口之间用文本格式进行通信,因为文本格式是最容易处理、最通用的格式。这就意味着尽量不要使用二进制数据进行通信,不要把二进制内容作为输出和输入。

4. 优化原则。

在功能实现之前,不要考虑对它优化。最重要的是让一切先能够运行,其次才是效率。“先求运行,再求正确,最后求快。”(Make it run, then make it right, then make it fast.)90%的功能现在能实现,比100%的功能永远实现不了强。先做出原型,然后找出哪些功能不必实现,那些不用写的代码显然无需优化。目前,最强大的优化工具恐怕是Delete键。

==================

答案是,俄国人用铅笔。

(完)
分享到:
评论

相关推荐

    unix 哲学.pdf

    Unix 哲学 Unix 哲学 Unix 哲学 Unix 哲学 Unix 哲学 Unix 哲学 Unix 哲学

    UNIX编程哲学-中文版

    ”这句话深刻揭示了理解和掌握UNIX哲学的重要性。 #### 2. 文化的传承与学习 - **文化与传统**:UNIX不仅是一种操作系统,更代表了一种文化。书中提及的“文化”、“艺术”和“哲学”,指的是在UNIX社区中流传下来...

    The Art of Unix Programming.pdf

    《Unix编程艺术》不仅仅是一本技术手册,它更像是一部关于Unix哲学的教科书。通过阅读本书,读者不仅可以学到具体的编程技能,还能深入了解Unix背后的思想和文化。对于任何希望成为优秀程序员或系统管理员的人来说,...

    unix基本哲学

    #### 一、Unix哲学的起源与发展 Unix哲学的形成深受Ken Thompson的影响,他是Unix操作系统的早期开发者之一。在他的思考过程中,如何设计一个简洁且高效的服务接口成为了核心议题。随着时间的推移,Unix文化逐渐...

    unix-philosophy:为 YYCJS 所做的关于模块化和 unix 哲学的演讲

    以下是关于 Unix 哲学和模块化编程的详细解释: 1. **Unix 哲学的基本原则:** - **小而专注**:每个程序应只做一件事,并做好。例如,Unix 提供了众多小型工具,如 grep、awk 和 sed,它们各自专注于特定任务,...

    Unix编程艺术/Unix环境高级编程(第二版)/Unix网络编程(第二版)

    从基础的Unix哲学到高级的系统编程,再到复杂的网络通信,构成了一个完整的知识体系。通过深入学习,读者不仅可以提高在Unix环境下的编程能力,还能建立起对操作系统和网络通信的深入理解,这对于任何在Unix或类Unix...

    unix程序员手册.zip_UNIX_unix程序员手册

    通过《UNIX程序员手册》,新手不仅可以学习到UNIX系统的基础知识,还能深入理解其设计哲学和工作原理,为后续的系统级编程和高级应用开发打下坚实基础。这本书不仅是入门工具,更是长期参考资料,值得反复研读和实践...

    unix实验4 编制模拟“五个哲学家”问题的程序

    实验题目涉及的是经典的“五个哲学家问题”,这是一个用于并发控制和多线程同步的...通过模拟“五个哲学家问题”,学生可以深入理解这些问题并学会如何使用基本的Unix系统调用来解决这些问题,而不依赖高级的并发特性。

    LINUX+UNIX设计思想

    《Linux\Unix设计思想/图灵程序设计丛书》内容简介:将Linux的开发方式与Unix的原理有效地结合起来,总结出Linux与Unix软件开发中的设计原则。《Linux\Unix设计思想/图灵...最后介绍了Unix哲学准则在其他领域中的应用。

    unix

    Unix哲学鼓励小而专的工具,通过管道(pipe)和重定向(redirect)将它们组合起来解决复杂任务。例如,可以使用`find`查找文件,然后通过管道将其结果传递给`xargs`执行其他操作,如删除找到的文件。这种工具组合的...

    UNIX编程艺术The Art of Unix Programming

    《UNIX编程艺术》不仅仅是一本关于Unix编程的书籍,它更是关于一种思维方式和文化传承的探讨。通过深入了解Unix的设计哲学和文化背景,读者不仅能够更好地掌握Unix本身的技术细节,还能够将这些原理应用到其他软件...

    unix 教学课件 unix 教学课件 unix 教学课件

    2. **Unix哲学**:Unix的设计理念,包括“做一件事并做好它”、“小即是美”以及“工具间的可组合性”。 3. **Unix shell**:讲解Bash或其他shell(如Csh、Ksh)的使用,包括命令行界面、命令语法、脚本编写等。 4...

    Unix philosophy

    **Unix哲学** Unix哲学是操作系统设计的核心理念,它源自于1960年代末到1970年代初开发的Unix系统。这个哲学强调的是简洁、模块化和可组合性的原则,旨在创建高效、可靠且易于维护的软件系统。Unix哲学的影响深远,...

    UNIX程序设计艺术.doc

    设计部分展开 UNIX 哲学的原则进入到关于设计和实现的更细节的建议。工具集部分集中在 UNIX 为帮助你解决问题所提供的软件。社区部分是关于那些使 UNIX 文化在它所涉及的方面如此高效的人与人的交往和协定。 这本书...

    UNIX传奇.pdf

    下面是本文的大纲: 上篇 Unix起源 Unix分裂 Unix的法律纠纷 GNU开源组织 Linux横空出世 Linux今天的领袖 ...Unix与黑客文化 Unix的历史教训 Unix 家族谱 ...Unix的影响和哲学 Unix痛恨者手册

    unix+linux设计思想

    unix+linux设计思想,包含一整套unix设计哲学

    [Unix编程环境]The.unix.programming.envirment中文版

    无论是对于想要了解UNIX哲学的学习者,还是希望深入UNIX编程的专业开发者,本书都是一本不可多得的学习资源。 在学习UNIX和C语言的过程中,实际操作和动手编程同样重要。本书鼓励读者在计算机上实践所学知识,并...

Global site tag (gtag.js) - Google Analytics