时间戳转换器

读书笔记《unix编程艺术》一

日期:2022-12-06     来源:Virtual_Func    作者:Virtual_Func    浏览:412    java教程

本文目录

1、读书笔记《unix编程艺术》一

2、《javascriptdom编程艺术》读书笔记

Unix 设计的统一思想:一切皆文件。

Linux是一个采取了Unix的设计思想,初始行为表现与Unix相同的操作系统,但Linux中的源码并未有任何出自Unix。Linux符合一切皆文件的思想,其中读写操作都是处理文件描述符,无论是文件描述符后的是真正打开的文件,还是进程间通信的套接字,对于用户而言都是操作文件描述符,用同样的API进行操作,这种思想对写IPC等比较方便,容易上手。

开源之于Unix:

Unix之所以生存到现在,并且在稳定性完全性都很好的原因,就是在于开源,将所有源代码都公开在geek的眼前,大家一起审核,确保了Unix的安全性,同时由于开源轻松的特性,使得Unix上好用的工具也很多,awk, sed 等工具。


Unix与Linux:

两者在基本设计思想上相同,但是Unix更倾向于命令行模式,Linux则希望在此基础上提供基本的GUI,面向非技术的使用人员,两者均是开源轻量级的操作系统,Linux设计上源于Unix,但又不完全同于原有的Unix


Unix编程艺术:

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

模块分的越小,API的重要性越高,bug的出现率也会降低,但当模块过小时,代码复杂度转移到接口,Bug率也会反增。Hatton认为最佳范围以代码行数计算应在“400-800”行之间

2. 紧凑型:掌握一个设计需要记忆的内容越少,则设计的紧凑型越高。即“一个设计是否能装进人脑中的特性”

紧凑型不等于“容易学习”,对一些紧凑设计而言(如Lisp),在掌握内在基础概念模型之前,理解该设计相对较难,但是一旦掌握了基础概念,则就不需要记忆太多。如C,Python等是半紧凑的,Java等不是紧凑的(掌握Java需要一定的记忆),而C++则是反紧凑的(没有人能完全理解C++,作者原话)。-_-

3. 正交性:每一个动作只做一件事(有时还会做无别的副作用的事),一个属性只会被一个方法改变。

老生常谈,每一本好书都在强调这个问题,千万要记住

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

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

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

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

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

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

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

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

7. 胶合层:中和顶层逻辑层与底层原语层之间的冲突。

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


《javascriptdom编程艺术》读书笔记

相关文章

读书笔记《unix编程艺术》六

{尽量把程序的复杂度从代码中转移到数据中数据比逻辑更容易驾驭,尽可能把设计的复杂度从代码转移到数据中。数据驱动编程:把代码与代码要作用的数据划分清楚,在需要改变程序逻辑时,只需要编辑数据而...}

读书笔记《unix编程艺术》五

{语言的分类语言的分类从基础的文本文件到最后的脚本文件,以下分类是语言从基础功能到不断复杂功能的演变:简单可读文本文件:/etc/passwd等结构化可读文件:SNG文件,sng中每一个可读字符对应PNG中一段比...}

《微服务设计》读书笔记

{...术》这类经典好书时的感觉。以下是我做的一些概括性的读书笔记,非常希望大家能阅读全书,挖掘更多知识。一、什么是微服务:就是一些协同工作的小而自治的服务。很小,专注于做好一件事:根据业务的边界来确定服务的...}

第八周读书笔记《黑客与画家》

{这周我阅读的书目是《黑客与画家》,感觉这本书是一本极其有趣味并值得我们深思的书,它主要介绍了现在社会一个特别但又重要的群体——黑客,讲述了他们的特点,以及他们的能力和这份能力为社会为自己带来了什么。黑...}

unix编程艺术——摘录一

{Unix哲学Unix本身所作出的榜样体现出来的。从整体上来说,可以概括为以下几点:1.模块原则:使用简洁的接口拼合简单的部件。2.清晰原则:清晰胜于机巧。3.组合原则:设计时考虑拼接组合。4.分离原则:策略同机制分离,接...}

《unix传奇》读书笔记

{春节读完了BrianW.Kernighan的最新著作《UNIX传奇》,却一直没时间输出点什么,今日趁将机械键盘拾掇出来使用之时,且做笔记沉淀一二。BrianW.Kernighan其人是谁?BrainKernighan,加拿大计算机科学家,曾在贝尔...}

读书笔记|《修改软件的艺术》

{最近读了《修改软件的艺术》一书,这本书讲述了作者对关于如何写比较容易维护代码的的经验,并把他们整理成了9条实践方式。它们分别是实践1:在问如何做之前先问做什么、为什么做、给谁做实践2:小批次...}

《单元测试的艺术》读书笔记----使用存根破除依赖

{    存根的定义:    被测试类中存在的一个依赖项(或协作者)的可控制的代替物。    重构代码并使用存根:    可使用的办法有:    1、创建有参数的...}

《单元测试的艺术》读书笔记----优秀单元测试的特性

{ 优秀的单元测试有如下特性:1、它应该是自动化的,可重复执行;2、很容易实现;3、第二天还有意义;4、任何人都能一键执行;5、运行速度很快;6、结果应该是稳定的,只要没有对单元测试和被测试代码修改;7、应该...}

《如何阅读一本书》读书笔记(代码片段)

{目录第一部分阅读的层次第一章阅读的活力与艺术一、主动阅读二、阅读的目标第二章阅读的层次一、有四个层次的阅读二、第一层次:基础阅读三、第二层次:检视阅读四、第三层次:分析阅读五、第四层次:...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号