【Cheng lap 的資訊通鑑】你知道「640 kB 記憶體已多過任何人需要」是誰說的嗎?

評論
評論
Microsoft co-founder Bill Gates speaks at Peking University in Beijing, China March 24, 2017. Picture taken March 24, 2017. REUTERS/Stringer ATTENTION EDITORS - THIS IMAGE WAS PROVIDED BY A THIRD PARTY. EDITORIAL USE ONLY. CHINA OUT. NO COMMERCIAL OR EDITORIAL SALES IN CHINA. - RTX32NJ8

知道誰是比爾蓋茲吧?雖然對於年輕一輩而言,大概可能比較認識 Steve Jobs 或者臉書的馬克祖克伯。 不過也很難沒有聽過曾經是資訊界一哥、全球首富的他。要談起這個人,就不能不談傳說中他最為人記得的發言,但可能很多人已不記得了的一句話:「640kB 記憶體已多過任何人需要的記憶體。」

這段發言是出自 1988 年美國 Infoworld 雜誌的引述,而比爾蓋茲本人則聲稱他沒有這樣說過。他有沒有說過,倒不是這文章的重點,重點是大家還記得這個 640kB 記憶體是什麼嗎?這個問題應該考倒了大部份的人,因為這是使用電腦超過二十年的人才會知道的。

這就是所謂的「傳統記憶體」, 在還是 DOS 時代的時候,個人電腦的規格是只有 640kB 的記憶體。什麼是 640 kB 呢?也就是 0.64 MB,是今天常用的單位 1 GB 的千份之一都不到。今天你隨便開個小軟體都要用這個數字的十倍以上,但那時候這大小卻是你整部電腦記憶體的大部份甚至全部。當年的軟體,是要把資料連同程式碼,都放進這個有限的空間裡。

對於現在的使用者來說,最難以想像的是,你是不能使用 640 kB 以上的傳統記憶體的。有些比較老的使用者可能也會產生質疑,因為他們記憶中,就是那時的電腦,也可以加裝記憶體,變成什麼 1 MB, 2 MB, 4 MB, 16 MB 記憶體之類的。很遺憾的是,你是可以加裝記憶體,但那些多過 640 kB 的記憶體,都不叫作傳統記憶體,而叫作擴展記憶體,那是和傳統記憶體不同的東西。

記憶體還有分種類?這種事情對於今天的人來說可能難以理解,可是這卻是當年的事實。如果你是在當年有寫程式的人,就會知道我在說什麼了。那些擴展記憶體,是無法直接使用的,不過我不想在這裡談怎樣寫以前的程式,我打個比喻,它很像圖書館的書,你用之前必須先從圖書館裡借出,之後還要還回去。所以雖然擴展記憶體能夠幫助你載入一些東西,但卻不能取代傳統記憶體,它基本上只能放資料,不能放程式碼。

這導致了一個現象,就是你當年玩遊戲,遊戲說只要 4 MB 記憶體,而你明明有 16 MB,卻會告訴你記憶體不足。很多人都會頭大,為什麼會記憶體不足啊?深究之下,原來是指「傳統」記憶體不足,很多遊戲都需要你在 640 kB 當中,擠出 600 kB 以上的記憶體才能夠運作,偏偏那時候你想要使用每個電腦的功能,都會耗用一些傳統記憶體。

例如說滑鼠。當年的滑鼠,沒有驅動程式是不能動的,但是載入了驅動程式的話,又會消耗了一些傳統記憶體。很多你今天覺得理所當然的東西,當時也是要驅動程式,例如音效卡。遊戲對於傳統記憶體的要求,通常十分的嚴苛, 少一點都開動不了。

結果當年玩電腦遊戲的人,往往在玩遊戲之前,便已經要學怎樣修改設定檔,以便釋放出更多記憶體,買了遊戲回來第一件事就是跑不動,然後不斷試驗怎樣的設定檔才能玩,成為很多遊戲玩者痛苦的回憶。怎樣從 640kB 擠到多幾 kB 出來,往往就是跑不跑得動一個遊戲的關鍵。

至於寫程式的工程師,更需要不斷的對著這有限的記憶體奮鬥,為了減少記憶體的使用,什麼奇怪的方法都會祭出來,例如在源碼裡直接寫匯編碼。建立各種奇怪的、複雜的記憶體使用機制等,強大的工程師,往往能夠把記憶體管理得出神入化,很多今天的工程師看當年的程式碼,都會覺得像經文一樣難以看懂,那正是因為當年的程式碼, 需要更多直接利用硬體的特技,簡直有如藝術一樣。可是在當年,卻是當工程師的基礎知識。

所以那時候的電腦使用,門檻之高,不僅僅是因為價錢。別以為只有開發者才需要懂資訊科技,當年連一個普通的使用者,都需要具備相當的軟硬體知識,才能把東西跑得動。當個「使用者」也是不容易的。

延伸閱讀:Did Gates Really Say 640K is Enough For Anyone? | WIRED

相關文章

評論