UNIX编程艺术

Eric S. Raymond

出版时间

2010-12-31

ISBN

9787121123290

评分

★★★★★
书籍介绍

本书主要介绍了Unix系统领域中的设计和开发哲学、思想文化体系、原则与经验,由公认的Unix编程大师、开源运动领袖人物之一Eric S. Raymond倾力多年写作而成。包括Unix设计者在内的多位领域专家也为本书贡献了宝贵的内容。本书内容涉及社群文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧。

《The Art of UNIX Programming》,简称TAOUP,作者Eric S. Raymond,简称ESR。这大概是计算机类书籍中很少见的一本课外读物。TCP/IP编程之类典型Unix编程书中讲到的东西在这本书里面找不到,所以书里讲到的当然就是别的书里找不到的东西。读者也许需要有相当的Unix背景、或者长期钻研某个专题,才能体会到作者的弦外之音。ESR作为老牌黑客信手拈来的典故,如果不是在Unix里面长期浸淫,大概很难有所共鸣,所以把这当作Unix的一部坊间史话倒也合适。

AI导读
核心看点
  • 阐述Unix设计哲学,如简洁、模块化与组合原则
  • 强调软件设计应追求透明、健壮与接口易用性
  • 探讨开源文化、黑客精神及Unix历史演变
适合谁读
  • 追求代码质量与架构设计的资深程序员
  • 对Unix/Linux系统及开源文化感兴趣的开发者
  • 希望提升软件工程思维与审美能力的从业者
读前提醒
  • 部分技术细节与工具示例可能略显过时
  • 建议结合实践理解抽象的设计原则与哲学
  • 关注设计思想而非具体命令,避免纠结细节
读者共识
  • 经典之作,极大开阔眼界,值得反复阅读
  • 核心在于设计哲学,思想比具体技巧更重要
  • 部分章节冗长,后半部分技术细节略显陈旧

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "模块化代码的首要特质就是封装。封装良好的模块不会过多向外部披露自身的细节,不会直接调用其他模块的实现代码,也不会胡乱共享全局数据。模块之间通过应用程序变成接口(API)——一组严密、定义良好的程序调用和数据结构来通信。这就是模块化原则的内容。 有一种很好的方式来验证API是否设计良好:如果是这用纯人类语言描述设计(不许摘录任何源代码),能否把事情说清楚?养成在编码前为API编写一段非正式书面描述的习惯,是一个非常好的办法。实际上,一些最有能力的开发者,一开始总是定义接口,然后编写解药的注释,对其进行描述,最后才编写代码——因为编写注释的过程就是阐明了代码必须要到的目的。这种描述能够帮助你组织思"
  • "不要重复自身(Don't Repeat Yourself),意思是说:任何一个知识点在系统内都应当有一个唯一、明确、权威的表述。在本书中,我们更愿意根据Brain Kernighan的建议,把这个远程称为“真理的单点性(Single Point Of Truth)“或者SPOT原则 数据结构也存在类似的SPOT原则:”无垃圾,无混淆(No junk, no confusion)“。”无垃圾“是说数据结构(模型)应该最小化,比如不要让数据结构太通用,居然还能表示不可能存在的情况。”无混淆“是指在真实世界中绝对明确清晰的状态在模型中也应该同样明确清晰。简言之,SPOT原则就是提倡寻找一种数据结构,"
  • "我们将使用五种度量标准对接口风格进行分类:简洁、表现力、易用、透明和脚本化能力。 程序接口的简洁是指一个事务处理需要的动作时间及复杂度有较低的上限(可以用击键量、鼠标手势量和需要多少秒的注意力来衡量)。简洁的接口会以相对较少的比特或状态变化包装更多的作用效果。 接口具有表现力是指接口可以触发相当广泛的行为。最具表现力的接口可以是启动程序设计者没有预见的行为组合,并仍然给予用户有用和一致的结果。 接口易用性同接口要求要求用户记忆的东西成反比——为了使用接口,用户需要特别记忆多少东西(命令,鼠标手势,原语概念)。编程语言的记忆负荷愈高、易用性愈低;菜单和屏幕上标记良好的按钮就较为简单。 接口透明度"
  • "同其它美学形式一样,我们需要注意何时设计上的简约已经不再是有价值的自律形式,而开始成为一件伪装的苦行僧外衣——一种实际上把美德作为借口来敷衍工作的纵容方式。"
  • "这些富有哲理的原则决不是模糊笼统的泛泛之谈。在Unix世界中,这些原则都是直接源于实践,并形成了具体的规定,我们已经在上文中阐述了一些。以下例举的只是部分内容: 1、只要可行,一切都应该做成与来源和目标无关的顾虑器。 2、数据流应尽可能文本化(这样可以使用标准工具来查看和过滤)。 3、数据库部署和应用协议应该尽可能文本化(让人可以阅读和编辑)。 4、复杂的前端(用户界面)和后端应该泾渭分明。 5、如果可能,用C编写前,先用解释性语言搭建原型。 6、当且仅当只用一门语言编程会提高程序复杂度时,混用语言编程才比单一语言编程来得好。 7、宽收严发(对接收的东西要包容,对输出的东西要严格)。 8、过滤"
  • "要良好的运用Unix哲学,你就应该不断地追求卓越。你必须相信,软件设计是一门技艺,值得你付出所有的智慧、创造力和激情。否则,你的视线就不会超越那些简单、老套的设计和实现;你就会在应该思考的时候急急忙忙跑去编程。你就会在该无情删繁就简的时候反而把问题复杂化——然后你还会反过来奇怪你的代码怎么会那么臃肿、那么难以调试。"
  • "Unxi哲学是这样的:一个程序只做一件事,并做好。程序要能协作。程序要能处理文本流,因为这是最通用的接口。"
  • "有一种很好的方式来验证API是否设计良好:如果试着用纯人类语言描述设计(不许摘录任何源代码),能否把事情说清楚?养成在编码之前为API编写一段非正式书面描述的习惯,是一个非常好的方法。实际上,一些最有能力的开发者,一开始总是定义接口,然后编写简要的注释,对其进行描述,最后才编写代码——因为编写注释的过程就是阐述了代码必须达到的目的。"
作者简介
《The Art of UNIX Programming》,简称TAOUP,作者Eric S. Raymond,简称ESR。这大概是计算机类书籍中很少见的一本课外读物。TCP/IP编程之类典型Unix编程书中讲到的东西在这本书里面找不到,所以书里讲到的当然就是别的书里找不到的东西。读者也许需要有相当的Unix背景、或者长期钻研某个专题,才能体会到作者的弦外之音。ESR作为老牌黑客信手拈来的典故,如果不是在Unix里面长期浸淫,大概很难有所共鸣,所以把这当作Unix的一部坊间史话倒也合适。
目录
序 xxv
part i 1
第1章 哲学 3
1.1 文化?什么文化 3
1.2 unix的生命力 4

显示全部
用户评论
应当一年一读。
南图 MS没有留下什么东西,需再读
我基本没接触过Unix,书中非常多工具、命令等几乎都不懂,只能匆匆略过,不过看到那些原则性的内容,虽不能明其理,但总会看做“教条”(非贬义)般的来尝试理解,毕竟是大师总结。第一、二part精彩些,本书最后两节最喜欢,突然看到作者坦诚Unix的不足、对Unix有理有据的信心,赞。
当成一部历史书来读比较好。了解Unix的文化,能用上就用,不能用上就了解一下,扩展知识面非常不错。
: TP316.81/1162-1
还挺有意思的
少部分章节能解决一些疑惑
还看不太懂,以后再看一遍
想了解unix的设计思想,但更多的学到了unix历史和哲学层面的东西。Unix的精神:可打印、可调试、可理解。
信息量对一个正常的现代程序员来讲太低了,很多东西现在基本都成共识了。 现在看这种书有种学现代物理从《自然哲学的数学原理》开始的感觉。 上面的评论是刚读了几章时候写的,后面还是值得在无聊的时候去看的
收藏