UNIX编程艺术

雷蒙德

出版时间

2006-07-31

ISBN

9787115149862

评分

★★★★★

标签

计算机

书籍介绍

《UNIX编程艺术》(英文版)内容涉及领域文化、软件开发设计与实现,覆盖面广、内容深邃,完全展现了作者极其深厚的经验积累和领域智慧,是UNIX领域中一本不朽的经典名著。

AI导读
核心看点
  • UNIX哲学:程序只做一件事并做好,协作处理文本流
  • 模块化原则:封装良好,通过API通信,避免全局共享
  • KISS与SPOT:避免重复,知识唯一权威表述
适合谁读
  • Unix/Linux程序员和系统开发者
  • 对编程文化与方法论感兴趣的软件工程师
  • 追求简约与正交设计理念的架构师
读前提醒
  • 先理解Unix历史与文化背景,再深入原则
  • 关注实践案例与API设计先写注释的方法
  • 结合自身项目反思模块化与紧凑性设计
读者共识
  • 经典不朽,深刻影响编程思想与方法论
  • 贯穿KISS原则,技术之上是艺术与哲学
  • 受益良多,读后对设计有本质升华

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

精彩摘录
  • "模块化代码的首要特质就是封装。封装良好的模块不会过多向外部披露自身的细节,不会直接调用其他模块的实现代码,也不会胡乱共享全局数据。模块之间通过应用程序变成接口(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编写一段非正式书面描述的习惯,是一个非常好的方法。实际上,一些最有能力的开发者,一开始总是定义接口,然后编写简要的注释,对其进行描述,最后才编写代码——因为编写注释的过程就是阐述了代码必须达到的目的。"
用户评论
软件是技术革命,改变了全世界的格局。这本书告诉你这个历史悠久的系统是怎么设计开发的。 做软件的人容易迷失在技术细节中,这本书恰到好处的告诉你,技术之上是什么。
UNIX:贵圈真GEEK
没有具体的技术,art and philosophy
其实这是一本关于编程方法论的书,且并不仅限于 Unix/Linux。
受益良多
估计是脑子进了水,选了个英文,看了一点点。
操作系统的思想和文化带来这个设计的风格。网络对于软件开源起到很大作用,文化随机漂移和传统就是先入为主,统一性来自:一切皆文件模型和在此基础上的管道概念,由系统工具和API塑造的模型反渗到应用程序。
影响我编程思想的书之一. KISS
Smell like ghetto
收藏