Unix编程艺术心得

这本书被称为Unix世界"教外别传"的心法,此言不虚!

大家都公认主流的IT文化就是Unix的文化。此书对这种原来靠言传身教和源代码流传的文化进行总结。是一本深入到文化精髓,值得仔细反复玩味的经典。
同时书中还有很多坊间故事,对Unix历史发展历史的梳理,案例的分析等。有助于了解历史的脉络,深入理解文化精髓的奥秘。

翻阅此书不时能发现一些或让人眼前一亮,或茅塞顿开,或醍醐灌顶,或沉思良久,亦或莞尔一笑之处。

现将印象深刻的几点做一小结。

* 明示胜于隐喻

这是一条Unix发展过程中非常重要的原则。在实现方面体现在采用文本化的协议,文本化的配置,反对专有软件。提倡能够使用最普通的文本工具即可读取与修改;也体现在提倡代码的开源(提高对程序员用户的透明度),反对二进制的封闭。

这种文化的内涵乍看不过尔尔,细想其实不然。比如没有受过unix文化熏陶的人(比如在下)在通讯协议上,往往会采用基于二进制的格式。而二进制的协议导致不得不依靠专有工具才能阅读与调试,大量专用代码与工具的产生。稍有不慎,常常会落得不可扩展的结果。而文本化的协议,几乎避免了绝大部分这种情况。从HTTP协议及大量基于HTTP协议的扩展协议可见一斑。

这种文化不尽在Unix上发扬光大,而且在其之上发展起来的编程语言也深受影响。比如所谓的Python之禅中就明确“ 明了胜于晦涩”。

* 数据重于算法

"程序=数据结构+算法"是一个众所周知的公式。这一公式虽然有名却未必获得了真心实意的应用。现代主流编程思想更多的体现在OO方面,在算法方面。而对数据的关注较少。

先辈们已经在结构方面发展出大量方法和技术,比如数据流图,数据字典,ER,甚至关系型数据库等等等等。这些方法可以非常自然,非常直接的反映出现实世界的模型。有时候比OO更加直接与明朗。

举个例子,在OO方法里,有一个非常著名的通过找名词,动词来确定对象及其方法的技术。然而真正运用这些方法的话,就会发现找出来的对象往往莫名其妙,名称怪异。甚至会陷入到一个词究竟是名词、动词还是形容词的纠结当中。这完全是把宝压在了**从不精确的自然语言提炼精确的OO表达之上**。语言是否能够完全描述现实都不一定,从其上提炼出来的对象就更可想而知了。

换个角度,如果从数据的视角来看,几乎能够将现实世界的某些模型直接映射到数据上来。这个过程精确而直接。

* 现有实现再有标准

标准的制定必须要有实现的验证。据说X标准是与其实现同步编写的,在此之后标准几乎没有变化。

* 除非必要,绝不写庞大的软件

一个软件应该专注于其所面对的核心功能,其他功能尽量能够借助已有的工具/库来完成。提倡编写短小精悍,功能足够的小型软件。除非别无选择。

这一原则背后还有Unix通过管道,重定向等基础设施构建起来的上下文环境管理的支撑。这两者相辅相成,最终让Unix成为一个最好用的开发平台。也有助于培养程序员协作,共享,专注的思维。

* 烂代码就要扔掉

众所周知,维护烂代码远比重写编写的成本要高。在Unix文化里对烂代码从不姑息,现在流下来的代码都是经过历史考验遗留下来的。都是非常优秀的代码。

这一原则给我们大胆重构,重写提供了底气。但动手之前,一定要有足够的理由认定这是维护代价高昂的烂代码,而不是出于对*别人的代码不可靠,只有我的才是最棒*的心里因素。

 

转载于:https://www.cnblogs.com/Ankh/archive/2013/02/02/2889774.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值