iT邦幫忙

鐵人檔案

2024 iThome 鐵人賽
回列表
Software Development

離塵指引.卷之一.試結丹:程式語言自舉 系列

軟體界經歷幾十年的發展,已經沉澱下數以億計的程式碼,然而這些程式碼盤根錯節,彼此之間互相緊密依賴。舉例來說,寫一個網站,必須跑在瀏覽器上,瀏覽器又跑在作業系統之上,主流作業系統又都是由 C/C++ 編譯器編譯出來,依賴可以追溯很多很多層。(甚至會成環,例如編譯器通常也需要作業系統作為執行環境。)

將現代軟體當做一個世界,從學會寫程式的第一天開始,絕大多數的人就永遠也脫離不了它。本作企圖指引人們如何離開原世界(下稱塵界),再造一個新世界,故名:離塵指引。

而離塵的第一步,是自舉一門自定義的程式語言。


參賽天數 12 天 | 共 12 篇文章 | 3 人訂閱 訂閱系列文 RSS系列文 團隊天堂製造
DAY 1

大品天仙訣之臆想

貧道閒暇之時,好覽開源碼,於年前嘗見「大品天仙訣」,頗有感觸,亦期待作者再更,可惜,經旬累月,無消無息。 轉念一想,或許「大品天仙訣」早已是成品也說不定,著訣前...

2024-09-15 ‧ 由 mros 分享
DAY 2

序・去往新世界

「離塵指引」啟發自大品天仙訣,但並不嚴格遵循仙訣。「離塵指引」並不是企圖囊括計算機科學系統部分的教材,而是有著更大的野心,它要指引的,是一條重塑計算機系統之路。...

2024-09-16 ‧ 由 mros 分享
DAY 3

離塵第一步:自舉

書接上回,塵界程式碼彼此依賴,如樹、如網。要想脫出這張樹網,自成一個世界,固然可以一切用組合語言(下稱真言)寫就,但常人負荷不了如此巨大的工作量,借鑑塵界軟體的...

2024-09-17 ‧ 由 mros 分享
DAY 4

什麼語言容易自舉

編譯與直譯 只要學過計算機概論,大抵都對編譯與直譯有基本的概念。 常會有人把程式語言分類爲編譯式語言、直譯式語言兩類,其實這並不嚴謹,編譯與直譯並非形容「語言」...

2024-09-18 ‧ 由 mros 分享
DAY 5

結丹流程概覽(通用編譯流程)

以最宏觀的角度來看,編譯器是程序,輸入源碼,輸出目標碼。 而當輸出是高階語言時,通常稱為轉譯。當此一程序輸出的是機器碼,或是很低階、很類似機器碼的虛擬機碼(如...

2024-09-19 ‧ 由 mros 分享
DAY 6

音界咒零.一版設計與定義

為了有所憑依地說明編譯流程,貧道擬在本章定義一門法咒(咒、程式語言)——音界咒,在餘下章節,將實際操演如何將其轉換成真言。 此刻吾等修為尚淺,不宜一步登天,本章...

2024-09-20 ‧ 由 mros 分享
DAY 7

全形編程字體選擇

網路/市面上早已存在許多專為編程設計的半形字體了,最最基本的要求就是等寬。全形倒是沒有等寬的問題,全是方塊字。 但全形有另個廣泛存在的問題:全形標點的偏移。 下...

2024-09-21 ‧ 由 mros 分享
DAY 8

零.一版編譯目標:精五門(RISC-V)真言極簡子集

音界咒的編譯目標是精五門(RISC-V)真言,精五門真言本就十分精簡,在零.一版,更是僅需要 整數加減乘除 指定暫存器的值 等寥寥幾個指令而已。 但在介紹這...

2024-09-22 ‧ 由 mros 分享
DAY 9

零.一版分詞器(一)定義

是什麼構成一篇漢語文章的呢?從小到大列舉,最小單位是「字」(通常狀況不會再去拆部首),「字」組成「詞」,「詞」再組成「句」,「句」組成「段落」,「段落」組成「文...

2024-09-23 ‧ 由 mros 分享
DAY 10

零.一版分詞器(二)算法及其狀態機表示

上一節中變數的詞法定義並不清楚,例如,變數不可以是「元」,但能不能是「元氣」呢?變數能不能包含數字,像是「2號機」?若允許這樣的寬鬆定義,分詞會較為困難,當讀取...

2024-09-24 ‧ 由 mros 分享