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. Swift 玩转 3D Touch 之 Peek & Pop

    什么是3D Touch 3D Touch 是iOS9之后专为 iPhone6s 机型加入的新特性,这一新技术移植于 Mac Book 上的 ForceTouch 更准确地说应该是 ForceTouch ...

  2. Newtonsoft.Json之JArray, JObject, JPropertyJValue

    JObject staff = new JObject(); staff.Add(new JProperty("Name", "Jack")); staff.A ...

  3. DVR分布式路由

    1. 背景 没有使用DVR的场景: 从图中可以明显看到东西向和南北向的流量会集中到网络节点,这会使网络节点成为瓶颈. 如果启用DVR,如下图: 对于东西向的流量, 流量会直接在计算节点之间传递. 对于 ...

  4. onclik的使用.

    //好笨啊,这个居然忘记了,在行间家onclick事件要加();,addEventListener只要使用函数名字就好了 <!doctype html> <html> < ...

  5. 名词释义(ActiveMQ 和 Webservice)

    ActiveMQ一般用来做消息通信,特别是异步的消息处理,把同步的处理变成异步消息,使得系统解耦.消峰平谷. Webservice则是一种RPC,用来远程调用服务,达到打通系统.服务复用的目的. 其实 ...

  6. 只用js 实现的简约聊天框

    之前看到别人的网页打开后都有个聊天框,可以与同时在网上的网友聊点简单话题,于是便找了个最简单的方法 使用js,客户端 打开页面,不断的给服务器发送请求来得到 新的消息 用JavaScript实现的轮询 ...

  7. [Asp.net mvc] 在Asp.net mvc 中使用MiniProfiler

    MiniProfiler是Stack Overflow团队设计的一款性能分析的小程序.可以对一个页面本身,及该页面通过直接引用.Ajax.Iframe形式访问的其它页面进行监控,监控内容包括数据库内容 ...

  8. 基于SVD的推荐算法

    首先每行减去每列的均值,然后svd分解,得到USV,然后US代表用户矩阵u,SV代表项目矩阵v,那么预测评分为用户均值加上uv. 降维方法扩展性好,不过降维导致信息损失,而且与数据及相关,高维情况下效 ...

  9. spring c3p0数据库连接池连接配置

    c3p0连接池配置 xml文件内容如下: C3P0 通过这些属性,可以对数据源进行各种有效的控制 lc_biz_datasource_c3p0.properties 配置: lc_biz_dataso ...

  10. ZOJ 2110 Tempter of the Bone

    Tempter of the Bone Time Limit: 2 Seconds      Memory Limit: 65536 KB The doggie found a bone in an ...