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. Unity Networking API文档翻译(一):Networking概述

    写在翻译前的话:      我使用过Photon,研究过Ulink这些Unity提供的多人在线游戏服务器组件,这些商业组件虽然很好很强大.但是对于一个独立开发者来说,4000多软妹币还是点多.总想找一 ...

  2. maven integration with eclipse 3.0.4 does not work with NTLM proxy

    Recently downloaded m2e(maven integration with eclipse). The version is 3.0.4. My environment is beh ...

  3. jsonp的后台怎么返回去数据

  4. 获取Web.config配置节

    static string GetAppSetting(string key) { var appSetting = ConfigurationManager.AppSettings[key]; if ...

  5. Linux各目录作用

  6. 工作的思考十七:工作中容易犯的错误 - Delay

    其实IT是一个很严谨的行业,不管是从代码角度还是从日常的工作分配都是按计划来的. 从今年年初到现在,在我的工作中出现了两次“Delay”,第一次不以为然,虽然上司也找过我谈话,但没意识到问题的严重性. ...

  7. UITableViewdataSourse的协议所有方法

    UITableViewDataSource @required- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection ...

  8. 超市管理系统—NABCD模型

    1) N (Need 需求) 需求分析: 超市的数据和业务越来越庞大,而计算机就是一种高效的管理系统,这就需要我们把超市的管理与计算机结合起来,从而超市管理系统应运而生.依靠现代化的计算机信息处理技术 ...

  9. 使用background和background-image对CSS优先级造成影响

    在写一个关于背景图的CSS时候发现一个奇怪的现象, 原图: 如下代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitiona ...

  10. 使用ssis完成excel的数据导入

    SSIS(SQL Server Integration Service)是从MS SQL 2005开始引入的,是一种ETL(Extract Transform Load)工具,SSIS比普通的ETL更 ...