本书主要讲的是Unix程序设计思想,具体涉及到linux的内容不多。

整本书的一个基本出发点是开源。其中主要强调的观点包括:

1.小即是美

作者持有的主要观点是程序应该以小为美。小程序实现小功能,每个程序尽量保持单一职责,大的处理过程由多个小程序串联组成,而不是创建一个大的程序包含所有功能。作者指出的一个软件误区如下:

“往往有这样一类软件工程师,为自己能编写出规模宏大的程序而深感骄傲,可除了他自己,没有任何人能读懂这些程序。他会认为只有这样才具有“职业保障”。可以这么说,就只剩他编写的应用程序要大过其自负情结。在传统软件工程环境中,这样的软件工程师可以说是屡见不鲜。”

个人对作者观点表示同意,个人以为,做软件的目的在于通过软件从一定程度上改变特定人群的行为方式,提高某方面的行为效率。软件宜以简洁为准,把握好出发点,而不是盲目的堆砌功能点。

2.快速建立原型

通过建立原型有效规避风险。对于软件研发来说,我一直持有的观点是尽早的建立原型,以减少不同角色人员在项目开展过程中对目标的理解偏差。我们曾出现过在没有原型的情况下,根据文档进行讨论,最后发现我们很多的甚至基本目标概念上出现偏差的问题,并且多次出现,极易导致项目初始版本出来以后又去回溯需求,重新定义目标,严重影响研发效率。

3.人类创造的三个系统

第一个系统:单枪匹马或一小群开发人员在一定压力下,以达成目标为目的,做出的具有基本功能的精简、其貌不扬的计算系统。一般具有很高的开创性,显示了一个能够激发别人想象的概念,极具创意。

第二个系统:“专家”使用“第一个系统”验证过的想法来创建“第二个系统”,通常是由委员会设计的,臃肿而缓慢,但在市场上大展宏图,被誉为伟大的成就的系统。

第三个系统:第三个系统通常是对第二个系统不满,并力求精简和实用,保持第一系统的概念,并融合第二系统中某些最佳特性的系统。

4.可移植性的优先权

作者强调,在可移植性与程序执行效率之间,应该偏向于可移植性。最高效的方法往往是针对特定环境做出了优化,其移植性比较低,不利于软件的长期发展。而执行效率往往能够随着硬件的发展很快的提升。

作者提出,以纯文本格式存储数据是比较适合移植性的方法。出文本格式的数据相比二进制文件来说更加通用。同样的,速度欠佳可以被新硬件所克服。

纯文本格式存储数据在跨平台及跨命令传输之间具有很高的优势,但在处理大量数据的时候,确实会存在某些问题。

5.充分利用软件的杠杆效应

“良好的程序员编写优秀代码,优秀的程序员借用优秀代码”。

软件开源对于软件的发展来说,具有极大的好处,可以在更高的数量级上对软件进行优化。

6.交互式程序的高风险

良好的程序,应该避免使用强制性的用户界面(CUI)。这里的界面不只包含了我们通常的图形用户界面,也包含了命令行下的提示操作信息等内容。以小即是美为原则,良好的程序应该是收到命令,处理数据,输出数据,所有程序都是“过滤器”,将数据从一种形式转换为另一种形式。CUI从一定程度上影响了数据在不同程序之间的传输,多余的提示信息往往导致多个程序命令之间不能够以管道的形式进行数据传输。

“当你假设可能是另外一个程序而不是由人来接收程序的数据流时,就能消除我们固有的偏见,即试图让应用程序具有用户友好性。你不会再局限于思考菜单的选择项,而是开始研究数据最终可能会到达的地方。”

“把应用程序分解成更小的程序,每个程序只执行应用程序的一个功能”

7.在Unix下建立复杂应用程序的范例

8.内容为王

从操作系统的角度出发处理应用程序,对于操作系统而言,图形界面没有任何意义。Gnome和KDE只是操作系用户之上的一个应用程序,只是面向用户的,并不是面向操作系统的。

视频、音频、图形图像也是如此,对于操作系统而言,这些内容是极不易检索和识别的,是不具备真实意义的,只有文本才是高效的。

对于大数据处理来说,文本才是最实用的资源。

个人以为,在图像识别及语音识别技术成熟以后,视频及图形图像是一种发展趋势,毕竟二维码比一维码能够存储的内容实在是多太多了。

读书笔记-《Linux/Unix设计思想》的更多相关文章

  1. csapp读书笔记-并发编程

    这是基础,理解不能有偏差 如果线程/进程的逻辑控制流在时间上重叠,那么就是并发的.我们可以将并发看成是一种os内核用来运行多个应用程序的实例,但是并发不仅在内核,在应用程序中的角色也很重要. 在应用级 ...

  2. CSAPP 读书笔记 - 2.31练习题

    根据等式(2-14) 假如w = 4 数值范围在-8 ~ 7之间 2^w = 16 x = 5, y = 4的情况下面 x + y = 9 >=2 ^(w-1)  属于第一种情况 sum = x ...

  3. CSAPP读书笔记--第八章 异常控制流

    第八章 异常控制流 2017-11-14 概述 控制转移序列叫做控制流.目前为止,我们学过两种改变控制流的方式: 1)跳转和分支: 2)调用和返回. 但是上面的方法只能控制程序本身,发生以下系统状态的 ...

  4. CSAPP 并发编程读书笔记

    CSAPP 并发编程笔记 并发和并行 并发:Concurrency,只要时间上重叠就算并发,可以是单处理器交替处理 并行:Parallel,属于并发的一种特殊情况(真子集),多核/多 CPU 同时处理 ...

  5. 读书笔记汇总 - SQL必知必会(第4版)

    本系列记录并分享学习SQL的过程,主要内容为SQL的基础概念及练习过程. 书目信息 中文名:<SQL必知必会(第4版)> 英文名:<Sams Teach Yourself SQL i ...

  6. 读书笔记--SQL必知必会18--视图

    读书笔记--SQL必知必会18--视图 18.1 视图 视图是虚拟的表,只包含使用时动态检索数据的查询. 也就是说作为视图,它不包含任何列和数据,包含的是一个查询. 18.1.1 为什么使用视图 重用 ...

  7. 《C#本质论》读书笔记(18)多线程处理

    .NET Framework 4.0 看(本质论第3版) .NET Framework 4.5 看(本质论第4版) .NET 4.0为多线程引入了两组新API:TPL(Task Parallel Li ...

  8. C#温故知新:《C#图解教程》读书笔记系列

    一.此书到底何方神圣? 本书是广受赞誉C#图解教程的最新版本.作者在本书中创造了一种全新的可视化叙述方式,以图文并茂的形式.朴实简洁的文字,并辅之以大量表格和代码示例,全面.直观地阐述了C#语言的各种 ...

  9. C#刨根究底:《你必须知道的.NET》读书笔记系列

    一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...

  10. Web高级征程:《大型网站技术架构》读书笔记系列

    一.此书到底何方神圣? <大型网站技术架构:核心原理与案例分析>通过梳理大型网站技术发展历程,剖析大型网站技术架构模式,深入讲述大型互联网架构设计的核心原理,并通过一组典型网站技术架构设计 ...

随机推荐

  1. 二维码PDF417简介及其解码实现(zxing-cpp)

    二维码PDF417是一种堆叠式二维条码.PDF417条码是由美国SYMBOL公司发明的,PDF(Portable Data File)意思是"便携数据文件".组成条码的每一个条码字 ...

  2. 2734: [HNOI2012]集合选数

    2734: [HNOI2012]集合选数 链接 分析: 转化一下题意. 1 3 9 27... 2 6 18 54... 4 12 36 108... 8 24 72 216... ... 写成这样的 ...

  3. rabbitmq的安装和使用

    一.RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件(亦称面向消息的中间件).RabbitMQ服务器是用Erlang语言编写的,而群集和故障转移是构建在开放电信平台框架上的.所有 ...

  4. Closure Compiler应用程序使用入门[译]

    Hello World示例 Closure Compiler应用程序是一个Java 命令行工具,用来对JavaScript代码进行压缩.优化和排错.按照下面的步骤,用一个简单的JavaScript程序 ...

  5. 六种流行的语言大餐---C、C++、python、Java、php、C#你更喜欢哪一个呢?

    引言 鉴于五一期间超大的人流量,LZ思来想去,最终还是选择蜗居在自己的出租屋.无聊之际,当然不能忘了做点什么事情,于是LZ就研究了一下几种语言的皮毛,在这里献丑一翻,希望各位猿友莫要见笑. 不过说来也 ...

  6. centos7搭建ANT+jmeter+jenkins接口测试自动化环境

    一.环境准备 因为用到了jmeter和apache-tomcat,centos7必须要有java环境,所以配置jdk和apache-tomcat什么的,就不多说了,自行操作 帮你们偷懒: ant下载地 ...

  7. c语言数字图像处理(十):阈值处理

    定义 全局阈值处理 假设某一副灰度图有如下的直方图,该图像由暗色背景下的较亮物体组成,从背景中提取这一物体时,将阈值T作为分割点,分割后的图像g(x, y)由下述公式给出,称为全局阈值处理 多阈值处理 ...

  8. 2019网易笔试题C++--丰收

    题目描述 又到了丰收的季节,恰好小易去牛牛的果园里游玩. 牛牛常说他多整个果园的每个地方都了如指掌,小易不太相信,所以他想考考牛牛. 在果园里有N堆苹果,每堆苹果的数量为ai,小易希望知道从左往右数第 ...

  9. JavaScript中数组中遍历的方法

    前言 最近看了好几篇总结数组中遍历方法的文章,然而"纸上得来终觉浅",决定此事自己干.于是小小总结,算是自己练手了. 各种数组遍历方法 数组中常用的遍历方法有四种,分别是: for ...

  10. fdisk命令详解

    基础命令学习目录 原文链接:https://www.cnblogs.com/xiaofengkang/archive/2011/06/06/2073579.html fdisk -l 可以列出所有的分 ...