- UNIX 的特点:
- Everything (including hardware) is a file.
所有的事物(甚至硬件本身)都是一个的文件。
- Configuration data stored in text.
以文本形式储存配置数据。
- Small, single-purpose program.
程序尽量朝向小而单一的目标设计。
- Avoid captive user interfaces.
避免过于复杂花哨的界面。
- Ability to chain program together to perform complex tasks.
将几个程序连结起来,处理大而复杂的工作。
- Doug McIlroy(UNIX 管道的发明人、UNIX 传统的奠基人之一) 认为 UNIX 的哲学是这样的:
- Write programs that do one thing and do it well.
写一次只做一件事,并能把这件事做好的程序。
- Write programs to work together.
写互相协作(调用)的程序。
- Write programs to handle text streams, because that is a universal interface.
写处理文件流的程序。因为这(处理文件流)是一个通用接口。
- 《The Art of Unix Programming》 总结了下面这些哲学:
- Rule of Modularity: Write simple parts connected by clean interfaces.
模块化原则:写简单的,能够用清晰的接口连接的代码。
- Rule of Clarity: Clarity is better than cleverness.
清晰化原则:清晰的代码要好过“聪明”的代码。
- Rule of Composition: Design programs to be connected to other programs.
组件化原则:设计可以互相关联(拆分)的程序。
- Rule of Separation: Separate policy from mechanism; separate interfaces from engines.
隔离原则:策略和机制分离,接口和引擎分离。
- Rule of Simplicity: Design for simplicity; add complexity only where you must.
简洁原则:设计力求简洁,直到无法更简洁。
- Rule of Parsimony: Write a big program only when it is clear by demonstration that nothing else will do.
小巧原则:不要写大的程序(模块、方法)。除非很明显的,没有别的办法可以完成。
- Rule of Transparency: Design for visibility to make inspection and debugging easier.
透明原则:为可见性设计,使检查和调试更容易。
- Rule of Robustness: Robustness is the child of transparency and simplicity.
健壮性原则:健壮性是透明和简单的孩子。
- Rule of Representation: Fold knowledge into data so program logic can be stupid and robust.
陈述性原则:将认知转化为数据。所以,程序的逻辑可以是愚蠢(简单易懂)的,健壮的。
- Rule of Least Surprise: In interface design, always do the least surprising thing.
最少的惊讶原则:在界面设计中,少做令人惊讶的设计。(不要标新立异)
- Rule of Silence: When a program has nothing surprising to say, it should say nothing.
沉默原则:如果一个程序没有什么特别的东西要说(输出),那就什么都别说。
- Rule of Repair: When you must fail, fail noisily and as soon as possible.
修复原则:如果必须失败,那就尽早。
- Rule of Economy: Programmer time is expensive; conserve it in preference to machine time.
节约原则:程序员的时间是非常宝贵的。程序员的时间(编程时间)优于机器时间。
- Rule of Generation: Avoid hand-hacking; write programs to write programs when you can.
生产原则:避免手工编程。如果可以的话,编写可以编写程序的代码。
- Rule of Optimization: Prototype before polishing. Get it working before you optimize it.
优化原则:建立原型后再去修正。当它能正常工作后,再去优化它。
- Rule of Diversity: Distrust all claims for “one true way”.
多样性原则:怀疑所有所谓的“不二法门”。
- Rule of Extensibility: Design for the future, because it will be here sooner than you think.
扩展原则:为未来设计,因为未来来的比你想象的要早。
- Mike Gancarz (X Windows 的设计者)给出了下面九条哲学思想:
- Small is beautiful.
小即是美。
- Make each program do one thing well.
让每个程序(方法)只做一件事情,并把它做好。
- Build a prototype as soon as possible.
尽早建立原型。
- Choose portability over efficiency.
注重可移植性,而非效率。
- Store data in flat text files.
将数据存储在存文本文件中。
- Use software leverage to your advantage.
利用软件来发挥你的优势。
- Use shell scripts to increase leverage and portability.
使用Shell脚本提高编程的手段和程序的可移植性。
- Avoid captive user interfaces.
避免过于复杂花哨的界面。
- Make every program a filter.
使每个程序(方法)称为一个过滤器(筛选器)
refs