2019独角兽企业重金招聘Python工程师标准>>>

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

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

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

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

  • 明示胜于隐喻

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

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

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

  • 数据重于算法

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

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

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

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

  • 现有实现再有标准

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

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

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

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

  • 烂代码就要扔掉

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

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

转载于:https://my.oschina.net/ankh2008/blog/107005

Unix编程艺术心得相关推荐

  1. 【转载】Unix编程艺术——Unix哲学

    Unix编程艺术主要介绍了Unix系统领域中的设计和开发哲学.思想文化体系.原则与经验.此文大致摘录了Unix的哲学. web程序员也应该看看此书,软件开发和web开发很多地方都是相通的.看完之后,我 ...

  2. Unix编程艺术——Unix哲学

    题外话:一个月之前,刚刚读完<unix编程艺术>这本据说有些"愤青"的书,读书的过程,感觉是种享受,不但unix本身是艺术,连作者著书也是艺术,本想就本书写篇读感,但是 ...

  3. 读《UNIX编程艺术》随记

    2012-07-07 <UNIX编程艺术>这本书是人介绍的, 一看到这书的厚度,我有想打退堂鼓的冲动.好厚的说. 不过,听到可以不用细也可以,就硬着头接下这本书了. 先看它的书皮,一位师傅 ...

  4. Unix 哲学的一些原则——《Unix 编程艺术》

    Unix 哲学是在 Unix 先哲们和 Unix 本身所作出的榜样中体现出来的.可以概括为以下原则: 模块原则:使用简洁的接口拼合简单的部件. 用清晰的接口把若干简单的模块组合成一个复杂软件. 这样, ...

  5. 三读《UNIX编程艺术》

                                              三读<UNIX编程艺术>           第一次读<UNIX编程 艺术>是2004年的夏 ...

  6. [总结]Unix设计哲学 Unix编程艺术

    转载请注明出处:http://blog.csdn.net/horkychen 学习了<<Unix编程艺术>>第一章关于哲学的部分, 做个汇总. 现在对精简设计, 舍弃华而不实是 ...

  7. 《Unix 编程艺术》 理解

    一:机制, 而不是策略 Unix文化贯穿始终的一条设计主线, 被翻译为: 机制, 而不是策略(Mechanism, not policy), 这句话的英文解释如下: The distinction b ...

  8. 《UNIX编程艺术》读书笔记

    <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso- ...

  9. Unix编程艺术和代码大全比较阅读

    最近在看Unix编程艺术,收获颇多,联想起以前看过的同样获益匪浅的代码大全,突然萌生出比较两者观点的想法,那就开始吧. Unix编程艺术:简称U. 代码大全:简称C. 1) 函数的长度 U ( 4.1 ...

最新文章

  1. Oracle排序排除null,oracle 排序(中文,null的处理)
  2. Java笔记整理-02.Java基础语法
  3. XML CDATA概述
  4. 达摩院首席数据库科学家李飞飞:云原生新战场,我们如何把握先机?
  5. centos误删除文件如何恢复
  6. Matlab画图,去掉周围白边
  7. 服务器性能指标有哪些
  8. 开源代码分析研究 之 BugNet (2008年1月14日更新 第一章BugNet 简介 已完成)
  9. 自动化测试与DevOps以及持续集成的关系。
  10. 学生管理系统总结(c语言)
  11. 白杨SEO:关键词定位与兴趣定位是什么?这两类推广渠道在网络营销上有什么差异?
  12. Googel浏览器添加百度搜索引擎
  13. 1024 程序员节狂欢盛会,等了一年终于来了!
  14. 【web测试】Xenu的使用
  15. 【python】画折线图
  16. 即时消息服务器eChat 与 通信解决方案
  17. 一张A4纸对折不了8次?
  18. STM32F107的时钟设置由25M修改成8M
  19. 智能合约BSC添加流动性
  20. mysql从库有张表不同步_mysql主从数据库不同步的2种解决方法

热门文章

  1. 人人都是 DBA(V)SQL Server 数据库文件
  2. NOIP2016提高组复赛解题报告
  3. 2016 ACM/ICPC Asia Regional Shenyang Online
  4. 3.Utm详细实现-用户生命流程
  5. 开启虚拟化技术之旅---1什么是虚拟化?
  6. Java技巧:深拷贝的两种方式2(转)
  7. 磁盘阵列上的文件访问不了--原因是lvm不能activate,解决办法
  8. iptables 智能限速方案
  9. iResearch_2008年度中国互联网经济及核心行业核心数据发布
  10. 做项目的一点收获之二