http://www.iwangzheng.com/

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

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

准则一:小即是美

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

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

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

准则三:尽快建立原型

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

准则四:

舍高效率而取可移植性

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

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

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

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

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

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

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

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

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

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

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

Linux and the Unix Philosophy (Linux/Unix设计思想)的更多相关文章

  1. loadrunner 场景设计-添加Unix、Linux Resources计数器

    场景设计-添加Unix.Linux Resources计数器 by:授客 QQ:1033553122 A.   目的 监控要测试的Unix.Linux服务器的资源使用情况 Linux CentOS为例 ...

  2. 《linux/unix设计思想》读后感

    <linux/unix设计思想>这本书,觉得书的大部分内容都闲扯的太远了,以下简单的总结下本书的核心,帮助大家节省时间和金钱. linux/unix设计思想: 1) 程序应该小而专一,程序 ...

  3. Mike Gancarz:Linux/Unix设计思想

           Mike Gancarz是一位技术布道者. 他是Linux/Unix最基本的倡导者之中的一个,也是最早开发X Window System的先驱.他把一些在Unix/Linux社区里口口相 ...

  4. UNIX 和 LINUX

    UNIX操作系统(尤尼斯),是一个强大的多用户.多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统,最早由KenThompson.DennisRitchie和DouglasMcI ...

  5. Unix和Linux下C语言学习指南

    转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...

  6. 1.Unix,Linux起源与编译原理

    一.UNIX操作系统   作者:丹尼斯.里奇,肯.汤普逊  版权:贝尔实验室  时间:1971  特点:多用户,多任务(多进程),多CPU(多种CPU架构),高安全,高可靠,高性能,高稳定  应用:构 ...

  7. Unix、Linux、Windows操作系统的区别

    1.操作区别 原文地址: https://blog.csdn.net/qq_41026740/article/details/96018808 linux区分大小写,windows在dos界面命令下不 ...

  8. Vi (Unix及Linux系统下标准的编辑器)VIM (Unix及类Unix系统文本编辑器)

    Vi是Unix及Linux系统下标准的编辑器.学会它后,您将在Linux的世界里畅行无阻.基本上vi可以分为三种状态,分别是命令模式.插入模式,和底行模式. vi编辑器是所有Unix及Linux系统下 ...

  9. chmod 权限777 是什么意思(Unix和Linux的各种操作系统下)

    在Unix和Linux的各种操作系统下,每个文件(文件夹也被看作是文件)都按读.写.运行设定权限.例如我用ls -l命令列文件表时,得到如下输出:-rw-r--r-- 1 bu users 2254 ...

随机推荐

  1. 开源分布式实时计算引擎 Iveely Computing 之 WordCount 详解(3)

    WordCount是很多分布式计算中,最常用的例子,例如Hadoop.Storm,Iveely Computing也不例外.明白了WordCount在Iveely Computing上的运行原理,就很 ...

  2. css兼容性的问题

    https://www.douban.com/note/314793848/ 随意的一个博客ie6的兼容 这个博客比较好 http://blog.csdn.net/chuyuqing/article/ ...

  3. Linq表达式开窍

    static IQueryable<T> GetPageList<T,TKey>(Expression<Func<T,bool>> whereLambd ...

  4. C/C++语言算法题——替换

    [问题] Description 给定一个有限长度的非负整数序列.一次操作是指从第一个元素开始,依次把数列中的每个数替换为它右边比它小的数的个数.对该数列不断进行这个操作.总有一个时刻该数列将不再发生 ...

  5. js中的with语句

    javascript中的with语句是什么?       with 语句可以方便地用来引用某个特定对象中已有的属性,但是不能用来给对象添加属性.要给对象创建新的属性,必须明确地引用该对象.   看起来 ...

  6. ORACLE在存储过程中记录日志的处理包

    Java开发过程中一般使用LOG4J来将程序的运行日志记录到文件中,在ORACLE存储过程中也需要记录日志,我将工作中自己整理的一个记录日志的包分享出来,其实很简单,希望大家多提意见. 一.表结构 为 ...

  7. bzoj 1791 DP

    首先对于一棵树我们可以tree_dp来解决这个问题,那么对于环上每个点为根的树我们可以求出这个树的一端为根的最长链,并且在tree_dp的过程中更新答案.那么我们对于环,从某个点断开,破环为链,然后再 ...

  8. BZOJ-3576 江南乐 博弈+优化

    fye测试原题,高一全跪,高二学长除了CA爷似乎都A辣(逃) 3576: [Hnoi2014]江南乐 Time Limit: 30 Sec Memory Limit: 512 MB Submit: 1 ...

  9. 点击div区域以外部分,div区域隐藏

    核心思想: 监听body的click事件,事件触发的时候判断是否发生在弹出的div上,如果不在,关闭弹层 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTM ...

  10. hdu 3068 最长回文子串 马拉车模板

    前几天用后缀数组写过一次这题,毫无疑问很感人的TLE了-_-|| 今天偶然发现了马拉车模板,O(N)时间就搞定 reference:http://acm.uestc.edu.cn/bbs/read.p ...