西洋棋的棋盤由64個黑白相間的網格與32顆棋子組成,2位棋士分別操作國王、皇后、城堡、騎士、主教和士兵等6種共16顆棋子,從這麼簡單的規則出發,估計能夠走出1043至1050種棋局變化,是個相當具有深度的棋藝遊戲。1983年推出的1K ZX Chess程式大小僅有672byte,然而這個記錄被BootChess的487byte給打破了。
超級小的陽春西洋棋
在BootChess出現之前,檔案大小最小的西洋棋程式是David Horne於1983年推出的1K ZX Chess,這款Sinclair ZX81電腦的西洋棋程式僅佔用672byte記憶體,而且還內建電腦對手,讓玩家可以與電腦對奕。
1K ZX Chess的記錄維持了32個年頭,然而在2015年初被Red Sector Inc所推出的BootChess所打破,BootChess將完整的西洋棋遊戲放在487byte的程式中,檔案大小只有1K ZX Chess的72.47%,足足小了四分之一以上。
使用組合語言所撰寫的BootChess,不但小巧的檔案大小讓人驚豔,它更是橫跨Windows、Linux、OS X以及BSD等多個平台。BootChess的工藝成就或許在近期內很難被打敗,除非有人直接對BootChess的程式碼進行最佳化,否則BootChess要與1K ZX Chess一樣,維持30年以上的最小西洋棋程式寶座,也並非不可能。
▲1983年推出的1K ZX Chess維持了32年最小西洋棋程式的頭銜。(圖片來源:維基百科,本圖根據美國版權法的合理使用)
▲當年Your Computer Magazine雜誌對1K ZX Chess的報導。(圖片來源:網際網路檔案館)
▲ZX81是Sinclair Research於1981年在英國推出的電腦。(圖片來源:維基百科,本圖採用創用CC姓名標示-相同方式分享,作者為Evan-Amos)
▲BootChess的介面相當陽春,不過這也是為了縮小檔案大小的手段之一。
▲檔案大小僅有487byte的BootChess,打破了1K ZX Chess留下的記錄。
▲有興趣的讀者可以到這邊下載BootChess程式。
撰寫組合語言難度高
基本上電腦的程式語言可以粗分為低階語言與高階語言,低階語言之所以被稱為「低階」,是因為該它運作時與處理器的機器語言或指令直接對應,因此也被稱為原始的程式語言。而高階語言則比較接近人類的日常語言,使用一般人易於接受的文字來表示,能夠降低撰寫程式的難度,易讀性也比較高。
低階語言並非比高階語言差,相反的,低階語言由於無需大量的編譯動作即可被處理器所執行,因此以該類程式語言編寫的原始碼編譯和運作效率一般較高階語言的原始碼為高。
組合語言(assembly language)即為低階語言的1種,除了撰寫起來比高階語言(如Java或C等程式語言)更困難之外,再加上它是用於電腦、微處理器、微控制器或其他可程式化元件的低階語言,在不同的裝置中組合語言對應著不同的機器語言指令集,所以不像許多高階語言,可以在不同系統平台之間移植,更可看出BootChess的精湛之處。
延伸閱讀:
BootChess is the smallest computer implementation of chess on any platform (487 bytes) for Windows / Linux / OS X / DOS / BSD / DOSBox / Bochs
還真是誇大,
只是個 DOS COM 檔,
不是真的跨 OS.