每一位黑客都應(yīng)該知道的事情

申明:本文并不是《Things Every Hacker Once Knew》的完整、準(zhǔn)確的中譯版,其中不乏自認(rèn)為正確的個(gè)人觀點(diǎn),詳情請(qǐng)參考原文。

硬件

現(xiàn)在,當(dāng)兩臺(tái)物理機(jī)進(jìn)行信息交互時(shí),通常會(huì)遵守 TCP/IP 協(xié)議,即使是終端這樣的模擬器,也同樣如此。但在 1992 年之前,如果你能夠接觸到當(dāng)時(shí)非常昂貴的工作站硬件,你會(huì)發(fā)現(xiàn)情況和現(xiàn)在是完全不同的。

20 世紀(jì) 70 年代中期,視頻顯示終端實(shí)際上是由“電傳打字機(jī)”演變而來的,而“電傳打字機(jī)”則是由維多利亞時(shí)代的電報(bào)演變而來的。1960 年末,Unix 剛出現(xiàn)時(shí),主要是為打印顯示終端而編寫的,尤其是被稱為 Teletype Model 33(簡稱 ASR-33)的機(jī)型,我們現(xiàn)在依然能在 Unix 設(shè)備上看到的 “tty” 是當(dāng)時(shí)流行的 “teletype” 的縮寫。

在互聯(lián)網(wǎng)之前的,計(jì)算機(jī)之間很少交互,電傳打字機(jī)和終端需要使用一種稱為 “RS-232” 的硬件協(xié)議與計(jì)算機(jī)交互。RS-232 的壽命很長,20 世紀(jì) 60 年代問世,至今仍被使用,最初不是用于和計(jì)算機(jī)通信,而是用于電傳打字機(jī)與調(diào)制解調(diào)器通訊。在 USB 之前,當(dāng)人們談到 "串行 "鏈接時(shí),他們指的是 RS-232,有時(shí)也將使用它的設(shè)備稱為 "串行終端"。

今天,一臺(tái)個(gè)人電腦上有多個(gè)處理器,可以同時(shí)處理多個(gè)任務(wù),但在過去,多個(gè)用戶的多個(gè)任務(wù)被分配到一臺(tái)機(jī)器的一個(gè)處理器上,這被稱為“分時(shí)租憑”。20 世紀(jì) 80 年代中期的 DEC VAX 11-780 微型計(jì)算機(jī),采用分時(shí)租賃的方式處理任務(wù),能夠支持十幾個(gè)用戶同時(shí)使用,但相比于 2017 年的低端智能手機(jī),其運(yùn)算能力不到它的 1/1000,可用存儲(chǔ)空間不到它的 1/5000。

調(diào)制解調(diào)器

調(diào)制解調(diào)器起初是為 1950 年代的美軍半自動(dòng)地面防空系統(tǒng)(Semi-Automatic Ground Environment,簡稱 SAGE )研制,用來連接不同基地的終端,雷達(dá)站和指令控制中心到美國和加拿大的 SAGE 指揮中心。 SAGE 運(yùn)行在專用線路上,但是當(dāng)時(shí)兩端使用的設(shè)備跟今天的調(diào)制解調(diào)器根本不是一回事。IBM 是 SAGE 系統(tǒng)中計(jì)算機(jī)和調(diào)制解調(diào)器的供貨商。幾年后美國航空的首席執(zhí)行官與 IBM 一位區(qū)域經(jīng)理的一次會(huì)晤促使"mini-SAGE"這種航空自動(dòng)訂票系統(tǒng)。在這系統(tǒng)中,一個(gè)位于票務(wù)中心的終端連接在中心電腦上,用來管理機(jī)票有效性和時(shí)間。這個(gè)系統(tǒng),叫做 Sabre,是今天SABRE 系統(tǒng)的早期原型。 1960 年代早期,商業(yè)計(jì)算機(jī)的應(yīng)用逐漸普及,加上上述技術(shù)成果,1962 年,AT&T 發(fā)布了第一個(gè)商業(yè)化調(diào)制解調(diào)器 Bell 103。使用兩個(gè)音調(diào)表示 1 和 0 的移頻鍵控技術(shù),103 已經(jīng)能夠?qū)崿F(xiàn) 300 bps的傳輸速度。很短時(shí)間后繼版本 Bell 212 就研制出來,轉(zhuǎn)移到更穩(wěn)定的移相鍵控技術(shù)把數(shù)據(jù)速率提高到 1200 bps。 類似 Bell 201 的系統(tǒng)用雙向信號(hào)集在4對(duì)專用線路上實(shí)現(xiàn)了 2400 bps。 賀氏智能調(diào)制解調(diào)器(Hayes Smartmodem)是一個(gè)重大的進(jìn)步,1981年由賀氏通訊研制成功。最早的智能調(diào)制解調(diào)器是一個(gè)300 bps調(diào)制解調(diào)器,使用Bell 103通信協(xié)議標(biāo)準(zhǔn),并內(nèi)置了一個(gè)微控制器,可以讓計(jì)算機(jī)發(fā)送命令來控制電話線,例如摘機(jī)、撥號(hào)、重?fù)?、掛機(jī)等功能。這些指令被廣為沿用,并逐漸擴(kuò)展,被稱為海斯指令集(Hayes command set)。

在智能調(diào)制解調(diào)器之前,幾乎所有的調(diào)制解調(diào)器都需要兩個(gè)步驟來產(chǎn)生一個(gè)連接:第一步,人工在電話機(jī)上撥叫對(duì)方的號(hào)碼,然后將聽筒放在調(diào)制解調(diào)器附帶的聲音耦合器(acoustic coupler)里,一個(gè)用兩個(gè)橡膠杯組成的用來在聲音信號(hào)和電信號(hào)之間轉(zhuǎn)換的設(shè)備。使用智能調(diào)制解調(diào)器除了不需要聲音耦合器,更重要的是直接將調(diào)制解調(diào)器連接在標(biāo)準(zhǔn)電話線或插座上。然后電腦就能自動(dòng)完成接通電話并撥叫號(hào)碼的功能。這個(gè)改變極大的簡化了電子布告欄系統(tǒng)(BBS)的安裝和使用。

核心的意義

從 1955 年到 1975 年,在半導(dǎo)體存儲(chǔ)器出現(xiàn)之前,計(jì)算機(jī)存儲(chǔ)器數(shù)據(jù)主要依賴于帶有磁性的銅線圈,這些銅線圈被稱為“鐵氧體磁芯”,主存儲(chǔ)器也因此被稱為“核心存儲(chǔ)器”或“核心”。

Unix 這個(gè)詞是 20 世紀(jì) 70 年代初產(chǎn)生的,直到 20 世紀(jì) 90 年代,每個(gè)黑客都知道這個(gè)詞的意義,然而,2000 年以后,隨著多處理器系統(tǒng)變得越來越普遍,“處理器核心”開始簡稱為“核心”。2017 年以后,“核心”這個(gè)詞的意義開始變得模糊,舊時(shí)的稱呼已經(jīng)不再被大眾所理解,這個(gè)詞語的意義開始變得令人費(fèi)解。

36 位機(jī)器和 8 進(jìn)制的持久性

現(xiàn)在的系統(tǒng)通常是 2 的 N 次方大小,8 位、16 位、32 位或者 64 位,但在 1983 年之前,曾經(jīng)出現(xiàn)過一個(gè) 36 位的計(jì)算機(jī)系統(tǒng)架構(gòu),當(dāng)時(shí),關(guān)于 36 位機(jī)器的知識(shí)在黑客界得到了廣泛的傳播,其中最具代表性的兩臺(tái)機(jī)器分別是 DEC PDP-10 和 Symbolics 3600 Lisp。

現(xiàn)在回過頭來看,16 位機(jī)器存儲(chǔ) 2 進(jìn)制的字節(jié),這是理所應(yīng)當(dāng)?shù)氖虑?,但那時(shí),人們普遍認(rèn)為,通過在內(nèi)存轉(zhuǎn)存中是否能看到大于 7 的數(shù)字,就能夠判斷一臺(tái)機(jī)器是 32 位的機(jī)器還是 36 位的機(jī)器。

下面是關(guān)于過去那臺(tái) 36 位機(jī)器的一些事情:

  • 36 位能夠代表期待范圍的正負(fù)整數(shù)和小數(shù),32 位的標(biāo)準(zhǔn)化的過程遭到了數(shù)字分析師和科學(xué)計(jì)算領(lǐng)域人士的抵制,他們非常希望能夠有多出來的那 4 位的精確度,但是沒有成功;
  • 在 36 位機(jī)器上,一個(gè)“字符”可能是 9 位,一個(gè)字就是 4 個(gè)字符,因此,為這些機(jī)器設(shè)計(jì)的鍵盤就會(huì)有一個(gè)鍵來表示這個(gè)字符是 8 位還是 9 位。
  • 在 36 位機(jī)器上,一個(gè)“字符”也有可能是 6 位,也因此會(huì)有許多不同的 6 位字符編碼,而且不僅不同制造商之間不統(tǒng)一,單個(gè)制造商也會(huì)使用不同的編碼。

C 的祖先是一種寫在 PDP-7 上的解釋性語言,被命名為 B,在 B 語言中,以 0 開頭的數(shù)字被解釋為 8 進(jìn)制。

PDP-7 的繼任者,也是第一臺(tái) Unix 系統(tǒng)的機(jī)器 PDP-11,首次實(shí)現(xiàn)了 C 語言的雛形,它主要采用 16 進(jìn)制解釋器,并對(duì)其的語法進(jìn)行了拓展:當(dāng)字符串的反斜杠后面有一個(gè)數(shù)字時(shí),會(huì)被識(shí)別為八進(jìn)制。PDP-11 如此成功,不僅成為了主流,扼殺了 36 位機(jī)器,還影響了后來的語言(Java、Python 等)的設(shè)計(jì),這些語言出于兼容性的考慮,復(fù)制了 C 語言低級(jí)的規(guī)則,這有時(shí)會(huì)對(duì)那些 3 比特內(nèi)核的系統(tǒng)造成困擾,而且這個(gè)困擾或許永遠(yuǎn)也也不會(huì)消除了。

RS232 和它的不足之處

TCP/IP 就像一個(gè)簡單清晰的八位字節(jié)流,數(shù)據(jù)傳輸?shù)乃俣热Q于網(wǎng)絡(luò)傳輸?shù)乃俣龋义e(cuò)誤檢測(cè)/糾正是在后臺(tái)進(jìn)行處理的。

但 RS-232 不是這樣的,使用 RS-232 協(xié)議進(jìn)行數(shù)據(jù)傳輸?shù)膬膳_(tái)機(jī)器,必須使用相同的數(shù)據(jù)編碼格式,在傳輸之前需要協(xié)商好數(shù)據(jù)傳輸?shù)乃俣?,并且錯(cuò)誤檢測(cè)和糾正也是在數(shù)據(jù)流中完成的。這就要求你在進(jìn)行數(shù)據(jù)傳輸之前,對(duì)兩端的設(shè)備進(jìn)行設(shè)置,如果一端的設(shè)置和另一端不匹配,則會(huì)帶來可怕的錯(cuò)誤,在過去的那些日子里,數(shù)據(jù)傳輸?shù)摹按嗳跣浴辈谎远鳌?/p>

RS-232 的硬件設(shè)備也并不是同意的,1962 年定義的標(biāo)準(zhǔn) RS-232 使用了一個(gè) D 型的外殼,有 25 個(gè)物理針腳,遠(yuǎn)超過了物理協(xié)議的實(shí)際需求,20 年后,在 1984 年的 IBM PC-AT 推出后,大多數(shù)制造商轉(zhuǎn)而使用了較小的 DB-9 連接器,最后,這些端口被 USB 和以太網(wǎng)淘汰了。

RS-232 在發(fā)展的過程中,存在眾多令人難受的體驗(yàn),比如,你無法區(qū)分一個(gè)設(shè)備是失去連接還是默默工作,在 2000 年以后,更是存在兩種不同電壓的外接設(shè)備,導(dǎo)致 TTL 端的元件在誤操作的情況下發(fā)生燒毀,最終,RS-232 在 20 世紀(jì) 90 年代中后期,慢慢被人遺忘,但直到 2010 年左右,才最終從通用計(jì)算機(jī)中消失。

我之所以討論這個(gè)問題,是因?yàn)橐恍┰O(shè)備(比如 GPS),可能仍然需要知道什么是 RS-232 “握手的過程”,比如:一個(gè)終端可以改變 DTR(數(shù)據(jù)終端就緒)線的狀態(tài),以此表明它準(zhǔn)備接受、啟動(dòng)或者繼續(xù)一個(gè)調(diào)制解調(diào)器會(huì)話。而且在銷售系統(tǒng)、商業(yè)級(jí)路由器的診斷控制臺(tái)和嵌入式系統(tǒng)的調(diào)試控制臺(tái)中也被使用。

廣域網(wǎng)時(shí)代的到來:前互聯(lián)網(wǎng)時(shí)代

今天,TCP/IP 幾乎是僅存的廣域網(wǎng),但在 70 年代末期到 90 年代中期,尤其是 1981 年到 1991 年間,情況卻是完全不同的,當(dāng)時(shí)有大量的廣域網(wǎng)同時(shí)存在,人們有時(shí)會(huì)在宣傳自己的網(wǎng)站時(shí)書寫多個(gè)不同的網(wǎng)絡(luò)地址。

一些年紀(jì)稍長的黑客都會(huì)記得 UUCP 和 BBS,大量的人參與過這兩個(gè)活動(dòng),那時(shí)候,如果你不是隸屬于聯(lián)邦機(jī)構(gòu)、軍事項(xiàng)目或大學(xué)研究實(shí)驗(yàn)室,就很難從事“真正”的互聯(lián)網(wǎng)(APPANET)。因此,人們嘗試用他們已有的設(shè)備,調(diào)制解調(diào)器和電話線來進(jìn)行信息傳輸。

UUCP 是 Unix to Unix Copy Program 的縮寫,1979 年誕生于貝爾實(shí)驗(yàn)室,1990 年中期,在互聯(lián)網(wǎng)中名聲大噪,它用調(diào)制解調(diào)器和電話網(wǎng)絡(luò),在 Unix 站點(diǎn)之間提供了緩慢但非常成功的網(wǎng)絡(luò)。 UUCP 是一個(gè)存儲(chǔ)和轉(zhuǎn)發(fā)系統(tǒng),最初是為了軟件的更新和發(fā)版,但它的使用場景迅速轉(zhuǎn)變?yōu)殡娮余]件和一個(gè)叫做 USENET(Stack Overflow 和其他現(xiàn)代網(wǎng)絡(luò)論壇的前身)的東西。它支持信息的分類和聚合,將這些信息通過 UUCP 從源頭進(jìn)行傳播,最終涌向整個(gè)網(wǎng)絡(luò)。從某種程度上來看,UUCP 和 USENET 是對(duì)當(dāng)時(shí)已經(jīng)存在的電話系統(tǒng)的破解,當(dāng)時(shí)的電話分為“本地”和“長途”,“本地”電話按月收費(fèi),“長途“電話按分鐘收費(fèi),價(jià)格昂貴。UUCP 的流量通過本地轉(zhuǎn)換,可以進(jìn)行長距離傳輸,在便宜的互聯(lián)網(wǎng)到來之前,這對(duì)于黑客文化的形成,非常重要,USENET 小組可以通過這種方式分享源代碼,一些慣例至今仍在使用,比如將項(xiàng)目根目錄的數(shù)據(jù)文件命名為 README。

USENET 有兩個(gè)歷史上非常重要的日期,一個(gè)是 1987 年的重命名,另一個(gè)是 1993 年的“永不結(jié)束的九月”,前者對(duì) USENET 主題分類進(jìn)行了重新命名,后者可以讓用戶使用分時(shí)服務(wù)的 USENET。UUCP 非常難配置,以至于那些知道如何配置的人經(jīng)常在他們的簡歷上寫上這種技能,并以此獲得一份工作。

與此同時(shí),在微型計(jì)算機(jī)的世界里,一種全新的存儲(chǔ)和轉(zhuǎn)發(fā)方式也在發(fā)展——BBS(公告板系統(tǒng))。BBS 是一個(gè)在計(jì)算機(jī)上運(yùn)行的軟件,有一個(gè)連接調(diào)制解調(diào)器的位置,可以接受電話線連接。用戶可以使用他們自己的調(diào)制解調(diào)器和終端程序訪問 BBS,BBS 軟件允許他們互相留言,上傳和下載文件,有時(shí)還可以玩游戲。

第一個(gè) BBS 系統(tǒng)的商業(yè)運(yùn)營在 1978 年芝加哥的超市里以社區(qū)廣告牌的形式展示在大家面前,在接下來的 18 年里,有超過十萬個(gè) BBS 閃亮登場,很多時(shí)候只是系統(tǒng)管理員的私人電腦或者車庫里的備用電腦。1984 年開始,BBS 文化發(fā)展出了一種另類的形式,叫做 “FidoNet”,支持跨網(wǎng)站的電子郵件和類似于 USENET 的論壇系統(tǒng),也有一些 UUCP 移植到 DOS 個(gè)人電腦上,但都沒有改變 UUCP 和 BBS 各自獨(dú)立的現(xiàn)狀,最終兩者都被互聯(lián)網(wǎng)的浪潮所吞沒。

現(xiàn)在仍有少數(shù) BBS 由一些懷舊者運(yùn)營著,一些文化得以傳承,但就像 UUCP 網(wǎng)絡(luò)一樣,在互聯(lián)網(wǎng)如此廉價(jià)的今天,BBS 的存在已經(jīng)失去了最初的意義,關(guān)于 BBS 的記憶幾乎只剩下圍繞著一系列文件傳輸協(xié)議——XMODEM、YMODEM 和 ZMODEM,這些在 BBS 之前就已經(jīng)開發(fā)出來,主要用于 BBS 的協(xié)議。

FTP、Gopher 和被遺忘的前網(wǎng)絡(luò)時(shí)代

在 20 世紀(jì) 90 年代初的短短幾年時(shí)間里,王維網(wǎng)從無到有,無處不在。在此之前,,從 1971 年開始,互聯(lián)網(wǎng)網(wǎng)站之間的文件傳輸通常是由一個(gè)名為 ftp 的工具完成的,因?yàn)樗褂玫氖俏募鬏攨f(xié)議,但最終,ftp 被其他使用 FTP 協(xié)議的網(wǎng)絡(luò)瀏覽器所取代。

與此同時(shí),蒂姆-伯納斯-李發(fā)明萬維網(wǎng)的同一年(1991 年),明尼蘇達(dá)大學(xué)的一群黑客設(shè)計(jì)了“Gopher”,一個(gè)以菜單為中心而不是以鏈接為中心的超文本協(xié)議,幾年時(shí)間里,Gopher 與早期的萬維網(wǎng)展開了激烈的競爭,許多黑客同時(shí)使用這兩種協(xié)議,直到 1993 年,大學(xué)開始對(duì)其實(shí)施使用許可費(fèi)后,Gopher 開始沒落。盡管現(xiàn)在仍有一些 Gopher 服務(wù)器在運(yùn)行,但 Gopher 實(shí)際上已經(jīng)名存實(shí)亡了。

終端的混亂

現(xiàn)代 Unix 系統(tǒng)上的軟件終端經(jīng)歷了一個(gè)漫長而且混亂的發(fā)展過程,它最初源于早期的顯示器,有時(shí)被稱為“玻璃 TTY”——因?yàn)樗梢阅M打印機(jī)現(xiàn)實(shí)內(nèi)容,但是不需要消耗紙張。

第一臺(tái)終端在 1969 年出廠,其中最被大眾所知的,可能是 1975 年的 ADM-3 型號(hào)。就像早期的 ASR-33 一樣,這些設(shè)備有一個(gè)有趣的歷史遺留問題,盡管 1975 年后制造的顯示器可以展示小寫字母,但 Unix (以及 2018 年之前的 Linux)對(duì)以大寫字母開頭的輸入,會(huì)產(chǎn)生令人費(fèi)解的結(jié)果。

終端的發(fā)展還曾經(jīng)歷過代碼進(jìn)行輸出控制的過程,直到 1979 年后,一個(gè)叫做 DEC VT-100 的終端控制 ANSI 標(biāo)準(zhǔn)的出現(xiàn),這個(gè)局面才得以改變。

如今,那些能夠顯示各種圖案和顏色的顯示界面被我們稱為“GUI“,那些只使用字符的程序界面現(xiàn)在被稱為”TUI“。

一些黑客會(huì)知道,屏保的出現(xiàn),是為了避免陰極射線管持續(xù)受到一種叫做“熒光粉燒毀”的現(xiàn)象的影響,這種影響會(huì)永久性地?fù)p害屏幕。

位圖顯示

早期的終端機(jī)只能顯示固定的字母組成的字符,1973 年,施樂公司第一個(gè)采用位圖顯示圖像,并創(chuàng)造了第一個(gè)生產(chǎn)系統(tǒng)阿爾托。

早期的 Alto 顯示器只有 608808 像素,1981 年,它的繼任者“蒲公英”達(dá)到了 1024809 像素,施樂公司曾稱其為“施樂之星”,但最終商業(yè)化運(yùn)營失敗。1982 年,Sun Microsystems 公司推出了 1024*800 像素的 Sun-1,這臺(tái)機(jī)器的一系列產(chǎn)品獲得了巨大的成功,直到 90 年代末 IBM PC 的出現(xiàn),但是這些機(jī)器都太昂貴了。

1975 年開始,位圖開始能夠顯示彩色,如蘋果二代,但是它們的像素只有 280*192。

很長一段時(shí)間里,黑客們不得不選擇分辨率較高的黑白顯示器,它們相對(duì)便宜,且夠大,更適合黑客們?nèi)粘5墓ぷ骱蜕睢?990 年左右,1024*1024 的彩色顯示器才進(jìn)入高端消費(fèi)市場,但那時(shí)的顯示器質(zhì)量仍然很差,由于為陰極射線管制造彩色的費(fèi)用相對(duì)較高,難度很大,成像存在著明顯的瑕疵。這些問題直到平面顯示器出現(xiàn)之后才得到解決。

ASCII 碼

ASCII 碼,即美國信息交換標(biāo)準(zhǔn)代碼,是 20 世紀(jì) 60 年代初,從電傳打字機(jī)上使用的一系列字符碼中演變而來的。與許多早期的字符編碼不同,ASCII 碼至今仍被使用且可能長期被使用。如果你不知道 UTF-8 是什么樣的,ASCII 碼也是 UTF-8。

下表是 ASCII-1967,也是現(xiàn)在正在使用的版本:

Dec Hex    Dec Hex    Dec Hex  Dec Hex  Dec Hex  Dec Hex   Dec Hex   Dec Hex
  0 00 NUL  16 10 DLE  32 20    48 30 0  64 40 @  80 50 P   96 60 `  112 70 p
  1 01 SOH  17 11 DC1  33 21 !  49 31 1  65 41 A  81 51 Q   97 61 a  113 71 q
  2 02 STX  18 12 DC2  34 22 "  50 32 2  66 42 B  82 52 R   98 62 b  114 72 r
  3 03 ETX  19 13 DC3  35 23 #  51 33 3  67 43 C  83 53 S   99 63 c  115 73 s
  4 04 EOT  20 14 DC4  36 24 $  52 34 4  68 44 D  84 54 T  100 64 d  116 74 t
  5 05 ENQ  21 15 NAK  37 25 %  53 35 5  69 45 E  85 55 U  101 65 e  117 75 u
  6 06 ACK  22 16 SYN  38 26 &  54 36 6  70 46 F  86 56 V  102 66 f  118 76 v
  7 07 BEL  23 17 ETB  39 27 '  55 37 7  71 47 G  87 57 W  103 67 g  119 77 w
  8 08 BS   24 18 CAN  40 28 (  56 38 8  72 48 H  88 58 X  104 68 h  120 78 x
  9 09 HT   25 19 EM   41 29 )  57 39 9  73 49 I  89 59 Y  105 69 i  121 79 y
 10 0A LF   26 1A SUB  42 2A *  58 3A :  74 4A J  90 5A Z  106 6A j  122 7A z
 11 0B VT   27 1B ESC  43 2B +  59 3B ;  75 4B K  91 5B [  107 6B k  123 7B {
 12 0C FF   28 1C FS   44 2C ,  60 3C <  76 4C L  92 5C \\  108 6C l  124 7C |
 13 0D CR   29 1D GS   45 2D -  61 3D =  77 4D M  93 5D ]  109 6D m  125 7D }
 14 0E SO   30 1E RS   46 2E .  62 3E >  78 4E N  94 5E ^  110 6E n  126 7E ~
 15 0F SI   31 1F US   47 2F /  63 3F ?  79 4F O  95 5F _  111 6F o  127 7F DEL

然而這種格式因?yàn)楦袷絾栴},很少被使用,目前使用更多的是下面這種格式:

     0000000 NUL    0100000      1000000 @    1100000 `
   0000001 SOH    0100001 !    1000001 A    1100001 a
   0000010 STX    0100010 "    1000010 B    1100010 b
   0000011 ETX    0100011 #    1000011 C    1100011 c
   0000100 EOT    0100100 $    1000100 D    1100100 d
   0000101 ENQ    0100101 %    1000101 E    1100101 e
   0000110 ACK    0100110 &    1000110 F    1100110 f
   0000111 BEL    0100111 '    1000111 G    1100111 g
   0001000 BS     0101000 (    1001000 H    1101000 h
   0001001 HT     0101001 )    1001001 I    1101001 i
   0001010 LF     0101010 *    1001010 J    1101010 j
   0001011 VT     0101011 +    1001011 K    1101011 k
   0001100 FF     0101100 ,    1001100 L    1101100 l
   0001101 CR     0101101 -    1001101 M    1101101 m
   0001110 SO     0101110 .    1001110 N    1101110 n
   0001111 SI     0101111 /    1001111 O    1101111 o
   0010000 DLE    0110000 0    1010000 P    1110000 p
   0010001 DC1    0110001 1    1010001 Q    1110001 q
   0010010 DC2    0110010 2    1010010 R    1110010 r
   0010011 DC3    0110011 3    1010011 S    1110011 s
   0010100 DC4    0110100 4    1010100 T    1110100 t
   0010101 NAK    0110101 5    1010101 U    1110101 u
   0010110 SYN    0110110 6    1010110 V    1110110 v
   0010111 ETB    0110111 7    1010111 W    1110111 w
   0011000 CAN    0111000 8    1011000 X    1111000 x
   0011001 EM     0111001 9    1011001 Y    1111001 y
   0011010 SUB    0111010 :    1011010 Z    1111010 z
   0011011 ESC    0111011 ;    1011011 [    1111011 {
   0011100 FS     0111100 <    1011100 \\    1111100 |
   0011101 GS     0111101 =    1011101 ]    1111101 }
   0011110 RS     0111110 >    1011110 ^    1111110 ~
   0011111 US     0111111 ?    1011111 _    1111111 DEL

分布式協(xié)作系統(tǒng)的誕生

如今,分布式版本控制的公共設(shè)施和與之相適應(yīng)的分布式團(tuán)隊(duì)的許多做法都以標(biāo)準(zhǔn)化,但是,這些工具的發(fā)展與演變其實(shí)經(jīng)歷了漫長的過程。

最早的軟件是通過一種叫做 DECUS 磁帶的進(jìn)行數(shù)據(jù)共享的,那時(shí)候,并沒有版本控制、補(bǔ)丁和偽造者。版本控制最早誕生于 1972 年,而補(bǔ)丁,直到 1984 年才出現(xiàn)。

1989 年到 1993 年,互聯(lián)網(wǎng)呈現(xiàn)出爆發(fā)式的增長,互聯(lián)網(wǎng)的傳輸速度已經(jīng)足夠黑客們大展手腳了,接下來,他們開始考慮文化上的變化了。 1991 年,Linux Torvalds 宣布 Linux 將采用分布式協(xié)作的方式進(jìn)行開發(fā),但那時(shí)的 Linux,打補(bǔ)丁仍要通過類似于發(fā)郵件的方式進(jìn)行,直到埃里克·斯蒂芬·雷蒙在《大教堂和市集》中宣揚(yáng)——應(yīng)該把公共資源庫作為主項(xiàng)目,共享公共資源庫,這一方式才得到改變。

第一個(gè)專門的維護(hù)軟件機(jī)構(gòu)直到 1999 年才成立,它就是 SourceForge,起初,它只支持 CVS 格式的文件,也因此促進(jìn)了 CVS 的開發(fā)。2005 年,Linus Torvalds 發(fā)明了 Git,它迅速的淘汰了之前所有的版本控制系統(tǒng),現(xiàn)在成為了黑客界的標(biāo)桿。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容