`
kuwoleft
  • 浏览: 1075452 次
文章分类
社区版块
存档分类
最新评论

4.2 紧凑性和正交性——UNIX编程艺术学习笔记

 
阅读更多

1.1.1 紧凑性

紧凑性就是一个设计能否装进人脑的特性。——它是设计的可读性?

紧凑不等以薄弱:如果一个设计构建在易于理解利于组合的抽象概念上,则这个系统能够在具有非常强大、灵活的功能同时保持紧凑性。

紧凑不等于易于学习:对于某些紧凑设计而言,在掌握其精妙的内在概念模型之前,要理解这个设计有些困难;但是一旦理解了这个模型,则学习相对简单。

lisp就是一个典型的紧凑性的设计:特性非常简单,几十行代码就可能写一个解释器。但是,它可以做很多复杂的东西。

c和Python是半紧凑的,perl,java,shell则不是。c++是反紧凑的,但是他的子集是半紧凑的。

1.1.2 正交性

正交性是有助于使复杂设计也能紧凑的重要特性之一。在纯粹的正交设计中,所有的操作均无副作用;每一个动作(无论是API调用,宏调用或者语言运算)只改变一件事情,不会影响其他。无论你控制的是什么系统,改变一个时期的方法有且只有一个。

正交性的障碍在于便利性,人们经常为了便利性牺牲正交性。

1.1.3 SPOT原则

不要重复你自身(Don’t Repeat Yourself)——《程序员修炼之道》

:每一个知识点在系统中只有一个唯一,明确,权威的表述,也就是真理的单点性(Single Pointer Of Truth)。

这里的真理或者知识点,不单单是指函数逻辑,同时也包含数据。

如果实际确实需要重复,则需要想办法做一些优化,比如,可以尝试写一个函数,工具,或者代码生成程序,让其中一个由另一个生成。

数据结构的SPOT原则:无垃圾,无混淆。数据结构不要太通用,太面面俱到。现实中的明晰的状态在结构中也同样明晰。

数据驱动编程,代码生成在一定程度是也是遵循的SPOT原则。

1.1.4 紧凑性和强单一中心

提高紧凑性有一个精妙强大的方法:围绕“解决一个定义明确的问题”的强核心算法组织设计,避免臆断和捏造。——不是很理解。这里的表示不清楚。

这一点我大致理解:对于一个问题,最好能够找到一个核心算法来解决这个问题,而非使用试探法。

首先我们应该在解决问题之初努力去寻找这样的一个方案,但是并不是所有的问题都可以找到这样的一个算法。有的时候还必须使用试探法。

1.1.5 分离的价值

限制不仅提倡了经济性,而且某种程度上提倡了设计的优雅。

要达到这种简洁性,尽量不要去想一种语言或操作系统最多能做多少事情,而是尽量去想这种语言或操作系统最少能做的事情——不是带着假想行动,而是从零开始。

要达到紧凑正交的设计,就从零开始。禅教导我们:依附导致痛苦;软件设计的经验教导我们:依附于被人忽略的经验将导致非正交,不紧凑的设计,项目不是失败,就是成为维护的梦魇。

这一节看不懂。


分享到:
评论

相关推荐

    TE Connectivity推出耐苛刻介质的超紧凑型数字压力和温度传感器——MS5839-02BA

    在含氯环境和苛刻环境中高,性能一流 2020年4月2日—对于游泳手表和潜水设备等消费性装备中的传感器来说,微型化、性能和至关重要,因此人们对于高性能、高传感器的需求不断增加。为了满足日益增长的需求,连接和...

    Duktape一个可嵌入Javascript引擎专注于可移植性和紧凑的内存使用

    Duktape - 一个可嵌入Javascript引擎,专注于可移植性和紧凑的内存使用

    西门子S7-1200编程手册

    S7-1200 型号和基于 Windows 的 STEP 7 编程工具 (页 43)提供了解决自动化问题时需要的灵活性。 本手册提供了有关 S7-1200 PLC 的安装和编程信息,其主要用户是具备可编程逻辑控制器基本知识的工程师、编程人员、 ...

    C#与F#编程实践 英文版PDF带书签带源码

    《C#与F#编程实践》:函数式编程擅长用紧凑、清晰的方式来表达复杂思想。“不可变性”和“函数值”等函数式概念使代码分析变得更轻松,同时还有助于并发性。新的F#语言、LINQ、C#中的某些新特性以及大量的.NET库,是...

    C++编程规范101条规则、准则与最佳实践PDF.rar

    第7条 编程中应知道何时和如何考虑可伸缩性 14 第8条 不要进行不成熟的优化 16 第9条 不要进行不成熟的劣化 18 第10条 尽量减少全局和共享数据 19 第11条 隐藏信息 20 第12条 懂得何时和如何进行...

    衡量政治选区规划的紧凑性-研究论文

    我们提出了一种基于同一地区选民之间相对于可达到的最小距离的距离的紧凑性度量——我们创造了相对接近度指数。 我们证明,任何满足三个理想属性(选民的匿名性、有效聚类以及规模、人口密度和地区数量的不变性)的...

    f(R,T)引力的紧凑型恒星

    因此,我们通过分析探索模型的几个物理方面来表示紧凑恒星的行为,例如能量条件,TOV方程,系统稳定性,布赫达尔条件,紧凑性和红移。 经检查,在与十二个致密星候选有关的指定观测约束范围内,本模型的物理有效性...

    紧凑恒星和暗动态变量的演化

    这项工作旨在探讨f(R,T)修正引力理论对紧凑天体动力学的暗动态影响。 我们采用了球形星的内部几何形状,其中充满了不完美的流体...我们发现暗源项和动力学变量对致密物体的演化和密度不均匀性具有至关重要的意义。

    欧姆龙CJ系列可编程控制器.pdf

    欧姆龙CJ系列可编程控制器pdf,欧姆龙CJ系列可编程控制器:以高速、超小型和无间隙的信息传送优势,极大提高机器的附加值.综合的快速处理,将机器的性能提高到最大限度:有两种类型的CPU: 标准型CJ1和超高速型CJ1-H。...

    Genius Nsp编程器中文版专用软件.rar

    Genius NSP 通用编程器: 4Opins万用锁紧插座。适应绝大多数器件编程之所需。使用适配器能够支持非DIP封装器件的编程。RS232窜口通讯。通讯波特率:57600bit/s 。9V/500mA电源转换器。 主要功能:EPROM、EEPROM、...

    slic1.zip_Computer Vision_Image Compact_slic matlab_聚类紧凑性_超像素

    SLIC(简单线性迭代聚类)的新颖算法对组合的五维颜色和图像平面空间中的像素进行聚类,以有效地生成紧凑,接近均匀的超像素。我们方法的简单性使其非常易于使用-一个单独的参数指定了超像素的数量-该算法的效率使其...

    nullboard:Nullboard是一种简约的看板,专注于紧凑性和可读性

    Nullboard是看板/任务列表管理器的极简风格,旨在紧凑,易读且易于使用。 该名称也恰好缩写为 ,我认为这是一个很好的称呼。 死简单 单页Web应用程序-仅一个HTML文件,一个古老的jQuery包和一个webfont包。 可以...

    C语言经典编程(语音版)

    当你学习 C 语言时, 你也会认识到它有许多优点。让我们现在就提几点: C 是一种高效的语言。 C 的设计充分发挥了当今计算机所具有的功能。 C 程序紧凑且运行快。 C 是有力的和便于移植的。例如, 大部分实用、便于...

    S7两百编程手册.pdf

    S7-200系列小型PLC (Micro PLC)可应用于各种自动化系统。紧凑的结构、低廉的成本以及功能强 大的指令集使得S7--200 PLC成为各种小型控制任务理想的解决方案。...S7--200系列小型PLC的安装和编程信息

    挑战编程 程序设计竞赛训练手册

    每章的正文用十余页的篇幅覆盖了该领域最核心的概念和算法,然后给出八道可在线提交的完整编程挑战题目供读者练习。 全书内容紧凑、信息量大,是各类程序设计竞赛的选手与教练不可多得的参考书。

    能够发布ArcGIS紧凑型切片的改进版Geoserver

    该Geoserver可以发布ArcGIS的紧凑型切片,并且可以使用OpenLayer以WMS方式加载数据

    罗克韦尔MicroLogix可编程控制器选型手册.zip

    罗克韦尔MicroLogix可编程控制器选型手册zip,MicroLogix控制器家族包含五种级别的控制器,体积小巧,功能强大。MicroLogix1000控制器价格低廉,结构紧凑。MicroLogix 1200 控制器结构小巧足以适应狭小的安装空间,...

    ABB IRC5 工业机器人紧凑型控制器产品手册.pdf

    ABB IRC5 工业机器人紧凑型控制器产品手册pdf,ABB IRC5 工业机器人紧凑型控制器产品手册

    MATLAB子图紧凑减少留白部分.zip

    MATLAB让子图紧凑,减少中间留白部分

Global site tag (gtag.js) - Google Analytics