一:机制, 而不是策略

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

The distinction between mechanism and policy is one of the best ideas behind the Unix design. Most programming problems can indeed be split into two parts: “what capabilities are to be provided” (the mechanism) and “how those capabilities can be used” (the policy). If the two issues are addressed by different parts of the program, or even by different programs altogether, the software package is much easier to develop and to adapt to particular needs.

翻译过来:机制和策略的区别, Unix设计中最棒的思想之一, 大多程序的问题, 可以分离为两个问题: 提供什么样的功能(即机制); 这些功能是怎么使用的(策略)。 如果在一个程序中的各个模块,甚至是不同程序间,突出强调这两个问题, 那么, 程序包将更容易开发并被特定的应用所采纳。

由此看来, Unix的设计偏重于程序提供什么样的功能, 并不注重程序是如何被用到的。 所谓提供什么样的功能,不仅仅指为User提供这样功能,还包括对其它模块或者其它程序提供这样的功能。 因此Unix注重功能设计,注重接口,但并不在乎这个功能会如何用到。所以,你用命令行,还是用GUI去调用, Unix设计者是不关心这个的。 他们在乎的是: OK, 我已经实现了这个功能了。

为什么用户觉得Unix不好用呢! Unix程序员给你的答案是: 我不关心这个, 功能我已经实现了,并且,我跟其它模块和程序的接口完全解耦,API接口都是文本或者数据流,或者是协议。 我觉得事情已经OK了。

对于还是小白的用户来说,这样几乎是灭顶之灾,他很快就迷失,然后崩溃,最后出离愤怒, 这是显然的。

但对于程序员而言, 设想一下, 通过软件查询了一个结果,把它显示成在GUI上,渐变,渲染,若隐若现,跟我直观的打到shell上,区别在哪里?

程序员更应该关注机制,关注和外界的接口。 这就是为什么《Unix 编程艺术》 受到那么多程序员的追捧,无论是Linux用户还是windows,无论是C-Programer还是Java-Coder。 因为它关注的重点是架构。

《Unix编程艺术》中也给作者的理解: 因为策略和机制是按照不同的时间尺度变化的, 策略的变化要源源快于机制。 GUI工具包的观感时尚来去匆匆, 而光栅操作和组合确是永恒的。 这点跟设计模式的基本原则“分离可变和不变部分” 有着异曲同工, 只不过将其更加细化成“变化快和变化慢”的部分。

待续

《Unix 编程艺术》 理解相关推荐

  1. 理解《Deblurring Text Images via L0-Regularized Intensity and Gradient Prior》

    L0-regularized prior based on intensity and gradient 基于强度(亮度?像素值大小)和梯度(强度与渐变?)的L0正则化先验. 图像先验源于观察文本图像 ...

  2. matlab 防抖,防抖算法小结

    https://blog.csdn.net/nachoe/article/details/51383221 最近研究了一下防抖算法,总结如下,欢迎大家交流.防抖算法我总结一下三个方向:deconv m ...

  3. (十四:2020.08.28)CVPR 2014 追踪之论文纲要(译)

    CVPR 2020 追踪之论文纲要(修正于2020.08.28) 讲在前面 论文目录 讲在前面 论坛很多博客都对论文做了总结和分类,但就医学领域而言,对这些论文的筛选信息显然需要更加精细的把控,所以自 ...

  4. 从CVPR 2014看计算机视觉领域的最新热点

    从CVPR 2014看计算机视觉领域的最新热点 编者按:2014年度计算机视觉方向的顶级会议CVPR上月落下帷幕.在这次大会中,微软亚洲研究院共有15篇论文入选.今年的CVPR上有哪些让人眼前一亮的研 ...

  5. 超简单理解L0、L1、L2范数原理及作用

    L0,L1,L2范数在机器学习中的应用个人理解 博文针对L0.L1.L2范数原理及在机器学习中作用进行了非常通俗易懂的解释,为博主了解相关概念后自我理解,相信对于看完本篇分析的读者来说对理解这几个范数 ...

  6. 2016~2022 文字生成图像 Text to image(T2I)论文整理 阅读路线和阅读指南

    2016~2021 文字生成图像 Text to image(T2I)论文汇总 阅读路线和阅读指南 综述类 部分最新重要研究成果 发展与往年经典模型 综述类 1.Adversarial Text-to ...

  7. 基于Core Text实现的TXT电子书阅读器

    本篇文章的项目地址基于Core Text实现的TXT电子书阅读器. 最近花了一点时间学习了iOS的底层文字处理的框架Core Text.在网上也参考很多资料,具体的资料在文章最后列了出来,有兴趣的可参 ...

  8. 小白学tkinter(Text组件)

    text组件主要用于显示多行文本,但也常常用作简单的文本编辑器和网页浏览器. 一.实现最基本的功能以及插入文本.图片和window组件,可以使用windows_create()和image_creat ...

  9. CTPN模型详解--Detecting Text in Natural Image with Connectionist Text Proposal Network

    文章目录 Abstract 1 Introduction 1.1 Contributions 2 Related Work 3 Connectionist Text Proposal Network ...

  10. 通过源码发现nltk.Text.similar相似度衡量标准

    1. 如何用nltk来找到text中相似的word 如果我们想搜索某一篇文章(text)中相似的词(word),可以使用nltk这个强大的NLP模块.下面以nltk自带的shakespeare数据集来 ...

最新文章

  1. 使用 xcworkspace 管理 iOS 工程
  2. iptables 防火墙设置
  3. mysql 命令行小结
  4. 【Groovy】MOP 元对象协议与元编程 ( 通过 MetaMethod#invoke 执行 Groovy 方法 )
  5. 获取eclipse 运行时,bundle的相对路径
  6. UIDatePicker 日期/时间选取器(滚轮)—IOS开发
  7. docker 网络模型
  8. windows10中的Ubuntu
  9. Codeforces Round #729 (Div. 2)
  10. cpu序列号唯一吗_怎么看电脑硬件是不是新的 有什么软件能检测吗?
  11. e记法 python 底数_备战python二级
  12. 贾跃亭“站台”!乐视高调宣布回归:60余款新品发布,还将发布超级手机
  13. 数据库学习笔记---SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)
  14. python初学入门教程_python初学者怎么入门|python基础教程|python入门|python教程
  15. ansys与solidworks关联失败,将SolidWorks模型导入ansys划分网格总是提示错误
  16. 建立内网Windows补丁服务器
  17. 手Q与微信:最终结局将会是手足相残!
  18. Linux学习笔记 Day0
  19. 开源中国 开源世界2019_2019年最受欢迎的开源新闻报道
  20. 更换IP地址方式简介。

热门文章

  1. python 搜索引擎 实验楼的源码_Python语言之简历有错别字被拒绝聘用?文档被领导说?Python实现永无错别字!...
  2. 为什么越来越多的人喜欢拍照呢?如何用手机拍出大片?最受欢迎的摄影主题是什么呢?
  3. Typora付费,恢复到老版本
  4. 关于大学生洗澡方式不同调研报告——顶点计划四班五组尚梓杰
  5. golang连接IoTDB时序库
  6. 国内主流云服务商对比?阿里云、腾讯云、华为云怎么选?
  7. 不知不觉,我们长大了
  8. 结构可靠度matlab jc,结构可靠度分析的响应面法及其Matlab实现
  9. Fantasy Mix-Lingual Tacotron Version 4: Google-ZYX-Phoneme-HCSI-DBMIX
  10. 为什么烹饪系要学计算机,烹饪专业的就业发展前景有什么