最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

编程进阶书籍《Unix编程艺术》pdf免费下载

XAMPP下载 admin 66浏览 0评论

Unix编程艺术,教你如何优雅地编程,本书不止于方法,更重乎理念。Unix 拥有强大的生命力,在 MacOS 和 Linux 中都能看到 Unix 的影子。

UNIX哲学

简单来说就是 K.I.S.S(Keep It Simple, Stupid)原则。

1.模块原则:使用简洁的接口拼合简单的组件

  • 计算机编程的本质就是控制复杂度。
  • 用清晰的接口把若干简单的模块组合成一个复杂软件。如此一来,多数问题只会局限于某个局部,那么就还有希望对局部进行改进而不至牵动全身。

 

2.清晰原则:清晰胜于机巧

  • 维护如此重要而成本如此高昂;在写程序时,要想到你不是写给执行代码的计算机看的,而是给人,将来阅读维护源码的人,包括你自己看的。

 

3.组合原则:设计时考虑拼接组合

  • 在输入输出方面,Unix传统极力提倡采用简单化、文本化、面向流、设备无关的格式。

 

4.分离原则:策略同机制分离,接口同引擎分离

  • 我们常用的 MVC ,数据层和逻辑层分离。

 

5.简洁原则:设计要简洁,复杂度能低则低

  •  不为了炫技而炫技。

 

6.吝啬原则:除非别无他法,不要编写庞大的程序

  • 庞大的程序不利于后期维护与扩展。

 

7.透明性原则:设计要可见,以便审查和调试

  • 设计时充分考虑透明性和显见性可以减少后续所花费的时间。

 

8.健壮性:健壮源于透明和简洁

  • 健壮性决定着程序的稳定性

 

9.表示原则:把知识叠入数据以求逻辑质朴而健壮

  • 数据要比编程逻辑更容易驾驭。在设计中,你应该主动将代码的复杂度转移到数据之中去。

 

10.通俗原则:接口设计避免标新立异

  • 最易用的程序就是最切合用户已有知识的程序。

 

11.缄默原则:如果一个程序没有什么好说的,就保持沉默

  • 避免不必要的信息输出,比如日志,减少不重要的日志,那么浏览日志的时候就能很容易找到想要找的信息。

 

12.补救原则:出现异常时,马上退出并给出足量错误信息

  • 软件要尽可能从容的应付各种错误输入和自身的运行错误。但是,如果做不到这一点,就让程序尽可能以一种容易诊断错误的方式终止。

 

13.经济原则:宁花机器一分,不花程序员一秒

  • 随着科技的发展,现在机器的时间相比于程序员时间来说更廉价。

 

14.生成原则:避免手工hack,尽量编写程序去生成程序

  • 机器比人类更善于做的细节工作。

 

15.优化原则:雕琢前先得有原型,跑之前先学会走

  • 先制作原型,再精雕细琢。优化之前先确保能用。

16.多样原则:决不相信所谓的“不二法门”的断言

  • Unix奉行的是广泛采用多种语言、开放的可扩展系统和用户定制机制。

 

17.扩展原则:设计着眼未来,未来总比预想快

  • 要为数据格式和代码留下扩展的空间。

 

Unix编程艺术

1.封装与模块化:

良好的模块不会向外透露自身细节,不会胡乱共享全局数据,模块之间通过定义良好的API来进行通信。

模块分的越小,API的重要性越高,bug的出现率也会降低,但当模块过小时,代码复杂度转移到接口,Bug率也会反增。

2. 紧凑型

掌握一个设计需要记忆的内容越少,则设计的紧凑型越高。即“一个设计是否能装进人脑中的特性”紧凑型不等于“容易学习”,对一些紧凑设计而言(如Lisp),在掌握内在基础概念模型之前,理解该设计相对较难,但是一旦掌握了基础概念,则就不需要记忆太多。

3. 正交性:

每一个动作只做一件事(有时还会做无别的副作用的事),一个属性只会被一个方法改变。老生常谈,每一本好书都在强调这个问题,千万要记住。

4. SPOT原则(Single Point of Truth):即Don’t Repeat yourself。

设计中不应该出现重复的代码,与代码知识重复的文档,太通用的数据结构(既表示返回值也表示错误状态等),模糊不清的数据结构。

5. 紧凑型与强单一中心:

设计应当围绕“解决一个定义明确的问题”的强核心算法进行组织设计。这样在使用该设计时就能不过多的考虑设计使用的算法

设计使用的算法是强大且被证明为正确的算法(称为形式法),与形式法对应的是尝试法(如垃圾过滤算法等就是尝试性算法,不能确保过滤结果绝对正确)。

6. 自顶向下与自底向上的缺点:

自顶向下是从抽象到具体,在实现过程中发现应用逻辑所需要的域原语与真正能实现的域原语无法匹配。理想与现实的差距 -_-

自底向上是从具体到抽象,很可能发现自己做了很多与应用逻辑无关的工作——像造房子,花了大部分时间设计了一堆砖块

通常采用的方法是两者的综合产物,同时兼有两者的代码,当顶层逻辑和底层原语冲突时,就要采用胶合逻辑层来融合冲突。

7. 胶合层:

中和顶层逻辑层与底层原语层之间的冲突。

C语言就是一个薄胶合层的例子,融合顶层逻辑设计并与底层计算机交互。个人认为在操作系统中编写高层应用程序中,对调用系统API的操作而言,系统API就是在应用程序与操作系统之间的胶合层,屏蔽下方的丑陋接口,提供统一且不依赖与硬件的接口。

《Unix编程艺术》pdf免费下载

dy000066

链接: https://pan.baidu.com/s/1JKc1owZUc4OGvfiQGYzhNA

提取码: acsx 复制这段内容后打开百度网盘手机App,操作更方便哦
–来自百度网盘超级会员v6的分享

转载请注明:XAMPP中文组官网 » 编程进阶书籍《Unix编程艺术》pdf免费下载