关于Unix哲学

http://www.ruanyifeng.com/blog/2009/06/unix_philosophy.html

这几天,我在看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键。

时间: 2024-10-24 07:04:08

关于Unix哲学的相关文章

Unix 哲学

1.模块原则:使用简洁的接口拼接简单的部件 2.清晰原则:清晰胜于机巧 3.组合原则:设计时考虑拼接组合 4.分离原则:策略同机制分离,接口同引擎分离. 5.简洁原则:设计要简洁,复杂度能低则低 6.吝啬原则:除非确无他法,不要编写庞大的程序. 7.透明性原则:设计要可见,以便审查和调试. 8.健壮原则:健壮源于透明与简洁. 9.表示原则:把知识叠入数据以求逻辑质朴而健壮 10.通俗原则:接口设计要避免标新立异 11.缄默原则:如果一个程序没有什么好说的,就沉默. 12.补救原则:出现异常时,马

根据Unix哲学来编写你的HTML5 Websocket服务器来实现全双工通信

websocketd代表WebSocket的守护进程 websocketd处理的是浏览器和服务器之间的WebSocket连接,它会启动你所指定的服务器端应用来对WebSockets进行处理,然后在浏览器和服务器应用之间进行消息的传递. 在20年前的话,有一项叫做CGI的技术做的工作类似,但现在这项技术将会被websocket所取代. 语言无关 只要你的服务器应用是可以从命令行进行运行的,你就可以为你的服务器应用编写WebSocket终端服务. 无需额外的库的支持 通过WebSocketd进行信息

[译]从LinkedIn,Apache Kafka到Unix哲学

原文链接:http://www.confluent.io/blog/apache-kafka-samza-and-the-Unix-philosophy-of-distributed-data作者:Martin Kleppmann译者:杰微刊-macsokolot(@gmail.com) 当我在为我的书做研究时,我意识到现代软件工程仍然需要从20世纪70年代学习很多东西.在这样一个快速发展的领域,我们往往有一种倾向,认为旧观念一无是处——因此,最终我们不得不一次又一次地为同样的教训买单,这真艰难

Unix哲学

模块原则 (使用简洁的接口拼合简单的部件) 计算机编程的本质就是控制复杂度 要编写复杂软件而又不至于一败涂地的唯一方法就是降低其整体复杂度——用清晰的接口把若干简单的模块组合成一个复杂的软件.如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身. 清晰原则 (清晰胜于技巧) 维护成本是高昂的,在写程序时,要想到你不是写给执行代码的计算机看的,而是给人——将来阅读维护源码的人,包括你自己看的. 在Unix传统中,这个建议不仅意味着代码注释.良好的Unix实践同样信奉在选

Unix编码哲学

这几天,我在看Unix,发现很多人在谈"Unix哲学",也就是开发Unix系统的指导思想. 但是我发现,所有人都同意,"简单原则"----尽量用简单的方法解决问题----是"Unix哲学"的根本原则.这也就是著名的KISS(keep it simple, stupid),意思是"保持简单和笨拙". 下面就是我对"简单原则"的笔记.如果你想最简单地完成一项编程任务,我认为可以从四个方面入手: 1. 清晰原则.

Linux/Unix设计思想

Mike Gancarz 1.Unix开发基于Multics分时操作系统 2.NIH(Not invented here,非我发明) 3.GPL:GUN公共授权协议,适用于软件的法律协议.开源 4.Unix哲学: 1)小即是美:易理解.维护.低消耗系统资源.易于其他工具结合 2)让每一个程序制作好一件事 3)尽快建立原型(prototyping):"第三个系统"概念 4)舍高效而取可移植性 5)使用纯文本文件来存储数据:二进制严格禁止 6)充分利用软件的杠杆效应:借用代码模块;将一切自

Unix编程艺术读书笔记(一)

 Unix编程艺术读书笔记(一)这本书是一位面试官告诉我的,很感谢他的指点,关于面试的详细过程,我想以后再写,当然我也意识到自己的不足,一方面是面试的技巧,还有一方面就是学习的方法.阅读这本书很享受,加上之前的积累,一些疑惑,还有一些基础的不足,在这本书里找到了归宿. 下面,一起来享受这本书的精华吧 Unix诞生与1969年,那时候我们还在闹文革吧,可一个可以改变21世纪甚至更远的未来的操作系统问世,至少现在的Linux是基于Unix的设计哲学.Unix是唯一一个在不同种类的计算机,众多厂商

Unix传奇

转自 http://coolshell.cn/articles/2322.html 了解过去,我们才能知其然,更知所以然.总结过去,我们才会知道我们明天该如何去规划,该如何去走.在时间的滚轮中,许许多的东西就像流星一样一闪而逝,而有些东西却能经受着时间的考验散发着经久的魅力,让人津津乐道,流传至今.要知道明天怎么去选择,怎么去做,不是盲目地跟从今天各种各样琳琅满目前沿技术,而应该是去 —— 认认真真地了解和回顾历史. Unix是目前还在存活的操作系统的元老了,走过了40年的历程(参看<Unix

软件设计的思想与哲学

以下是从比较经典的书籍中摘录了的几条跟软件设计相关的原则和思想,这些思想不仅可以帮助你在设计软件.编写代码时有用,而且正如Mike Gancarz的<Linux/Unix设计思想>的译者序的作者漆犇所说"如果用"武侠"来作一个类比,这本书就好像是一部教你修炼内功的秘笈,无论新手老手,修炼基本内功都是一件必须持之以恒甚至可以毕生研习的事情,而同时我们也要知道,有时候优秀程序员和普通程序员水平差距的关键也正在于此". 摘自Robbins和Beebe的<