node-Js描述Unix哲学[转]

前言

到今年,我应该已经接触Linux大约5年了,其中用过大约三年的Ubuntu开发robocup2d,用过kali里面日内网,维护过大约半年的centos7.2服务器。鸟哥的入门书,在大一的时候,特别有兴趣,以为学会了那些命令就掌握了Linux,就可以装逼了。后来才发现,自己还差的很多。

Unix哲学

1
2
3
4
5
6
7
(i) 每个程序只做好一件事情。当需要完成新的任务的时候,写一个新的程序而不是原有程序上添加新功能。

(ii) 让每一个程序的输出可以成为另外一个程序的输入,甚至是未知的程序的输入。不要在输入中混杂着无用的信息。避免严格按列排列二进制的输入格式。不要依赖交互式输入。

(iii) 在设计和编写软件,甚至是操作系统的时候,要尽快地尝试,最好是在几个星期之内就完成。要毫无顾虑地删掉笨拙的地方和重写它们。(译注:深有体会,绝B认同。)

(iv) 使用工具而不是蹩脚的编码来减轻编程任务,即使你知道你最后还是不得不自己来构建这些工具或者要放弃它们。

在X桌面系统(译注:X是Linux下的桌面系统,没有它Linux就没有界面了)Mike Gancarz把Unix哲学总结成了9点:

1
2
3
4
5
6
7
8
9
精小就是优雅。
让每个程序只做好一件事情。
尽快地完成原型。
可移植性高于效率。
用纯文本来存放数据。
使用软件来加强你的优势。
使用Shell脚本来提高利用率和可移植性。
不要迷恋界面。
让每一个程序都成为过滤器。

js描述Unix哲学

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
写只做好一件事的模块。写新的模块而不是增加旧的模块的复杂性。

写鼓励组合而不是鼓励扩展的模块。

写能够处理数据流的模块,因为它是通用的接口。

写对数据来源和去向都无知的模块。

写某块来解决你知道的问题,那么你就可以知道哪些问题你是不知道的。

写小的模块。迅速地迭代。无情地重构。勇敢地重写。

迅速地写模块来满足你的需求,写几个测试来合乎规范。避免臃肿的文档。为你fix掉的每个bug写测试。

能工作优于完美

功能专注优于功能丰富

兼容性优于纯粹性

简单优于任何东西