《黑客與畫家》讀書筆記(術語解釋)

術語解釋
2017-02-23
抽象(abstract) 隱藏細節。編程語言越抽象,你寫出程序所需的運算步驟就越少,每一步的功能就越強。
2017-02-23
算法(algorithm) 完成任務的方法。菜譜也算是算法。
2017-02-23
字母數字式字符(alphanumeric character) 26個英文字母和10個阿拉伯數字的總稱。
2017-02-23
數組(array) 一種存儲數據的方式,教材中又稱矩陣(matrix),即一個個用數字編號的存儲空間,排列成一個n維的集合。
2017-02-23
應用服務提供商(ASP,Application Service Provider) 這種軟件公司允許用戶通過網絡使用存放在服務器上的軟件,而不是採用傳統的方式讓用戶在自己的電腦上安裝軟件後使用。
2017-02-23
貝葉斯定理(Bayesian) 一種統計推斷的方法,又稱貝葉斯算法。
2017-02-23
二進制(binary) 如果這個詞前面有冠詞(比如a binary),指的是軟件的目標碼。如果沒有冠詞,指的是採用二進制(而不是日常使用的十進制)作爲表示數字的方法
2017-02-23
位操作(bit manipulation) 對某個內存區域的一些簡單轉換操作,比如在屏幕上移動窗口就可以通過位操作實現。
2017-02-23
代碼膨脹(bloatcode) 程序過於冗長,大大超過合理的長度。
2017-02-23
塊結構(block-structured)
2017-02-23
Blub困境(Blub Paradox) 程序員的思想往往會受到自己正在使用的語言的束縛,不相信還存在更強大的語言。
2017-02-23
自下而上編程法(bottom-up programming) 一種編程的風格,與早期的“自上而下編程法”(top-down)正好相反,“自上而下編程法”要求你把編程任務分解成一個個更小的單元,“自下而上編程法”要求你先開發最底下的層,然後用底層所定義的“語言”開發上一層,這樣直到最高層。這兩種編程法可以結合使用。
2017-02-23
限制(bound) 受到某種資源的約束,比如I/O限制、內存限制、CPU限制等。
2017-02-23
跳轉(branch) 機器語言的goto命令。
2017-02-23
布魯克斯假說(Brooks’s Hypothesis) 程序員一天寫出的代碼行數是一個常量,與他使用什麼語言無關。
2017-02-23
緩衝區(buffer) 一個內存區域,用來保存程序需要的輸入數據,或者將程序的輸出數據累積起來,到一定數量後再輸出。
2017-02-23
緩衝區溢出攻擊(buffer overflow attack)
2017-02-23
字節碼(byte code) 類似於機器語言的計算機語言,但是不侷限於特定的計算機。由於字節碼與機器語言很類似,所以很容易開發出字節碼解釋器,讓它把字節碼轉換成相應的機器語言命令。
2017-02-23
CGI腳本(Common Gateway Interface script,通用網關接口腳本) 當網絡服務器需要進行某種運算(比如數據庫搜索)而不是直接傳輸現有文件時所運行的一種程序。CGI腳本的主要缺點是,每次運行只能生成一個頁面,無法像桌面軟件那樣將數據保存在內存中從而實現與用戶的不間斷對話。
2017-02-23
校驗和(checksum) 一種用特徵值驗證文件的方法。特徵值通過對文件的所有信息進行某種計算而產生。
2017-02-23
循環定義(circular definition) 參見“無限循環”(infinite loop)。
2017-02-23
類(class) 面向對象編程語言的一種數據類型。
2017-02-23
點擊軌跡(click trail) 同一個用戶向網絡服務器發出的一系列HTTP請求,基本等同於他瀏覽的網頁順序。
2017-02-23
客戶端(client)
2017-02-23
源代碼(source code)
2017-02-23
託管(collocated) 通常指放在ISP處。
2017-02-23
註釋(comment)
2017-02-23
Common Lisp Lisp語言的一種流行的方言
2017-02-23
編譯器(compiler)
2017-02-23
“解釋器”(interpreter)
2017-02-23
複雜度(complexity) 算法的“時間複雜性”(time complexity)指的是,當輸入的數據量不斷增加時,計算機完成這種算法所消耗的時間。比如,假定你要在一間屋子中尋找某一個人,方法是看每個人的臉,那麼找到這個人所需要的時間與屋中的人數成正比。這樣一種算法就叫做O(n),意爲所需的時間與n成比例(n代表數據量)。現在進一步假設你要在屋子中尋找看上去長得很像的兩兄弟(或兩姐妹),那麼你所需要的時間可能與人數的平方成正比,因爲你也許不得不每兩個人就比較一次,而所有可能的兩人組合是人數的平方,算法就是O(n︿2)。
2017-02-23
條件結構(conditional)
2017-02-23
基於內容的過濾(content-based filtering) 根據電子郵件的內容而不是它的外部特徵(比如發信地址)進行過濾。
2017-02-23
CPU(中央處理器,Central Processing Unit)
2017-02-23
處理器現在廣泛用於各種各樣的設備,比如顯卡和硬盤。
2017-02-23
崩潰(crash) bug引起的操作系統或應用程序停止正常工作。用在硬盤上面也指硬件失靈。
2017-02-23
冗餘(cruft)
2017-02-23
週期(cycle) 執行一個機器指令的最少時間。一臺內部時鐘頻率1 GHz的計算機可以在1秒內完成10億個週期,即每秒執行10億條機器指令。
2017-02-23
DARPA(美國國防部高級研究計劃局,Defense Advanced Research Projects Agency) 一個贊助美國國內很多計算機研究項目的機構。
2017-02-23
數據結構(data structure) 一種由多個部分組成的數據格式。比如,一對數據可以組成一個數據結構,表示圖形上的一個點。
2017-02-23
數據類型(data type) 編程語言處理的數據種類。
2017-02-23
動態類型(dynamic typing)
2017-02-23
“靜態類型”(static typing)
2017-02-23
排錯(debugging)
2017-02-23
聲明(declaration) 程序的要素之一,描述的成分多於命令的成分。最常見的聲明是變量類型聲明,用於說明一個變量包含哪一類數據。
2017-02-23
廢棄(deprecated) 原來屬於標準的某種做法,現在它的設計者後悔做出了這樣的設計。
2017-02-23
設計戰爭(design war) 一種競爭規則,只要是最好的設計就能獲勝,而不是其他因素(比如廣告宣傳、銷售渠道的控制)主導競爭。
2017-02-23
硬件驅動程序(device driver) 操作系統的一部分,使操作系統可以與硬件設備(比如打印機)對話。
2017-02-23
diff 對某件東西的兩個版本進行客觀的、精細的比較。這個詞源自Unix操作系統的一個用來比較文件的應用程序。
2017-02-23
嵌入式語言(embedded language) 在一種語言內部定義的另一種語言,常用於解決某些特殊的問題。比如,如果你定義了一系列操作圖像的命令,你就可以把它們視爲一種操作圖像的語言,參見“自下而上編程法”(bottom-up programming)。
2017-02-23
最終用戶(end user) 需求很簡單的用戶的婉轉說法。
2017-02-23
編程環境(environment) 幫助編程的軟件,比如編輯器和性能分析器。
2017-02-23
表達式(expression)
2017-02-23
字段(field) 一種數據結構的組成部分。
2017-02-23
FreeBSD 一種Unix的開源版本。
2017-02-23
自由軟件(freeware)
2017-02-23
在一些語言中函數也是一種數據類型。
2017-02-23
垃圾回收機制(garbage collection) 程序自動判斷哪些內存不再需要,並予以回收,而不是要求程序員在使用完畢後明確聲明
2017-02-23
goto 將程序的運行順序從一部分改向另一部分的命令。goto與子程序調用最大的不同在於它使用後沒有辦法再回到原處。所以如果用了goto,程序往往會亂成一團。現在已經很少使用這個命令了。
2017-02-23
格林斯潘第十定律(Greenspun’s Tenth Rule) “任何C或Fortran程序複雜到一定程度之後,都會包含一個臨時開發的、只有一半功能的、不完全符合規格的、到處都是bug的、運行速度很慢的Common Lisp實現。”
2017-02-23
破解(hack) 一種破壞規則的解決方法,可能有益也可能有害。
2017-02-23
黑客(hacker)
2017-02-23
散列表(hash table) 一種類似數據庫的數據結構,存儲在裏面的每一段數據都有一個對應的鍵,使用時只要按照鍵就可以取出對應的數據。
2017-02-23
郵件頭(header) 電子郵件最前面的那部分,包含了郵件本身的相關信息。普通用戶只會看到發信人(From)、收信人(To)、日期(Date)、主題(Subject)、抄送(Cc)等信息,但是還包含其他信息(比如郵件的傳送路徑)。
2017-02-23
啓發(heuristic) 從經驗法則中得到靈感。
2017-02-23
縮進(indented)
2017-02-23
解釋器(interpreter)
2017-02-23
內循環(inner loop) 一個程序中執行次數最頻繁的部分。
2017-02-23
記錄儀(instrument) 修改程序使得它的每一步結果都得到記錄,這樣的話,如果程序運行速度緩慢或者佔用太多內存,你就能找到原因。
2017-02-23
蹩腳(kludge) 水平很差的破解。(這個詞與stooge“丑角”是押韻的!)
2017-02-23
雛形創業公司(larval startup) 創業公司最早期、還未成形的階段。此時,潛在的創業者還不確定是否應該成立一家公司創業。
2017-02-23
歷史遺留軟件(legacy software) 這些軟件雖然還有人使用,但是並不符合使用者的要求。他們繼續使用它們只是因爲無錢購買新軟件,或者不敢改變現狀。
2017-02-23
閉包(lexical closure) 一個函數,通過它可以引用由包含這個函數的代碼所定義的變量。
2017-02-23
LFSP(聰明人的語言,Language For Smart People) 設計目標主要是追求功能強大而不是保證安全性的編程語言。
2017-02-23
函數庫(library)
2017-02-23
Linux Unix操作系統的一個開源版本。講究一點的話,它應該被稱爲GNU Linux,因爲它的內核部分是由Linus Torvalds編寫的,但是其他更大量的代碼來自Richard Stallman的GNU項目。
2017-02-23
列表(list) 一連串的數據塊,各個數據塊的類型通常是不一樣的。不同的列表可以像火車車廂一樣連接在一起,組成更大的列表。
2017-02-23
字面量(literal representation) 一種直接在高級語言中表示數據的方法。
2017-02-23
機器指令(machine instruction)
2017-02-23
機器語言(machine language)
2017-02-23
宏(macro) 一個能夠生成其他程序的程序。
2017-02-23
大型機(mainframe) 根據20世紀六七十年代的設計而建造的大型計算機。
2017-02-23
對數學家的妒忌(math envy) 擔心自己不如數學家聰明。這種焦慮的一個重要體現就是讓自己的工作成果帶有一種完全不必要的數學味。
2017-02-23
元循環(metacircular) 當一種語言的解釋器用這種語言本身開發時,就會出現這種情況。與其說這是爲了做出這種語言的一種實現,還不如說這是描述語言的一種技巧。
2017-02-23
方法(method) 面向對象編程中充當某個類的屬性的一個子程序。
2017-02-23
模塊(module) 一組子程序和變量,它們可以被視爲是一個整體。通常情況下,模塊外部的代碼只能訪問模塊內部一部分專門對外公開的子程序和變量。
2017-02-23
摩爾定律(Moore’s Law) 摩爾定律的正式版本是指,一塊芯片上的晶體管數量每兩年就會翻一番。但是,大多數人提到這個術語時,指的卻是處理器的運算速度每18個月就會翻一番。很多人認爲摩爾定律更像是商業計劃,而不是產業發展的規律,畢竟它的提出者Gordon Moore是英特爾公司的創始人之一。
2017-02-23
數字密集運算(number crunching) 對巨量的數值資料進行直接處理。
2017-02-23
目標碼(object code) 編譯器產生的機器語言。
2017-02-23
OO(面向對象,object-oriented) 一種組織程序的方式。假定不同的類代表不同類型的數據,那麼針對這些數據執行某種特定任務的代碼,可以根據數據的不同被分別寫進不同的類,成爲這些類的方法。
2017-02-23
“奧卡姆剃刀”原則(Occam’ Razor) 簡單的解釋就是較好的解釋。
2017-02-23
開放源代碼(open source)
2017-02-23
正交的(orthogonal) 彼此獨立、能夠以多種方式組合在一起的一組東西。經典的樂高積木就比普通的塑料模型玩具更有正交性。
2017-02-23
優化(optimization) 調整程序,使得它的效率更高。
2017-02-23
帕金森定律(Parkinson’s Law) 完成一項任務所需要的資源會不斷擴展,直至把這種資源消耗光爲止。
2017-02-23
解析器(parser) 讀取輸入的數據然後生成解析樹的程序。
2017-02-23
解析樹(parser tree) 解析器讀取源碼後生成的數據結構。它是將源碼翻譯成機器語言的第一步。
2017-02-23
補丁(patch)
2017-02-23
PDA(個人數字助理,Personal Digital Assistant) 一種可以隨身攜帶的小型計算機。它的操作界面通常比正規計算機更簡單,限制也更多。
2017-02-23
管道(pipe) 將操作系統的各種命令連接起來的一種方式,使得一個命令的輸出變成另一個命令的輸入。
2017-02-23
指針(pointer) 一塊數據,它的值是另一塊數據的內存地址。
2017-02-23
指針運算(pointer arithmetic) 通過對已知地址進行加法運算在內存中找到目標對象。這是低層次語言的一種技巧。
2017-02-23
可移植性(portable)
2017-02-23
門戶(portal) 網站。
2017-02-23
過早設計(premature design) 過早決定一個程序的行爲。
2017-02-23
過早優化(premature optimization) 還沒有寫完程序,你就開始考慮它的性能問題。
2017-02-23
進程(process)
2017-02-23
性能分析器(profiler) 一種觀察運行中的目標程序的程序,它會告訴你目標程序的哪一個部分最消耗資源。
2017-02-23
僞碼(pseudocode)
2017-02-23
QA(質量保證,Quality Assurance) 軟件行業中負責找出和登記bug的人。
2017-02-23
遞歸(recursive) 一種調用自身的算法。警察審訊犯人時就會用到遞歸。警察先問犯人是否知道案件的情況,或者是否知道誰幹的,如果犯人回答知道,那麼繼續這樣問下去。
2017-02-23
RAID(冗餘獨立磁盤陣列,Redundant Array of Independent Disks) 一種硬件,將多個硬盤模擬成單硬盤,(理論上)避免了硬盤崩潰。
2017-02-23
“讀取—求值—打印”循環(read-eval-print loop) 一種頂層解釋器(toplevel)。
2017-02-23
RISC(精簡指令集計算機,Reduced Instruction Set Computer) 這種計算機的機器語言功能有限,但是運行速度較快。它的目標是更好地適應編譯器的需要
2017-02-23
掃描(scan) 讀取一串字符,將其分解成一個個的語義單位(token)。
2017-02-23
腳本語言(scripting language) 一種編程語言,用來對某個程序進行定製。有時,開源編程語言(比如Perl和Python)也被稱爲腳本語言,但是這種叫法意義不大。
2017-02-23
SETI@home(搜尋地外文明,Search for Extra-Terrestrial Intelligence) 一個科研項目,使用互聯網上桌面電腦的空閒計算能力搜索宇宙中其他生命發出的電磁波。
2017-02-23
s-表達式(s-expression) 一種語義單位(token),用括號表示,內部可以再包含0到多個s-表達式。
2017-02-23
套接字(socket) Unix操作系統的一種內部渠道,不同計算機的進程通過它可以在網絡上交換信息。
2017-02-23
麪條式代碼(spaghetti) 扭曲纏繞在一起的代碼,沒有人能夠讀懂,包括作者本人。
2017-02-23
spam 無緣無故收到的、數量龐大的垃圾郵件,通常是廣告。這個詞來自Monty Python劇團的喜劇小品,每當餐廳服務員打開一聽Spam牌罐裝肉,一羣維京海盜打扮的演員就齊聲高唱“Spam,Spam,Spam”,將主人公的對話聲都淹沒了,因此spam就有了外界強加的大量打擾的含義。
2017-02-23
規格(spec) 軟件的規格說明書。對程序功能的一種非正式描述。
2017-02-23
SSH(安全shell,Secure Shell) 可以安全連接遠程計算機的一種程序。
2017-02-23
SSL(安全套接字層,Secure Sockets Layer) 一種在網絡上安全傳輸數據的協議。
2017-02-23
狀態機(state machine) 一種理論上的機器,它的所有可能狀態是一個集合。當滿足某些條件時,狀態之間就會發生轉換。
2017-02-23
語句(statement) 一串不產生值的代碼。爲了使得自己有用,它必須能夠產生一些實際效果,比如顯示內容。有人認爲這個概念本身就是錯的,在一些語言中根本沒有語句,只有表達式。
2017-02-23
靜態類型語言(static typing) 這一類編程語言的所有變量的類型在開始編寫程序的時候就必須知道。
2017-02-23
子程序(subroutine)
2017-02-23
子集(subset)
2017-02-23
西裝革履的人士(suits)
2017-02-23
符號(symbol) 一種數據類型,語義單位(token)就是符號的實例。符號與字符串很類似,除了兩點區別:(a)一個符號就是一個獨立的單位,而不僅僅是一串字符;(b)一個符號通常只有一個對應的名稱,而包含同樣字符的字符串卻可能有好幾種。
2017-02-23
句法(syntax)
2017-02-23
系統管理員綜合症(system administrator disease) 系統管理員心底裏總是認爲,他們管理的那些設備只是獨立的設備,而不是用戶的工具。更概括地說,他們的態度就是將客戶視爲一種麻煩,而不是自己能夠有這個飯碗的原因。這種心理是感受不到競爭壓力的工作職位所特有的。
2017-02-23
一次性程序(throwaway program) 爲了滿足暫時性需求而編寫的程序。
2017-02-23
語義單位(token) 一串同屬於一個單位的字符。更通用的叫法是“詞”(word)。
2017-02-23
頂層解釋器(toplevel) 編程語言的一種界面,你可以在其中用這種語言與計算機進行不間斷的對話,正如你在Unix的shell界面中所做的那樣,而不是簡單地編譯程序,然後運行,對話就結束了。
2017-02-23
樹(tree) 一種數據結構,它包含的每一個實例都可以指向兩個或更多的實例,比如家譜樹。
2017-02-23
圖靈完備(Turing-complete) 如果一種編程語言寫出的所有程序都能被轉換成圖靈機程序,並且反之也成立,那麼這種編程語言就是圖靈完備的。所有當代編程語言都是圖靈完備的,這意味着(在理論上)它們的功能都是一樣強大的。圖靈完備又稱圖靈等價(Turing- equivalent)。
2017-02-23
圖靈機(Turing machine) 一種完全虛構的計算機,作用是證明計算理論。由於所有計算機的程序都可以被轉換成圖靈機程序,所以在這個意義上,你不可能做出比圖靈機更強大的計算機。但是沒有人能保證這一點,因爲“計算機”這個詞並沒有被正式定義過。
2017-02-23
UDP 一種網絡傳播信息的協議。
2017-02-23
UI 用戶界面(User Interface)。
2017-02-23
向量(vector)
2017-02-23
正常運行時間(uptime) 一臺計算機(特別指一臺服務器)正常工作的時間百分比。它的另一個意思是指某臺計算機從上次宕機到現在的時間長度。
2017-02-23
朦朧件(vaporware) 談論已久但是遲遲不亮相的軟件。
2017-02-23
VC(風險投資商,Venture Capitalist) 爲他人創業或再融資提供金錢的人,他們要求創業者用股份來交換投資。
2017-02-23
1.0版(version 1.0) 某樣東西的第一個版本,暗示不完整、不好用。
2017-02-23
楔住(wedged) 表示無迴應狀態,尤其是指服務器。
2017-02-23
所見即所得(wysiwyg) What you see is what you get(你看到的就是你得到的)的縮寫(發音爲whizzy wig)。比如文字處理器中,你在屏幕上看到的頁面與打印機的輸出是一樣的。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章