zoukankan      html  css  js  c++  java
  • Linux and the Unix Philosophy (Linux/Unix设计思想)

    http://www.iwangzheng.com/

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

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

    准则一:小即是美

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

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

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

    准则三:尽快建立原型

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

    准则四:

    舍高效率而取可移植性

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

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

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

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

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

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

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

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

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

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

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

  • 相关阅读:
    Fastboot的使用简单教程
    Spoj 2713 Can you answer these queries IV 水线段树
    互联网金融中的各条路子
    MySql事务无法回滚的原因
    Html 语法学习笔记二
    谈长耗时任务的优化
    收藏:左路Deep Learning+右路Knowledge Graph,谷歌引爆大数据
    [ javascript ] 司徒正美的fadeOut-fadeIn效果!
    顺序队列
    Linux下oracle开机自启动服务
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/3649086.html
Copyright © 2011-2022 走看看