本书主要讲的是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. cnn 滤波

    http://blog.csdn.net/zouxy09/article/details/49080029

  2. PostgreSQL的hook机制初步学习

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面:PostgreSQL内部结构与源代码研究索引页    回到顶级页面:PostgreSQL索引页 本文的目的一是为了备忘,二是为了抛砖引玉,希望 ...

  3. 33 -FTP文件传输

    1.需求 2.流程图 3.自己的版本 4.老师评语 5.修改后的代码 6.修改后版本

  4. MongoDB操作-备份和恢复,导入和导出

    mongodb数据备份和恢复主要分为二种:一种是针对库的mongodump和mongorestore,一种是针对库中表的mongoexport和mongoimport 1. 常用命令格式 mongod ...

  5. Linux下通过进程名查询占用的端口

    1.首先根据名称用ps命令查看进程ID: ps -ef | grep zookeeper jim 10997 1959 0 12月14 pts/2 00:00:01 /usr/lib/jvm/java ...

  6. How to map Actions to a certain RibbonPage and RibbonGroup using the Application Model or in code

    https://www.devexpress.com/Support/Center/Question/Details/S134617/how-to-map-actions-to-a-certain-r ...

  7. linux管道详解

    原文链接:http://blog.csdn.net/qq_38646470/article/details/79564392 符号表示 | 和管道特别形象. 作用:     管道是Linux中很重要的 ...

  8. 记录Centos7搭建ftp服务器以及遇到的各种坑

    前言 今天被经理要求搭建ftp服务器,然后就去网上搜索了一下教程.搭建成功后(遇到的坑不少)特此记录一下.因为是为了记录一下整个操作流程以防以后使用所以比较啰嗦. 目录 1.安装vsftpd 2.创建 ...

  9. Streamr助你掌控自己的数据(1)——教你5分钟上传数据至Streamr

    博客说明 所有刊发内容均可转载但是需要注明出处. 教你5分钟上传数据至Streamr 本系列文档主要介绍怎么通过Streamr管理自己的DATA,整个系列包括三篇教程文档,分别是:教你5分钟上传数据至 ...

  10. 工具 | Sublime

    Sublime 前言 妈耶..\(Sublime\)的界面真的是太好看啦哭哭.. 我永远喜欢Sublime! 强推Sublime... 正文 自从暑假用上的Ubontu 一开始用的是\(gedit\) ...