出版社: 人民邮电出版社
原作名: Linux and the Unix Philosophy
译者: 漆犇
出版年: 2012-3-28
页数: 168
定价: 39.00元
装帧: 平装
丛书: 图灵程序设计丛书·Linux/UNIX系列
ISBN: 9787115266927
内容简介 · · · · · ·
《Linux\Unix设计思想/图灵程序设计丛书》内容简介:将Linux的开发方式与Unix的原理有效地结合起来,总结出Linux与Unix软件开发中的设计原则。《Linux\Unix设计思想/图灵程序设计丛书》前8章分别介绍了Linux与Unix中9条基本的哲学准则和10条次要准则。第9章和第10章将Unix系统的设计思想与其他系统的设计思想进行了对比。最后介绍了Unix哲学准则在其他领域中的应用。
目录 · · · · · ·
译者序 5
序言 6
前言 10
第1章 Unix哲学:集思广益的智慧 17
1.1 “非我发明”综合症 18
1.2 Unix的开发 19
1.3 Linux: 一个人加上一百万人的智慧 20
1.4 Unix哲学的概况 21
第2章 人类的一小步 24
2.1 “小即是美” 25
2.2 让软件工程变得轻松 27
2.2.1 小程序易于理解 27
2.2.2 小程序易于维护 28
2.2.3 小程序消耗的系统资源较少 28
2.2.4 小程序容易与其它工具相结合 29
2.3 对“昆虫(bug)”的研究 30
2.4 准则2:让每一个程序做好一件事情 30
第3章 快速建立原型的乐趣和好处 33
3.1 知识与学习曲线 34
3.1.1事实是,每个人有自己的学习曲线 34
3.1.2 大师们也知道,变化不可避免 35
3.1.3 为什么软件会被称为“软件”? 36
3.2 尽快建立一个原型 37
3.2.1 原型的建立是一个学习的过程 38
3.2.2 建立早期原型能够降低风险 38
3.3 人类创造的三种系统 38
3.4 人类的“第一个系统” 39
3.4.1 在背水一战的情况下,人类创建了“第一个系统” 39
3.4.2 他没有足够的时间将事情做好 39
3.4.3 人们独自开发出“第一个系统”,或最多也只是一小群人 40
3.4.4 “第一个系统”是一个“精简、中庸的计算机器” 41
3.4.5 “第一个系统”的概念可以激发他人的创造力 41
3.5 人类的“第二个系统” 42
3.5.1 “专家”使用“第一个系统”验证过的想法来创建“第二个系统” 42
3.5.2 “第二个系统”拥有一个设计委员会 43
3.5.3 “第二个系统”是臃肿和缓慢的 43
3.5.4 “第二个系统”被誉为是一个伟大的成就 44
3.6 人类的“第三个系统” 45
3.6.1 “第三个系统”由那些为“第二个系统”所累的人们创建 45
3.6.2 “第三个系统”通常涉及到对“第二个系统”的名称变更 45
3.6.3 最初的概念依然不变,它还是很明显 46
3.6.4 “第三个系统”结合了第一和第二系统的最佳特性 46
3.6.5 “第三个系统”的设计者时间充裕,足以将任务做好 46
3.7 Linux既是“第三个系统”,又是“第二个系统” 47
3.8 建立“第三个系统” 47
第4章 可移植性的高优先级 51
4.1 准则4:舍高效率而取“可移植性” 53
4.1.1 下_的硬件将会跑得更快 53
4.1.2 不要花太多时间去优化程序 54
4.1.3最高效的方法通常不具备可移植性 55
4.1.4 可移植的软件还减少了用户培训的需求 56
4.1.5 好程序永不消失——它们会被移植到新的硬件平台 56
4.2 准则5:采用纯文本文件来存储数据 59
4.2.1文本是一种常见的可转换格式 59
4.2.2文本文件易于阅读和编辑 60
4.2.3文本文件数据简化了Unix文本工具的使用 60
4.2.4 可移植性的增强克服了速度欠佳这一缺点 61
4.2.5速度欠佳这一缺点会被明年的机器克服 62
第5章 软件的杠杆效应! 65
5.1 准则六:充分利用软件的杠杆效应 67
5.1.1 好的程序员编写好的代码;伟大的程序员借用好的代码 67
5.1.2 避免“非我发明(NIH)综合症” 68
5.1.3 允许他人使用你的代码来发挥软件杠杆效应 70
5.1.4将一切自动化 71
5.2 准则7:使用shell脚本来提高杠杆效应和可移植性 72
5.2.1 Shell脚本带给你无与伦比的杠杆效应 73
5.2.2 Shell脚本还可以充分发挥时间的杠杆效应 75
5.2.3 Shell脚本比C程序更具有可移植性 76
5.2.4 抵制采用C语言来重写shell脚本的愿望 76
第6章 交互式程序的高风险 79
6.1 准则8:避免捕获性的用户界面(CUI) 81
6.1.1 CUI假定用户是人类 83
6.1.2 CUI命令解析器的规模总是很大,并难以编写 84
6.1.3 CUI倾向于采用“大即是美”的做法 85
6.1.4 拥有CUI的程序难以与其他项目相结合 85
6.1.5 CUI没有良好的扩展性 86
6.1.6 最重要的是,CUI无法利用软件的杠杆效应 86
6.1.7 “谁在乎CUI程序?人们都不愿意打字了” 87
6.2 准则9:让每一个程序都成为过滤器 88
6.2.1 自有计算技术以来,人们编写的每一个程序都是过滤器 88
6.2.2 程序不创建数据,只有人类才会创建数据 88
6.2.3 计算机将数据从一种形式转换成另一种形式 89
6.3 Linux环境:将程序作为过滤器使用 89
第7章 更多Unix哲学:十条小准则 92
7.1 允许用户定制环境 93
7.2 尽量使操作系统的内核小而轻巧 94
7.3 使用小写字母并尽量简短 95
7.4 保护树木 96
7.5 沉默是金 97
7.6 并行思考(Think parallel) 99
7.7 各部分之和大于整体 100
7.8 寻求90%的解决方案 102
7.9 更糟糕的反而效果更好(Worse is better) 103
7.10 层次思考(Think hierarchically) 104
第8章 让 Unix 做好一件事情 106
8.1 Unix哲学:综述 110
第9章 Unix和其他操作系统的哲学 114
9.1雅达利家用电脑:人类工程的艺术 115
9.2 MS-DOS:七千多万用户的选择不会错 118
9.3 VMS系统:Unix的对立面? 120
第10章 拨开重重迷雾:Linux与Windows 的比较 123
10.1这就是内容,傻瓜! 126
10.1.1视觉内容:“用我自己的眼睛去看” 127
10.1.2有声内容:“听得到吗?” 129
10.1.3文字内容:“视频可以终结广播明星,却消灭不了小报” 130
第11章 大教堂?多么怪异! 140
第12章 Unix的勇敢新世界 149
关于作者 164
· · · · · · (收起)
"Linux/Unix设计思想"试读 · · · · · ·
这个世纪的哲学会成为下一个世纪的常识。 ——中国幸运饼干 许多人都将发明Unix操作系统的殊荣授予AT&T公司的Ken Thompson,从某种意义上来说,他们是对的。1969年在新泽西州美利山AT&T公司的贝尔实验室,Thompson编写出了Unix的第一个版本。它作为Space Travel程序的平台运行在Digital PDP-7小型机上。此前,Space Travel程序运行在由麻省理工学院开发的Multics系统上。 Uni...
丛书信息
喜欢读"Linux/Unix设计思想"的人也喜欢的电子书 · · · · · ·
喜欢读"Linux/Unix设计思想"的人也喜欢 · · · · · ·
Linux/Unix设计思想的话题 · · · · · · ( 全部 条 )



Linux/Unix设计思想的书评 · · · · · · ( 全部 24 条 )


看过《unix编程艺术》可以不用看这本书

Linux/unix设计思想读后感想

Linux and the Unix Philosophy
> 更多书评 24篇
-
cp4 (唯有未知不可摇撼)
在Unix环境中,可移植性的含义通常意味着人们要转而采用shell脚本来编写软件。 . 微优化(micro-optimization):Unix提供了prof和其他一些工具来定位使用最频繁的程序。优化它们就够了。 . 提高性能的另一种方法是研究如何处理数据。 . Unix常用工具及其说明: awk 对字段组织的文本进行操作 cut 从文本中提取特殊的文本列 diff expand 将制表符转换成空格 expr 从一个字串中提取部分字符 fmt 简单的段落格...2013-01-27 14:42 2人喜欢
在Unix环境中,可移植性的含义通常意味着人们要转而采用shell脚本来编写软件。 . 微优化(micro-optimization):Unix提供了prof和其他一些工具来定位使用最频繁的程序。优化它们就够了。 . 提高性能的另一种方法是研究如何处理数据。 . Unix常用工具及其说明: awk 对字段组织的文本进行操作 cut 从文本中提取特殊的文本列 diff expand 将制表符转换成空格 expr 从一个字串中提取部分字符 fmt 简单的段落格式化工具 grep head 显示文件前n行 lex 对文件流进行词法分析 more paste 将单列文本拆分成多列 roff 综合性文本格式化和排版设置工具 sed 非互动形式文本编辑器 sort 对文本排序 tail 显示后n行 test 比较两个字符串 tr 替换文本中选定字符 wc 计算文件行数、字数和字符数 . 如果像取得非凡的成就,你就必须放大自己对这个世界的影响力。 “杠杆效应” . 要么坐看自己的利润空间被压缩为零,要么通过增值标准化应用程序来维持利润空间。 . 软件绝对没有什么神奇公式。任何一个有着合理逻辑思维的人都可以编写出像样的代码。 . 在节省了编写操作系统和应用程序集的成本之后,他们可以集中精力改善自己的应用程序,提供优质、增值的定制解决方案。……经常采取这种运作方式的公司可以出售自己的专业知识,而不是软件本身。软件公司就变成了提供咨询和定制服务的机构,而不是软件的开发商。 . 在我的生命中,我只见证过两个奇迹,核聚变和复利。——爱因斯坦 . 随着计算机技术日益成熟,存在和被感知之间的差距将逐渐扩大。 . 时刻谨记,所有程序都是过滤器。 . 请谨慎使用纸张,它就像是为数据开具的一份死亡证明书。 . 书中主要philosophy: SMALL 小既是美 1THING 1次只做一件事情,把它做好 PROTO 尽快做出原型 FLAT 用出文本保存数据 REUSE 使用别人的工作 SCRIPT 使用脚本,快速开发,增加可移植性 NOCUI 不要强制用户界面(庞大,可移植性和组合性差) FILTER 程序都是过滤器 . custom 允许用户定制自己的环境 kernel 保持内核小而轻 lcase 使用小些字母,尽可能简短 trees 少用纸张 silence 不输出不必要的信息(简洁,在程序组合中尤其不可替代) parallel 并行 sum 部分之和大于整体(易维护,易定制,灵活) 90% 追求90%,不要追求完美 worse 坏就是好 hier 层次化思想 . 你需要记住,将程序的形式表现为一个只有单一输入和单一输出的过滤器之前,你可能还没有完全理解程序的逻辑过程。 . Apache Jakarta:一个优秀的社区开发的例子 . 我们已经从工业时代的大规模生产格局进化到大规模定制的信息时代。P162 . 在推广人类提供的最好的资料的同时,它也暴露出了人类腐化堕落的一面。每次在你以为已看穿了这一切时,网络总是会报复性地给你重重的一击,让你觉得自己是在螳臂当车。 . 请记住,大多数软件只是多方妥协后的成果,从来没有完成的时候,它们只是被发布出来。 . 如果Linux真的成为一款在各方面表现俱佳的系统,那它就面临灭绝的危险。 . “三个系统”思想:人类只能制造出三个系统——第一个系统是个体或少数人创造性的结果,可用、高效,但是很不完整;第二个系统是一个委员会或社区的大规模开发产物,复杂、完整、庞大,被不重要的功能严重拖了后腿;第三个系统是前两者的优美折中,在前二者死掉之后成为经典。 作者认为,Linux系统现在就是第二系统。
回应 2013-01-27 14:42 -
Thinker Wu (技术就是信仰!志在终身探索!)
-
蚂蚁 (为三十而立而奋斗)
+ 小即是美 + 让每个程序只做好一件事 + 尽快建立原型 + 舍高效率,取可移植性 + 使用纯文本文件来存储数据[数据的可移植性] + 充分利用软件的杠杆原理[代码重用的重要性] + 使用shell脚本来提高杠杆效应和可移植性 + 避免强制的用户界面 + 让每一个程序都成为过滤器[只修改而不创造数据] + 允许用户定制环境 + 尽量使操作系统内核小而轻巧 + 使用小写字母,并尽量保持简短 + Online do...2012-07-31 13:43
+ 小即是美 + 让每个程序只做好一件事 + 尽快建立原型 + 舍高效率,取可移植性 + 使用纯文本文件来存储数据[数据的可移植性] + 充分利用软件的杠杆原理[代码重用的重要性] + 使用shell脚本来提高杠杆效应和可移植性 + 避免强制的用户界面 + 让每一个程序都成为过滤器[只修改而不创造数据] + 允许用户定制环境 + 尽量使操作系统内核小而轻巧 + 使用小写字母,并尽量保持简短 + Online document + 沉默是金[是说Error info吧~] + 并行思考 + 各部分之和大于整体[小程序的重要性] + 寻找90%的解决方案[满足90%的用户的需求] + 更坏就是更好[便宜有效的系统更容易的到普及] + 层次化思考
回应 2012-07-31 13:43 -
cp4 (唯有未知不可摇撼)
在Unix环境中,可移植性的含义通常意味着人们要转而采用shell脚本来编写软件。 . 微优化(micro-optimization):Unix提供了prof和其他一些工具来定位使用最频繁的程序。优化它们就够了。 . 提高性能的另一种方法是研究如何处理数据。 . Unix常用工具及其说明: awk 对字段组织的文本进行操作 cut 从文本中提取特殊的文本列 diff expand 将制表符转换成空格 expr 从一个字串中提取部分字符 fmt 简单的段落格...2013-01-27 14:42 2人喜欢
在Unix环境中,可移植性的含义通常意味着人们要转而采用shell脚本来编写软件。 . 微优化(micro-optimization):Unix提供了prof和其他一些工具来定位使用最频繁的程序。优化它们就够了。 . 提高性能的另一种方法是研究如何处理数据。 . Unix常用工具及其说明: awk 对字段组织的文本进行操作 cut 从文本中提取特殊的文本列 diff expand 将制表符转换成空格 expr 从一个字串中提取部分字符 fmt 简单的段落格式化工具 grep head 显示文件前n行 lex 对文件流进行词法分析 more paste 将单列文本拆分成多列 roff 综合性文本格式化和排版设置工具 sed 非互动形式文本编辑器 sort 对文本排序 tail 显示后n行 test 比较两个字符串 tr 替换文本中选定字符 wc 计算文件行数、字数和字符数 . 如果像取得非凡的成就,你就必须放大自己对这个世界的影响力。 “杠杆效应” . 要么坐看自己的利润空间被压缩为零,要么通过增值标准化应用程序来维持利润空间。 . 软件绝对没有什么神奇公式。任何一个有着合理逻辑思维的人都可以编写出像样的代码。 . 在节省了编写操作系统和应用程序集的成本之后,他们可以集中精力改善自己的应用程序,提供优质、增值的定制解决方案。……经常采取这种运作方式的公司可以出售自己的专业知识,而不是软件本身。软件公司就变成了提供咨询和定制服务的机构,而不是软件的开发商。 . 在我的生命中,我只见证过两个奇迹,核聚变和复利。——爱因斯坦 . 随着计算机技术日益成熟,存在和被感知之间的差距将逐渐扩大。 . 时刻谨记,所有程序都是过滤器。 . 请谨慎使用纸张,它就像是为数据开具的一份死亡证明书。 . 书中主要philosophy: SMALL 小既是美 1THING 1次只做一件事情,把它做好 PROTO 尽快做出原型 FLAT 用出文本保存数据 REUSE 使用别人的工作 SCRIPT 使用脚本,快速开发,增加可移植性 NOCUI 不要强制用户界面(庞大,可移植性和组合性差) FILTER 程序都是过滤器 . custom 允许用户定制自己的环境 kernel 保持内核小而轻 lcase 使用小些字母,尽可能简短 trees 少用纸张 silence 不输出不必要的信息(简洁,在程序组合中尤其不可替代) parallel 并行 sum 部分之和大于整体(易维护,易定制,灵活) 90% 追求90%,不要追求完美 worse 坏就是好 hier 层次化思想 . 你需要记住,将程序的形式表现为一个只有单一输入和单一输出的过滤器之前,你可能还没有完全理解程序的逻辑过程。 . Apache Jakarta:一个优秀的社区开发的例子 . 我们已经从工业时代的大规模生产格局进化到大规模定制的信息时代。P162 . 在推广人类提供的最好的资料的同时,它也暴露出了人类腐化堕落的一面。每次在你以为已看穿了这一切时,网络总是会报复性地给你重重的一击,让你觉得自己是在螳臂当车。 . 请记住,大多数软件只是多方妥协后的成果,从来没有完成的时候,它们只是被发布出来。 . 如果Linux真的成为一款在各方面表现俱佳的系统,那它就面临灭绝的危险。 . “三个系统”思想:人类只能制造出三个系统——第一个系统是个体或少数人创造性的结果,可用、高效,但是很不完整;第二个系统是一个委员会或社区的大规模开发产物,复杂、完整、庞大,被不重要的功能严重拖了后腿;第三个系统是前两者的优美折中,在前二者死掉之后成为经典。 作者认为,Linux系统现在就是第二系统。
回应 2013-01-27 14:42
-
Thinker Wu (技术就是信仰!志在终身探索!)
-
避免“强制性的用户界面”(CUI)(其实就是要让你使用目前的控制台命令行终端) CUI的命令解析器庞大得让人难以编写 CUI偏好“大即是美”的做法 拥有CUI的程序难以与其他项目结合 CUI没有良好的扩展性 CUI无法利用软件的杠杆效应 CUI与GUI的关系 (IDE在很多命令行工具,例如cl,lib,link等工具上做了一个抽象,抽象实体是IDE的GUI进程,通过这个GUI进程CreateProcess向命令行工具传递参数,使其工作,从而使用户“看不见”底...
2014-03-20 17:19
避免“强制性的用户界面”(CUI)(其实就是要让你使用目前的控制台命令行终端)
CUI的命令解析器庞大得让人难以编写 CUI偏好“大即是美”的做法 拥有CUI的程序难以与其他项目结合 CUI没有良好的扩展性 CUI无法利用软件的杠杆效应 CUI与GUI的关系
(IDE在很多命令行工具,例如cl,lib,link等工具上做了一个抽象,抽象实体是IDE的GUI进程,通过这个GUI进程CreateProcess向命令行工具传递参数,使其工作,从而使用户“看不见”底层原理,隐藏了复杂性。始终有一天问题会暴露的。) 让每个程序都成为一个过滤器
程序不会创建数据,只有人类才会创建数据
计算机将数据从一种形式转换成了另一种
回应 2014-03-20 17:19
论坛 · · · · · ·
最后一章的页眉印刷错误。 | 来自iLRainyday | 1 回应 | 2012-06-27 |
一本经典之作 | 来自Michael | 2 回应 | 2012-04-08 |
这本书的其他版本 · · · · · · ( 全部2 )
-
Digital Press (2002)7.6分 25人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
谁读这本书?
二手市场
订阅关于Linux/Unix设计思想的评论:
feed: rss 2.0
0 有用 feiandxs 2013-10-04
值得一读——但也只是值得 “一” 读 。 但无论如何还是值得一读的。
0 有用 nwind 2012-04-26
里面提到的“三个系统”和代码借鉴思想很不错,不过unix信徒在鄙视windows的同时,还是应该多关注一下mac啊,个人觉得在gui方面mac的设计思想要远远好过linux
0 有用 Light 2012-05-06
Linux 设计为与程序交互,Windows 设计为与人交互。
0 有用 hoterran 2012-07-15
在unix编程艺术面前,这书显得有点多余了.
3 有用 Fenng 2012-07-15
怒赞,10年前如果能读到就好了。Linux 爱好者必读。
0 有用 IceFalcon 2020-08-25
内容撑不起一本书
0 有用 王培琳 2020-06-07
作为了解Linux设计的讲解。
0 有用 东篱南山 2020-04-12
了解Linux的意识形态
0 有用 Raisu 2020-04-02
没必要硬拔高
0 有用 swift 2020-02-14
老一辈开发者是伟大的,但是也是有局限性的。无意冒犯作者的权威性,和本书所阐述的真知灼见。但不得不说Linux的设计思想,在软件层面看来,仅是to developer的设计哲学。不应该过分泛化和解读。在to developer之外,这些思想的使用和讨论要谨慎。从这个角度看,作者拿windows和linux作比较,使用者不同,时代不同,可比性没有那么大,比较也就没有那么多意义了。