Linux九大哲学原理,Linux/Unix设计思想(全新阐释开源哲学,Jon “maddog” Hall作序推荐)...

《Linux/Unix设计思想》

第1章  Unix哲学:集思广益的智慧    1

1.1  NIH综合征    2

1.2  Unix的开发    2

1.3  Linux:一个人加上一百万人的智慧    4

1.4  Unix哲学概述    5

第2章  人类的一小步    9

2.1  准则1:小即是美    10

2.2  简化软件工程    12

2.2.1  小程序易于理解    12

2.2.2  小程序易于维护    13

2.2.3  小程序消耗的系统资源较少    14

2.2.4  小程序容易与其他工具相结合    15

2.3  关于“昆虫”的研究    16

2.4  准则2:让每一个程序只做好一件事    16

第3章  快速建立原型的乐趣和好处    19

3.1  知识与学习曲线    19

3.1.1  事实上,每个人有自己的学习曲线    20

3.1.2  大师们也知道,变化不可避免    21

3.1.3  为什么软件会被称为“软件”    21

3.2  准则3:尽快建立原型    23

3.2.1  原型的建立是学习的过程    24

3.2.2  建立早期原型能够降低风险    24

3.3  人类创造的三个系统    25

3.4  人类的“第一个系统”    26

3.4.1  在背水一战的情况下,人类创建了“第一个系统”    26

3.4.2  没有足够的时间将事情做好    26

3.4.3  “第一个系统”是单枪匹马或是一小群人开发的    26

3.4.4  “第一个系统”是一个“精简、其貌不扬的计算机器”    27

3.4.5  “第一个系统”的概念可以激发他人的创造力    28

3.5  人类的“第二个系统”    29

3.5.1  “专家”使用“第一个系统”验证过的想法来创建“第二个系统”    29

3.5.2  “第二个系统”是由委员会设计的    30

3.5.3  “第二个系统”臃肿而缓慢    31

3.5.4  “第二个系统”被大张旗鼓地誉为伟大的成就    32

3.6  人类的“第三个系统”    32

3.6.1  “第三个系统”由那些为“第二个系统”所累的人们创建    32

3.6.2  “第三个系统”通常会改变“第二个系统”的名称    33

3.6.3  最初的概念保持不变并显而易见    33

3.6.4  “第三个系统”结合了“第一个系统”和“第二个系统”的最佳特性    34

3.6.5  “第三个系统”的设计者有充裕的时间将任务做好    34

3.7  Linux既是“第三个系统”,又是“第二个系统”    34

3.8  建立“第三个系统”    35

第4章  可移植性的优先权    39

4.1  准则4:舍高效率而取可移植性    40

4.1.1  下一……的硬件将会跑得更快    41

4.1.2  不要花太多时间去优化程序    42

4.1.3  最高效的方法通常不可移植    43

4.1.4  可移植的软件还减少了用户培训的需求    45

4.1.5  好程序永不会消失,而会被移植到新平台    45

4.2  准则5:采用纯文本文件来存储数据    48

4.2.1  文本是通用的可转换格式    49

4.2.2  文本文件易于阅读和编辑    49

4.2.3  文本数据文件简化了Unix文本工具的使用    49

4.2.4  可移植性的提高克服了速度的不足    51

4.2.5  速度欠佳的缺点会被明年的机器克服    52

第5章  软件的杠杆效应    55

5.1  准则6:充分利用软件的杠杆效应    57

5.1.1  良好的程序员编写优秀代码,优秀的程序员借用优秀代码    57

5.1.2  避免NIH综合征    58

5.1.3  允许他人使用你的代码来发挥软件杠杆效应    61

5.1.4  将一切自动化    62

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

5.2.1  shell脚本可以带来无与伦比的杠杆效应    65

5.2.2  shell脚本还可以充分发挥时间的杠杆效应    67

5.2.3  shell脚本的可移植性比C程序更高    68

5.2.4  抵制采用C语言来重写shell脚本的愿望    69

第6章  交互式程序的高风险    72

6.1  准则8:避免强制性的用户界面    74

6.1.1  CUI假定用户是人类    76

6.1.2  CUI命令解析器的规模庞大且难以编写    77

6.1.3  CUI偏好“大即是美”的做法    78

6.1.4  拥有CUI的程序难以与其他项目相结合    79

6.1.5  CUI没有良好的扩展性    80

6.1.6  最重要的是,CUI无法利用软件的杠杆效应    80

6.1.7  “CUI有什么关系?人们都不愿意打字了。”    81

6.2  准则9:让每一个程序都成为过滤器    82

6.2.1  自有计算技术以来,人们编写的每一个程序都是过滤器    82

6.2.2  程序不创建数据,只有人类才会创建数据    83

6.2.3  计算机将数据从一种形式转换成另一种    84

6.3  Linux环境:将程序用作过滤器    84

第7章  更多Unix哲学:十条小准则    88

7.1  允许用户定制环境    89

7.2  尽量使操作系统内核小而轻量化    90

7.3  使用小写字母并尽量简短    91

7.4  保护树木    93

7.5  沉默是金    94

7.6  并行思考    95

7.7  各部分之和大于整体    97

7.8  寻求90%的解决方案    99

7.9  更坏就是更好    100

7.10  层次化思考    102

第8章  让Unix只做好一件事    105

第9章  Unix和其他操作系统的哲学    113

9.1  雅达利家用电脑:人体工程的艺术    114

9.2  MS-DOS:七千多万用户的选择不会错    117

9.3  VMS系统:Unix的对立面    119

第10章  拨开层层迷雾:Linux与Windows的比较    123

10.1  内容为王,傻瓜    126

10.1.1  视觉内容:“用自己的眼睛去看。”    128

10.1.2  有声内容:“听得到吗?”    129

10.1.3  文字内容:“视频可以终结广播明星,却消灭不了小报。”    131

第11章  大教堂?多怪异    143

第12章  Unix的美丽新世界    153

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/542412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Android] 开源View组件(一)

Material Design系列,自定义Behavior实现Android知乎首页 仿今日头条最强顶部导航指示器,支持6种模式 MagicIndicator系列之一 —— 使用MagicIndicator打造千变万化的ViewPager指示器 Android 优雅的为RecyclerView添加HeaderView和FooterView Android …

sql server修改字段编码格式_关于MySQL如何修改character_set_client的编码问题

问题引入:我们经常会遇到一些向MySQL数据库中插入中文,但是select出来的时候,却发现是乱码的情况。如我们向表a出入这样一段记录:iinsert into a values(‘你好helloworld你好’,’helloworld’);可能当你访问它的时候&#xff0c…

通用apdu指令_8086微处理器中的通用指令格式

通用apdu指令Introduction: 介绍: In this article, we are going to discuss about the 6 general formats of instructions. 在本文中,我们将讨论6种通用指令格式。 One byte instruction: 一字节指令 : This is only one byte long an…

Linux中断不能进行任务调度,关中断是否禁止任务调度?关中断能作为互斥吗?...

今天再看《嵌入式软件系统教程》((美)西蒙 著,陈向群 等译) ,里面讲到关中断会关了任务调度,作者没说原因,我也不知道为什么,所以查了查网络。在这个网址http://www.hqwic.com/bbs/topic.aspx?topicid11253上有一个讨…

Win10系统怎样让打开图片方式为照片查看器

打开注册表编辑器之后,我们双击左侧的目录,依次打开HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft目录,如下图所示。 在Microsoft目录下,我们需要找到Windows Photo Viewer\Capabilities\FileAssociations目录项,直到看到该子…

python爬虫开发 从入门到实战 pdf 谢乾坤_python字符串和整数相互转换的实例分享...

python 字符串和整数的转换方法数字转成字符串方法一:使用格式化字符串:tt322tem%d %tttem即为tt转换成的字符串常用的格式化字符串:%d 整数%f%F 浮点数%e%E 科学计数%g%G e 和%f/%E 和%F 的简写%% 输出%格式化操作符辅助指令符号 作用* 定义宽度或者小数…

c语言插入排序算法_插入排序算法,流程图和C,C ++代码

c语言插入排序算法In the last article, we discussed about the bubble sort with algorithm, flowchart and code. In this article, we are going to discuss about another basic sorting technique i.e. insertion sort. 在上一篇文章中,我们讨论了用算法&…

EF使用CodeFirst方式生成数据库技巧经验

前言 EF已经发布很久了,也有越来越多的人在使用EF。如果你已经能够非常熟练的使用EF的功能,那么就不需要看了。本文意在将自己使用EF的方式记录下来备忘,也是为了给刚刚入门的同学一些指导。看完此文,你应该就学会以CodeFirst的方…

java jar包示例_Java包getImplementationVersion()方法和示例

java jar包示例包类的getImplementationVersion()方法 (Package Class getImplementationVersion() method) getImplementationVersion() method is available in java.lang package. getImplementationVersion()方法在java.lang包中可用。 getImplementationVersion() method …

c语言中字母的定义,c语言字符串定义与初始化 - 且听风吟

字符串的两种定义方式char数组char sa[] “hello world”;char指针char *sp “hello world”;这两种方式都产生了一个”hello world”的字符串常量,字符串常量存储在静态存储区中,静态存储区中的内容在程序运行的整个过程中都存在,而且只存储一份。数组…

python计算两字符串中的位置_python – 计算两个字符串之间距离的算法

是否有任何字符串距离算法没有考虑到单词的顺序?以下算法未提供所需结果(在该示例中,所需结果应为1):import jarojaro.jaro_winkler_metric(uMichael Jordan,uJordan Michael)>>>0.47import LevenshteinLevenshtein.ratio(Michael Jordan,Jorda…

php unset函数_PHP | 使用unset()函数从数组中删除元素

php unset函数Given an array and we have to remove an element from the array. 给定一个数组,我们必须从数组中删除一个元素。 unset()函数 (unset() function) To remove an element from an array, we can use a PHP library unset() function, it accepts th…

vi显示行号

vi显示行号 :set nu 带行号查看,并不改变文件内容:set nonu 取消带行号查看在每个用户的主目录下,都有一个 vi 的配置文件".vimrc"或".exrc"用户可以编辑它,使这些设置在每次启动 vi 时,都有效.例如,加入如下设置行:set nu 显示行号…

对象过滤某个属性 循环 php_37道PHP面试题(附答案)

1、什么事面向对象?主要特征是什么?面向对象是程序的一种设计方式,它利于提高程序的重用性,使程序结构更加清晰。主要特征:封装、继承、多态。2、SESSION 与 COOKIE的区别是什么,请从协议,产生的…

项响琴C语言书籍在线浏览,电子琴 c语言程序

实用#include unsigned char code table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char temp;unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab[]{64021,64103,64260,…

Java File类boolean createNewFile()方法(带示例)

文件类布尔型createNewFile() (File Class boolean createNewFile()) This method is available in package java.io.File.createNewFile(). 软件包java.io.File.createNewFile()中提供了此方法。 This method is used to create a new file by using createNewFile() method a…

oracle   SQL执行过程

1.sql执行过程1>解析(判断对象是否存在,是否有权限查询,语义解析,检查缓存中是否有相同的SQL等等)2>优化(CBO确定优化模式,确定访问路径,联接顺序,过程中通过很多综…

vue-video-player修改src就会报错_4、修改入口点代码

在riscv上电时,会进行CPU自检,然后跳转到bootloader处执行。bootloader设置好kernel的运行环境后,从硬盘加载kernel到内存,最后再跳转到kernel入口地址。我们采用的bootloader为OpenSBI,被加载到0x80000000地址&#x…

数码管超声波c语言黑51,51单片机开发板-超声波测距-数码管显示

《51单片机开发板-超声波测距-数码管显示》由会员分享,可在线阅读,更多相关《51单片机开发板-超声波测距-数码管显示(16页珍藏版)》请在人人文库网上搜索。1、计算机技术系项目工作报告课程名称单片机开发板设计与制作实训班级学号姓名项目名称超声波测距…

java 方法 示例_Java ArrayDeque带有示例的removeFirstOccurrence()方法

java 方法 示例ArrayDeque类removeFirstOccurrence()方法 (ArrayDeque Class removeFirstOccurrence() method) removeFirstOccurrence() method is available in java.lang package. removeFirstOccurrence()方法在java.lang包中可用。 removeFirstOccurrence() method is use…