前些天,微軟開(kāi)源了DOS4.0,這其實(shí)算不上什么大新聞,因?yàn)椋?/span>
1. 這是個(gè)非常古老的,沒(méi)人用的操作系統(tǒng);
2. 這不是DOS第一次開(kāi)源了,1.25版,2.0版在6年前已經(jīng)開(kāi)源了
有意思的是,網(wǎng)友發(fā)現(xiàn),開(kāi)源以后,一個(gè)叫做mzbik的人心急火燎地修改了其中一行代碼的注釋:
這個(gè)注釋的意思是:“腦子有問(wèn)題的Tim Patterson......”
mzbik把Tim Patterson改成了縮寫TP,其他保持不變。
這就有意思了。
Tim Patterson是誰(shuí)?為啥腦子有問(wèn)題?
mzbik又是誰(shuí)?他為啥要這么做?
1
上世紀(jì)七十年代末,八十年代初,正是個(gè)人電腦開(kāi)始爆發(fā)的前夜。
美國(guó)華盛頓州的西雅圖,有個(gè)叫西雅圖計(jì)算機(jī)產(chǎn)品(簡(jiǎn)稱SCP)公司決定采用Intel的8086來(lái)組裝個(gè)人電腦,但是卻沒(méi)有合適的操作系統(tǒng)可用。
于是公司的蒂姆·帕特森 (Tim Paterson)寫了一個(gè)操作系統(tǒng),名稱叫做QDOS,意思是Quick and Dirty Disk Operating System,Quick and Dirty,這名稱,公司竟然叫得出口。
QDOS是仿照流行的PC操作系統(tǒng)CP/M編寫的,二者非常相似,這樣CP/M上的軟件就可以輕松移植到QDOS。
1980年7月,0.1版本完成。
如果QDOS就這樣發(fā)展下去的話,應(yīng)該也不會(huì)差。
但是它的命運(yùn)卻被微軟和蓋茨徹底改變了。
1981年,蓋茨抓住了一個(gè)千載難逢的機(jī)會(huì):為藍(lán)色巨人IBM的PC提供操作系統(tǒng)。
這時(shí)候的蓋茨絕對(duì)是空手套白狼,他連操作系統(tǒng)都沒(méi)有,就敢和IBM簽合同。
微軟和同在西雅圖的SCP公司之前有業(yè)務(wù)往來(lái),這時(shí)候蓋茨就發(fā)現(xiàn)了QDOS,他非常果斷,立刻用5萬(wàn)美元買斷QDOS,并且把作者蒂姆·帕特森也挖了過(guò)來(lái),讓他把QDOS移植到配有8088 CPU的IBM PC上。
當(dāng)然,不能叫QDOS這么難聽(tīng)的名字了,新名字叫MS-DOS。
商業(yè)天才蓋茨認(rèn)為將來(lái)肯定有其他廠商去模仿IBM PC,一定會(huì)用他的MS-DOS, 所以堅(jiān)決禁止IBM買斷DOS,一定要保留權(quán)利將MS-DOS授權(quán)給其他計(jì)算機(jī)廠商。
這可能是微軟歷史上最有影響力的決定,蓋茨抓住了個(gè)人電腦爆發(fā)的風(fēng)口。
隨后,在每一臺(tái)PC兼容機(jī)上,MS-DOS幾乎是唯一的操作系統(tǒng),微軟帝國(guó)成型了。
MS-DOS的作者Tim Paterson自然功不可沒(méi),不過(guò)Tim有點(diǎn)不“安分”,曾經(jīng)三進(jìn)宮微軟,第一次是1981年5月到1982年四月,開(kāi)發(fā)出第一版的MS-DOS后就離開(kāi)創(chuàng)業(yè)了。
他離開(kāi)后,Mark Zbikowski成為DOS的開(kāi)發(fā)主管,接手了DOS的開(kāi)發(fā)工作,從DOS2.0一直干到DOS4.0。
Mark Zbikowski在微軟也是一個(gè)傳奇程序員,他給DOS貢獻(xiàn)了分層目錄結(jié)構(gòu),和可安裝設(shè)備驅(qū)動(dòng)(后來(lái)成了即插即用),后來(lái)參與了Windows NT的開(kāi)發(fā),是文件系統(tǒng)架構(gòu)師和開(kāi)發(fā)經(jīng)理。
就像PK把自己的名字雕刻在Zip文件格式中一樣,Mark Zbikowski 也把自己的名字刻在了DOS可執(zhí)行文件里,這種文件的Magic Number是:4D 5A ,即MZ。
Mark Zbikowski 是“從一而終”的典范, 這位哈佛的高材生被鮑爾默招募后,一口氣在微軟工作了25年,成為繼比爾·蓋茨和史蒂夫·鮑爾默之后,第三位達(dá)成這個(gè)成就的人。
2
眼尖的同學(xué)可能已經(jīng)發(fā)現(xiàn),Mark Zbikowski 就是GitHub上的mzbik !
很明顯,mzbik對(duì)40多年前的這條注釋印象極為深刻,弄不好就是他自己寫的 :-)
所以DOS4.0一開(kāi)源,他立刻就想起了這件事,心急火燎地把它改掉了。
如果不是有個(gè)叫OwnedByWuigi用戶手快,fork了最早發(fā)布的DOS4.0代碼倉(cāng)庫(kù),我們可能永遠(yuǎn)都不知道有這回事兒。
https://github.com/OwnedByWuigi/DOS/blob/ffd70f8b4fb77e2e6affbf1fad2fd8c349f0369f/v4.0/src/DOS/STRIN.ASM#L70
程序員經(jīng)常在代碼注釋中看到臟話,比如: