传世经典书丛:UNIX编程艺术(埃瑞克.S.理曼德)(2)
《传世经典书丛:UNIX编程艺术》主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一EricS.Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。
商家名称 |
信用等级 |
购买信息 |
订购本书 |
|
|
传世经典书丛:UNIX编程艺术(埃瑞克.S.理曼德) |
|
|
|
传世经典书丛:UNIX编程艺术(埃瑞克.S.理曼德) |
|
12.2 先估量,后优化288
12.3 非定域性之害290
12.4 吞吐量和延迟291
12.4.1 批操作292
12.4.2 重叠操作293
12.4.3 缓存操作结果293
第13章 复杂度:尽可能简单,但别简过了头295
13.1 谈谈复杂度296
13.1.1 复杂度的三个来源296
13.1.2 接口复杂度和实现复杂度的折中298
13.1.3 必然的、可能的和偶然的复杂度299
13.1.4 映射复杂度300
13.1.5 当简洁性不能胜任302
13.2 五个编辑器的故事302
13.2.1 ed304
13.2.2 vi305
13.2.3 Sam306
13.2.4 Emacs307
13.2.5 Wily308
13.3 编辑器的适当规模309
13.3.1 甄别复杂度问题309
13.3.2 折衷无用312
13.3.3 Emacs是个反Unix传统的论据吗314
13.4 软件的适度规模316
PartⅢ319
第14章 语言:C还是非C321
14.1 Unix下语言的丰饶321
14.2 为什么不是C323
14.3 解释型语言和混合策略325
14.4 语言评估325
14.4.1 C326
14.4.2 C++327
14.4.3 Shell330
14.4.4 Perl332
14.4.5 Tcl334
14.4.6 Python336
14.4.7 Java339
14.4.8 EmacsLisp342
14.5 未来趋势344
14.6 选择X工具包346
第15章 工具:开发的战术349
15.1 开发者友好的操作系统349
15.2 编辑器选择350
15.2.1 了解vi351
15.2.2 了解Emacs351
15.2.3 非虔诚的选择:两者兼用352
15.3 专用代码生成器352
15.3.1 yacc和lex353
15.3.2 实例分析:fetchmailrc的语法356
15.3.3 实例分析:Glade356
15.4 make:自动化编译357
15.4.1 make的基本理论357
15.4.2 非C/C++开发中的make359
15.4.3 通用生成目标359
15.4.4 生成Makefile362
15.5 版本控制系统364
15.5.1 为什么需要版本控制364
15.5.2 手工版本控制365
15.5.3 自动化的版本控制366
15.5.4 Unix的版本控制工具367
15.6 运行期调试369
15.7 性能分析370
15.8 使用Emacs整合工具370
15.8.1 Emacs和make371
15.8.2 Emacs和运行期调试371
15.8.3 Emacs和版本控制371
15.8.4 Emacs和Profiling372
15.8.5 像IDE一样,但更强373
第16章 重用:论不要重新发明轮子375
16.1 猪小兵的故事376
16.2 透明性是重用的关键379
16.3 从重用到开源380
16.4 生命中最美好的就是“开放”381
16.5 何处找384
16.6 使用开源软件的问题385
16.7 许可证问题386
16.7.1 开放源码的资格386
16.7.2 标准开放源码许可证388
16.7.3 何时需要律师390
PartⅣ391
第17章 可移植性:软件可移植性与遵循标准393
17.1 C语言的演化394
17.1.1 早期的C语言395
17.1.2 C语言标准396
17.2 Unix标准398
17.2.1 标准和Unix之战398
17.2.2 庆功宴上的幽灵401
17.2.3 开源世界的Unix标准402
17.3 IETF和RFC标准化过程403
17.4 规格DNA,代码RNA405
17.5 可移植性编程408
17.5.1 可移植性和编程语言选择409
17.5.2 避免系统依赖性412
17.5.3 移植工具413
17.6 国际化413
17.7 可移植性、开放标准以及开放源码414
第18章 文档:向网络世界阐释代码417
18.1 文档概念418
18.2 Unix风格420
18.2.1 大文档偏爱420
18.2.2 文化风格421
18.3 各种Unix文档格式422
18.3.1 troff和Documenter's Work bench Tools422
18.3.2 TEX424
18.3.3 Texinfo425
18.3.4 POD425
18.3.5 HTML426
18.3.6 DocBook426
18.4 当前的混乱和可能的出路426
18.5 DocBook427
18.5.1 文档类型定义427
18.5.2 其它DTD428
18.5.3 DocBook工具链429
18.5.4 移植工具431
18.5.5 编辑工具432
18.5.6 相关标准和实践433
18.5.7 SGML433
18.5.8 XML—DocBook参考书籍433
18.6 编写Unix文档的最佳实践434
第19章 开放源码:在Unix新社区中编程437
19.1 Unix和开放源码438
19.2 与开源开发者协同工作的最佳实践440
19.2.1 良好的修补实践440
19.2.2 良好的项目、档案文件命名实践444
19.2.3 良好的开发实践447
19.2.4 良好的发行制作实践450
19.2.5 良好的交流实践454
19.3 许可证的逻辑:如何挑选456
19.4 为什么应使用某个标准许可证457
19.5 各种开源许可证457
19.5.1 MIT或者Xconsortium许可证457
19.5.2 经典BSD许可证457
19.5.3 Artistic许可证458
19.5.4 通用公共许可证458
19.5.5 Mozilla公共许可证459
第20章 未来:危机与机遇461
20.1 Unix传统中的必然和偶然461
20.2 Plang:未来之路464
20.3 Unix设计中的问题466
20.3.1 Unix文件就是一大袋字节466
20.3.2 Unix对GUI的支持孱弱467
20.3.3 文件删除不可撤销468
20.3.4 Unix假定文件系统是静态的469
20.3.5 作业控制设计拙劣469
20.3.6 UnixAPI没有使用异常470
20.3.7 ioctl(2)和fcntl(2)是个尴尬471
20.3.8 Unix安全模型可能太过原始471
20.3.9 Unix名字种类太多472
20.3.10 文件系统可能有害论472
20.3.11 朝向全局互联网地址空间472
20.4 Unix的环境问题473
20.5 Unix文化中的问题475
20.6 信任的理由477
附录A 缩写词表479
附录B 参考文献483
附录C 贡献者495
附录D 无根的根:无名师的Unix心传499
Colophon510
索引511
文摘
版权页:
插图:
terminfo本身使用文件系统作为一个简单的层级数据库。这种偷懒相当具有建设性,符合经济性原则和透明性原则。这意味着对文件系统进行浏览、检查和修改的所有普通工具都可以用于对terminfo数据库进行浏览、检查和修改;无需编写和调试专用工具(用于打包和解包单个记录的tic(1)和infocmp(1)工具除外)。这也意味着要加速数据库的访问就得要加速文件系统本身,知道这一点可以使更多应用程序受益,而不仅仅是curses(3)的用户。
这种结构还有另外一种优点,但在terminfo例子中没有展示出来:你开始使用Unix的授权机制而不用自己编写带来额外bu9的访问控制层。这也是采纳而不是对抗Unix“一切皆文件”基本原则的结果。
terminfo目录的布局在大多数Unix文件系统上都很浪费空间。每条目长度通常在400~1400字节之间,但是文件系统通常为每一个非空磁盘文件至少分配4k的空间。出于选择压缩二进制格式的同一个原因,即为了把terminfo使用的程序的启动延时降到最小,设计者接受了这个代价。同一价格所能买到的磁盘容量已经猛增了一千倍,更能证明这个决定的正确。
比较这种格式和Microcsoft Windows的注册表文件所用的格式很有启发意义。注册表是Windows本身及应用程序都使用的属性数据库。所有注册记录都存放在一个大文件中。注册记录既包含文本也包含二进制数据,需要专用的编辑工具。别的不说,这种“一个大文件”的方法还导致了臭名昭著的“注册表蠕变”现象;平均访问时间随着新记录的加入而无限上升。因为系统没有提供标准APl来编辑注册表,应用程序本身使用专用代码编辑注册表,使得注册表极易受损,甚至能够锁定整个系统。
使用Unix文件系统作为数据库是一种策略,对数据库要求简单的其它应用程序可以效仿并从中受益。不这样做的充分理由通常与性能问题无关,更可能的情形是数据库关键字不太适合做文件名。无论如何,这是在原型设计时非常有用的一种很好的快速编程方法。
6.1.7 实例分析:Freeciv数据文件
Freeciv是一款受到Sid Meier经典的Civilization H启发而制作的开源策略游戏。在该游戏中,每个玩家从一群到处流浪的新石器游牧民开始缔造一个文明。玩家的文明可以探索并拓殖世界,参与战争,从事贸易和研究先进技术。有些玩家实际上可能是人工智能;和这些电脑玩家玩单机游戏很有挑战性。如果谁统治了整个世界,或者第一个研制出先进技术从而获得宇宙飞船飞往半人马座阿尔法星(Alpha Centauri),谁就是游戏的胜利者。源码和文档可以在处获得。
相关阅读:
李正元考研数学3:数学复习全书(数学3)
(2013考研英语写作高分突破:热点话题100篇
雇佣兵:揭秘雇佣兵世界内幕(托尼.杰拉蒂著)
资本论1-3(套装全3册)(马克思著)
通往奴役之路(弗里德里希.奥古斯特.哈耶克)
更多图书资讯可访问读书人图书频道:http://www.reAder8.cn/book/