Linux九大哲學原理,Linux/Unix設計思想(全新闡釋開源哲學,Jon “maddog” Hall作序推薦)...

《Linux/Unix設計思想》

第1章  Unix哲學:集思廣益的智慧    1

1.1  NIH綜合征    2

1.2  Unix的開發    2

1.3  Linux:一個人加上一百萬人的智慧    4

1.4  Unix哲學概述    5

第2章  人類的一小步    9

2.1  準則1:小即是美    10

2.2  簡化軟件工程    12

2.2.1  小程序易于理解    12

2.2.2  小程序易于維護    13

2.2.3  小程序消耗的系統資源較少    14

2.2.4  小程序容易與其他工具相結合    15

2.3  關于“昆蟲”的研究    16

2.4  準則2:讓每一個程序只做好一件事    16

第3章  快速建立原型的樂趣和好處    19

3.1  知識與學習曲線    19

3.1.1  事實上,每個人有自己的學習曲線    20

3.1.2  大師們也知道,變化不可避免    21

3.1.3  為什么軟件會被稱為“軟件”    21

3.2  準則3:盡快建立原型    23

3.2.1  原型的建立是學習的過程    24

3.2.2  建立早期原型能夠降低風險    24

3.3  人類創造的三個系統    25

3.4  人類的“第一個系統”    26

3.4.1  在背水一戰的情況下,人類創建了“第一個系統”    26

3.4.2  沒有足夠的時間將事情做好    26

3.4.3  “第一個系統”是單槍匹馬或是一小群人開發的    26

3.4.4  “第一個系統”是一個“精簡、其貌不揚的計算機器”    27

3.4.5  “第一個系統”的概念可以激發他人的創造力    28

3.5  人類的“第二個系統”    29

3.5.1  “專家”使用“第一個系統”驗證過的想法來創建“第二個系統”    29

3.5.2  “第二個系統”是由委員會設計的    30

3.5.3  “第二個系統”臃腫而緩慢    31

3.5.4  “第二個系統”被大張旗鼓地譽為偉大的成就    32

3.6  人類的“第三個系統”    32

3.6.1  “第三個系統”由那些為“第二個系統”所累的人們創建    32

3.6.2  “第三個系統”通常會改變“第二個系統”的名稱    33

3.6.3  最初的概念保持不變并顯而易見    33

3.6.4  “第三個系統”結合了“第一個系統”和“第二個系統”的最佳特性    34

3.6.5  “第三個系統”的設計者有充裕的時間將任務做好    34

3.7  Linux既是“第三個系統”,又是“第二個系統”    34

3.8  建立“第三個系統”    35

第4章  可移植性的優先權    39

4.1  準則4:舍高效率而取可移植性    40

4.1.1  下一……的硬件將會跑得更快    41

4.1.2  不要花太多時間去優化程序    42

4.1.3  最高效的方法通常不可移植    43

4.1.4  可移植的軟件還減少了用戶培訓的需求    45

4.1.5  好程序永不會消失,而會被移植到新平臺    45

4.2  準則5:采用純文本文件來存儲數據    48

4.2.1  文本是通用的可轉換格式    49

4.2.2  文本文件易于閱讀和編輯    49

4.2.3  文本數據文件簡化了Unix文本工具的使用    49

4.2.4  可移植性的提高克服了速度的不足    51

4.2.5  速度欠佳的缺點會被明年的機器克服    52

第5章  軟件的杠桿效應    55

5.1  準則6:充分利用軟件的杠桿效應    57

5.1.1  良好的程序員編寫優秀代碼,優秀的程序員借用優秀代碼    57

5.1.2  避免NIH綜合征    58

5.1.3  允許他人使用你的代碼來發揮軟件杠桿效應    61

5.1.4  將一切自動化    62

5.2  準則7:使用shell腳本來提高杠桿效應和可移植性    64

5.2.1  shell腳本可以帶來無與倫比的杠桿效應    65

5.2.2  shell腳本還可以充分發揮時間的杠桿效應    67

5.2.3  shell腳本的可移植性比C程序更高    68

5.2.4  抵制采用C語言來重寫shell腳本的愿望    69

第6章  交互式程序的高風險    72

6.1  準則8:避免強制性的用戶界面    74

6.1.1  CUI假定用戶是人類    76

6.1.2  CUI命令解析器的規模龐大且難以編寫    77

6.1.3  CUI偏好“大即是美”的做法    78

6.1.4  擁有CUI的程序難以與其他項目相結合    79

6.1.5  CUI沒有良好的擴展性    80

6.1.6  最重要的是,CUI無法利用軟件的杠桿效應    80

6.1.7  “CUI有什么關系?人們都不愿意打字了。”    81

6.2  準則9:讓每一個程序都成為過濾器    82

6.2.1  自有計算技術以來,人們編寫的每一個程序都是過濾器    82

6.2.2  程序不創建數據,只有人類才會創建數據    83

6.2.3  計算機將數據從一種形式轉換成另一種    84

6.3  Linux環境:將程序用作過濾器    84

第7章  更多Unix哲學:十條小準則    88

7.1  允許用戶定制環境    89

7.2  盡量使操作系統內核小而輕量化    90

7.3  使用小寫字母并盡量簡短    91

7.4  保護樹木    93

7.5  沉默是金    94

7.6  并行思考    95

7.7  各部分之和大于整體    97

7.8  尋求90%的解決方案    99

7.9  更壞就是更好    100

7.10  層次化思考    102

第8章  讓Unix只做好一件事    105

第9章  Unix和其他操作系統的哲學    113

9.1  雅達利家用電腦:人體工程的藝術    114

9.2  MS-DOS:七千多萬用戶的選擇不會錯    117

9.3  VMS系統:Unix的對立面    119

第10章  撥開層層迷霧:Linux與Windows的比較    123

10.1  內容為王,傻瓜    126

10.1.1  視覺內容:“用自己的眼睛去看。”    128

10.1.2  有聲內容:“聽得到嗎?”    129

10.1.3  文字內容:“視頻可以終結廣播明星,卻消滅不了小報。”    131

第11章  大教堂?多怪異    143

第12章  Unix的美麗新世界    153

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/542412.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/542412.shtml
英文地址,請注明出處:http://en.pswp.cn/news/542412.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[Android] 開源View組件(一)

Material Design系列,自定義Behavior實現Android知乎首頁 仿今日頭條最強頂部導航指示器,支持6種模式 MagicIndicator系列之一 —— 使用MagicIndicator打造千變萬化的ViewPager指示器 Android 優雅的為RecyclerView添加HeaderView和FooterView Android …

sql server修改字段編碼格式_關于MySQL如何修改character_set_client的編碼問題

問題引入:我們經常會遇到一些向MySQL數據庫中插入中文,但是select出來的時候,卻發現是亂碼的情況。如我們向表a出入這樣一段記錄:iinsert into a values(‘你好helloworld你好’,’helloworld’);可能當你訪問它的時候&#xff0c…

通用apdu指令_8086微處理器中的通用指令格式

通用apdu指令Introduction: 介紹: In this article, we are going to discuss about the 6 general formats of instructions. 在本文中,我們將討論6種通用指令格式。 One byte instruction: 一字節指令 : This is only one byte long an…

Linux中斷不能進行任務調度,關中斷是否禁止任務調度?關中斷能作為互斥嗎?...

今天再看《嵌入式軟件系統教程》((美)西蒙 著,陳向群 等譯) ,里面講到關中斷會關了任務調度,作者沒說原因,我也不知道為什么,所以查了查網絡。在這個網址http://www.hqwic.com/bbs/topic.aspx?topicid11253上有一個討…

Win10系統怎樣讓打開圖片方式為照片查看器

打開注冊表編輯器之后,我們雙擊左側的目錄,依次打開HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft目錄,如下圖所示。 在Microsoft目錄下,我們需要找到Windows Photo Viewer\Capabilities\FileAssociations目錄項,直到看到該子…

python爬蟲開發 從入門到實戰 pdf 謝乾坤_python字符串和整數相互轉換的實例分享...

python 字符串和整數的轉換方法數字轉成字符串方法一:使用格式化字符串:tt322tem%d %tttem即為tt轉換成的字符串常用的格式化字符串:%d 整數%f%F 浮點數%e%E 科學計數%g%G e 和%f/%E 和%F 的簡寫%% 輸出%格式化操作符輔助指令符號 作用* 定義寬度或者小數…

c語言插入排序算法_插入排序算法,流程圖和C,C ++代碼

c語言插入排序算法In the last article, we discussed about the bubble sort with algorithm, flowchart and code. In this article, we are going to discuss about another basic sorting technique i.e. insertion sort. 在上一篇文章中,我們討論了用算法&…

EF使用CodeFirst方式生成數據庫技巧經驗

前言 EF已經發布很久了,也有越來越多的人在使用EF。如果你已經能夠非常熟練的使用EF的功能,那么就不需要看了。本文意在將自己使用EF的方式記錄下來備忘,也是為了給剛剛入門的同學一些指導。看完此文,你應該就學會以CodeFirst的方…

java jar包示例_Java包getImplementationVersion()方法和示例

java jar包示例包類的getImplementationVersion()方法 (Package Class getImplementationVersion() method) getImplementationVersion() method is available in java.lang package. getImplementationVersion()方法在java.lang包中可用。 getImplementationVersion() method …

c語言中字母的定義,c語言字符串定義與初始化 - 且聽風吟

字符串的兩種定義方式char數組char sa[] “hello world”;char指針char *sp “hello world”;這兩種方式都產生了一個”hello world”的字符串常量,字符串常量存儲在靜態存儲區中,靜態存儲區中的內容在程序運行的整個過程中都存在,而且只存儲一份。數組…

python計算兩字符串中的位置_python – 計算兩個字符串之間距離的算法

是否有任何字符串距離算法沒有考慮到單詞的順序?以下算法未提供所需結果(在該示例中,所需結果應為1):import jarojaro.jaro_winkler_metric(uMichael Jordan,uJordan Michael)>>>0.47import LevenshteinLevenshtein.ratio(Michael Jordan,Jorda…

php unset函數_PHP | 使用unset()函數從數組中刪除元素

php unset函數Given an array and we have to remove an element from the array. 給定一個數組,我們必須從數組中刪除一個元素。 unset()函數 (unset() function) To remove an element from an array, we can use a PHP library unset() function, it accepts th…

vi顯示行號

vi顯示行號 :set nu 帶行號查看,并不改變文件內容:set nonu 取消帶行號查看在每個用戶的主目錄下,都有一個 vi 的配置文件".vimrc"或".exrc"用戶可以編輯它,使這些設置在每次啟動 vi 時,都有效.例如,加入如下設置行:set nu 顯示行號…

對象過濾某個屬性 循環 php_37道PHP面試題(附答案)

1、什么事面向對象?主要特征是什么?面向對象是程序的一種設計方式,它利于提高程序的重用性,使程序結構更加清晰。主要特征:封裝、繼承、多態。2、SESSION 與 COOKIE的區別是什么,請從協議,產生的…

項響琴C語言書籍在線瀏覽,電子琴 c語言程序

實用#include unsigned char code table[]{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsigned char temp;unsigned char key;unsigned char i,j;unsigned char STH0;unsigned char STL0;unsigned int code tab[]{64021,64103,64260,…

Java File類boolean createNewFile()方法(帶示例)

文件類布爾型createNewFile() (File Class boolean createNewFile()) This method is available in package java.io.File.createNewFile(). 軟件包java.io.File.createNewFile()中提供了此方法。 This method is used to create a new file by using createNewFile() method a…

oracle ? SQL執行過程

1.sql執行過程1>解析(判斷對象是否存在,是否有權限查詢,語義解析,檢查緩存中是否有相同的SQL等等)2>優化(CBO確定優化模式,確定訪問路徑,聯接順序,過程中通過很多綜…

vue-video-player修改src就會報錯_4、修改入口點代碼

在riscv上電時,會進行CPU自檢,然后跳轉到bootloader處執行。bootloader設置好kernel的運行環境后,從硬盤加載kernel到內存,最后再跳轉到kernel入口地址。我們采用的bootloader為OpenSBI,被加載到0x80000000地址&#x…

數碼管超聲波c語言黑51,51單片機開發板-超聲波測距-數碼管顯示

《51單片機開發板-超聲波測距-數碼管顯示》由會員分享,可在線閱讀,更多相關《51單片機開發板-超聲波測距-數碼管顯示(16頁珍藏版)》請在人人文庫網上搜索。1、計算機技術系項目工作報告課程名稱單片機開發板設計與制作實訓班級學號姓名項目名稱超聲波測距…

java 方法 示例_Java ArrayDeque帶有示例的removeFirstOccurrence()方法

java 方法 示例ArrayDeque類removeFirstOccurrence()方法 (ArrayDeque Class removeFirstOccurrence() method) removeFirstOccurrence() method is available in java.lang package. removeFirstOccurrence()方法在java.lang包中可用。 removeFirstOccurrence() method is use…