Prismachina
many paths through an old machine.
從 PDP-7 組合語言開始,直到作業系統。
歷史已經決定了起點與終點,中間的路由我們自己走。
[ASM] -> [B-like] -> [C-like] -> [Linux-like]
01 / 動機
AI 現在已經成為顯學了。
無論內行外行,幾乎已經是人人都在談論的話題。
一堆人都在想辦法把它拿來做各種產品,並試圖兌現。
但對我來說,金錢從來不是第一順位。
與其把它拿來製造更多博人眼球的產品,
我更想知道,如果拿它來學一些真正困難而且有趣的東西,
最後能走多遠?
很久以前我就想過,如果從頭打造一個作業系統,
那肯定很酷。
不是下載一份現成的原始碼重新編譯,
也不是站在既有的 compiler, toolchain, runtime 上開始,
而是從最底下開始。
從組合語言開始,自己做出語言,做出工具鏈,
最後一路走到作業系統。
以前我只把這件事當成白日夢。
現在,或許可以真的試試看。
02 / 綱要
Prismachina 從一個很小的世界開始。
一台 PDP-7,以及模擬器提供的組合語言與組譯器 as。
除此之外,什麼都沒有。
沒有高階語言,沒有編譯器,沒有現成的工具鏈,連作業系統也只有 Unix v0。
接下來需要的東西,都從這個環境裡一層一層建立起來。
[ASM] -> B-like -> C-like -> Linux-like
這些不是工具鏈的組成,而是 Prismachina 預計經歷的幾個科技階段。
從只能依靠組合語言的世界開始,建立第一個更高階的語言;
再利用已經取得的能力,繼續建立下一個階段所需要的語言與工具。
每跨過一個階段,能用來建造下一個階段的東西就多一些。
最後,希望能從最初那個幾乎什麼都沒有的 PDP-7 環境,
一路走到足以支撐完整自製作業系統的世界。
03 / 目前進度
現在仍處於最初的 ASM 階段。
[ASM] <-- 現在 | B-like | C-like | Linux-like
第一個目標,是從現有的 PDP-7 組合語言環境中,
建立足以進入下一個階段的基礎。
看起來只有四個階段,好像很單純對吧?
但只要稍微了解,就會知道階段之間隔著多麼寬的峽谷...
04 / 未來
最終,希望能從一個極小的起點,
一路建立出足以支撐更複雜系統的語言、工具與作業系統。
中間不追求忠實復刻任何一段歷史。
如果某條路值得重新走一次,就走。
如果能找到另一條路,
也沒有理由只因為歷史不是這樣發生的而避開它。
終點是已知的。
路徑不是。
99 / 命名
儘管這個名字還沒定案,但這個名字也不是隨便取的。
Prismachina 這個名字是由兩個字組成的:
- Prism:棱鏡,在物理上有光線經過後折射分散的特性,象徵了從一個起點開始,在抵達重點前的各種可能性。
- Machina:即 machine,是拉丁文的拼法。對於現代英文來說,這個詞本身就背負著歷史感。
- 這裡不專指任何技術,整個專案將從一個極小的起點開始,逐步構建工具鏈,涉及到的領域相當豐富,因此使用 Machina 代替整個概念。