本书主要讲的是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. 20145226夏艺华 网络对抗技术 EXP9 web安全基础实践

    20145226夏艺华 网络对抗技术 EXP9 web安全基础实践 !!!免考项目:wannacry病毒分析+防护 一.实验后回答问题 SQL注入攻击原理,如何防御 攻击原理 "SQL注入& ...

  2. WPF之ComboBox的VisualTreeHelper

    原文:WPF之ComboBox的VisualTreeHelper 用WPF的ComboBox控件的时候,需要用到TextChanged属性,但是这个属性属于TextBox控件,不用担心,ComboBo ...

  3. mfc 动态分配内存

     动态内存分配new  为数组动态分配内存  为多维数组分配内存  释放内存delete malloc free  动态内存分配new int * pi; pi= new int ;  为 ...

  4. 14-HTML-CSS案例

    1.超链接美化 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  5. 日常的例子说明 throttle 和 debounce 的区别

    不小心接触到 throttle 和 debounce,按捺不住猎奇的心理,找这两个函数的资料. 然而百度到的各种对他们的理解,我去啊. 艰难地搞明白他们是干嘛的之后,忍不住举个例子说说自己的理解,希望 ...

  6. C#课后练手

    猜拳(三局两胜)请输入您的手势:石头用户手势:石头      电脑手势:剪刀用户胜:1      电脑胜:0 请输入您的手势:石头用户手势:石头      电脑手势:石头用户胜:1      电脑胜: ...

  7. python 小技巧之获取固定下面包含的某种类型文件的个数

    遇到这样一个问题.我想要统计某个文件夹下有多少个py文件怎么办. 用python能解决吗?答案,能. 解决办法,使用glob 代码如下: import glob path_file_number=gl ...

  8. SpringBoot日记——SpringMvc自动配置与扩展篇

    为了让SpringBoot保持对SpringMVC的全面支持和扩展,而且还要维持SpringBoot不写xml配置的优势,我们需要添加一些简单的配置类即可实现: 通常我们使用的最多的注解是: @Bea ...

  9. python基础开发环境Pycharm的详细使用方法

    PyCharm是由JetBrains打造的一款Python IDE(集成开发环境) 1. 创建Python文件 2. pycharm的操作界面 3. PyCharm修改字体大小的方式 4. pycha ...

  10. WHO ARE YOU?--writeup

    TIPS:广东强网杯线上题 总结知识点:BASE64,ROT13 0x00 Base64 什么是Base64? Base64编码原理 其用途 什么是Base64? Base64是一种基于64个可打印字 ...