王筝的博客
ruby学习

大约30年前,当美国人边开着大型轿车边享受着其他国家民众的羡慕目光时,
大众汽车却在美国开展了一项主题为“小即是美”的广告营销活动。
那时,美国人对大轿车的迷恋世人皆知,这家德国汽车制造厂商的举动似乎有些不合时宜。
然后意想不到的事情发生了,石油价格的上升及经济状况的制约,这些昔日的可笑小车
变成了时髦的必需品。

这带来了Unix哲学的第一条准则。

准则一:小即是美

如果你准备开始编写一个程序,请从小规模开始并尽量保持,无论是设计简单的过滤器、
图形软件包还是庞大的数据库,你应该尽自己所能将它的规模将至最小。

准则二:让每个程序只做好一件事

最好的程序应该将全部能量只用来执行单一任务,并且将它完成的很好。
程序被加载到内存中,行使完它的功能,然后退出,让下一个目标单一的程序开始运行。

准则三:尽快建立原型

“尽快”就是越快越好,火速进行。可以先花少量时间规划这个应用程序,然后便可以创建原型。
开始编写代码吧,就好像你的生命完全取决于这个原型一样。
建立早期原型能够降低风险,越早开始建立原型,就离可发布产品的状态越近。原型可以显示哪些想法可行,最重要的是,
哪些是不可行的。

准则四:

舍高效率而取可移植性

软件开发过程涉及无数选择,每个选择都意味着各种妥协。其中,程序员要面对的一个艰难的选择就是:高效率与可移植性。
高效率的软件非常有吸引力,然而,可移植性意味着软件能够运行在许多不同的机器上,这使得人们考量的天平向可移植性这一端倾斜。
这其中资金层面的因素要大于技术层面:在今天的计算环境中,那些只能运行在一种体系架构上的软件,其潜在市场竞争力会大打折扣。

准则五:采用纯文本文件来存储数据

“纯文本文件”的意思是你必须将所有数据都存储为文本,用Unix世界的行话来说,数据文件应该只包括一组由换行符或“newline”
分割的字节流。尽管我们可以将数据保存在任何存储介质上,但是想让数据保持活力并拥有价值,
就必须时不时的移动。文本是通用的可转换格式,文本文件易于阅读和编辑。

准则六:充分利用软件的杠杆效应

无论你有多么聪明过人、精力充沛或者锐意进取,在人生的漫漫长途中,一个人的精力就只有这么多。如果想取得非凡的成就,
你就必须放大自己对这个世界的影响力。想编写大量软件,最好的方法就是借用别人的成果。良好的程序员编写优秀代码,
优秀的程序员借用优秀代码。允许他人使用你的代码来发挥软件的杠杆效应。

准则七:使用shell脚本来提高杠杆效应和可移植性

如果你想充分利用软件的杠杆效应,就需要学习如何有效使用shell脚本。shell脚本由一个或者多个语句组成,通过调用本地程序、
解释程序和其他shell脚本来执行任务。他们将每一条命令都加载到内存执行,并且间接调用这些程序。顶级shell程序根据语句的种类,
可以选择是否要等待带个命令完成它的执行任务。如果想营造一种他人播种,你来收货的局面。shell脚本就提供了这样的机会,
它能够集成他人的努力成果以满足自己的目标。你不需要重复编写shell脚本中使用的大部分代码,因为别人早已帮你完成了这份工作。

准则8:避免强制的用户界面CUI

CUI是一种与应用程序进行交互的模式,它位于系统最高命令解释器之上。一旦你在命令解释器中调用了一个应用程序,
那么直到应用程序退出之前,都无法再与命令解释器进行交互。CUI命令解释器的规模庞大且难以编写。拥有CUI的程序
难以与其他项目相结合,没有良好的扩展性,并且无法利用软件的杠杆效应。

准则九:让每个程序都成为过滤器

自有计算技术以来,人们编写的每一个程序都是一个过滤器。每个程序,不管它简单还是复杂,都以某种形式接受数据作为它的输入,
并产生一些数据作为输出。至于程序过滤器如何处理提交给它的数据,则要看程序的算法。程序不创建数据,只有人类才创建数据。