文化傳承
曾慶潭 Ching-Tang Tseng
ilikeforth@gmail.com
Hamilton, New Zealand
16 June 2025
Forth 是一種程式語言,比較好且適當的中文名稱是『符式』。簡明的解釋,就是其標準指令中使用了許多符號作為指令名稱。這樣用,有其原因,因為它是即時性控制語言,標準鍵盤上的符號用來當指令,更可以快速的執行出結果。
語言都會形成文化,Forth 亦然,它有它的文化。中文的 Forth 也有中文方面的文化,我用了它 40 幾年,比較熟悉它所形成的中文文化背景。用到後來,我發展出了數學計算系統,年紀大了還在用,於是產生了想要傳承它的使命感。跟中國文化傳承者的情懷一樣,傳承 Forth 中文方面的文化,是老來還能用它設計系統者應有的使命。
40 幾年來已有不少跟 Forth 有關的中文書籍或翻譯書本出版,台灣、中國大陸都有,但內容都偏重於最基礎的 Forth 使用教學。英文版本的書籍,有一些內容會涉及系統設計,但數量很少。用 Forth 設計出系統的公司,為了營利賺錢,不可能完全公開設計內容,網上能獲得源碼的檔案,都只有基礎之裸系統。因此,傳承屬於與 Forth 有關之系統性質的文化,是很可貴的工作。尤其是這種文化必須經過實際上使用過後的嚴格考驗,實做成功後,才能講得出它們的道理。可是,這種文化不會在基礎教學的書籍中出現,因為層次比較高,不容易介紹。
這一篇文章舉一個很簡單的例子說明:
應用 Forth 系統,不能自外於整個世界,也不能自外於另一個 Forth 系統。本網頁中刊出的題材,最可貴的地方,就是已經刊出過許多 Forth 與外界溝通的範例程式,讀者在別的場合很難見到,所以可貴。Forth 系統與外界溝通的方法都有侷限性,溝通方法會隨時間與背景環境的不同而不同,這種性質令系統設計者只能隨時間與環境而跟著調變,沒有規則可循。但是一種透過公稱方式的溝通慣例可以討論,那就是透過生成或接受『檔案』(file) 的方式來溝通。設計這種溝通技術,仍需要不少有關檔案格式的基本觀念,它超出了 Forth 的討論範疇,短文也不可能說得清楚。用法則需要先行建立起固定的使用協定(protocol)才能設計,也就是說,使用步驟絕非一步到位,有固定死的步驟才能完成設計。我再簡化舉例,只討論 Forth 系統輸出資料時需要進行什麼設計?
從檔案輸入資料進 Forth 系統的觀念比較直接,只要知道開啟了的檔案之起始位址,剩下的事情就是只須根據這個位址來進行資料處裡的程式設計。
從系統輸出資料到檔案,根據我多年的使用經驗,比較好的方法是必須找出所有 Forth 執行輸出時相關的最根本指令,然後令其執行內容改為被轉向到輸出至另外的緩衝區,待資料輸出工作結束後,才一次性的將緩衝區內的資料轉存進指定檔案。我歸納出最根本的通用指令,顯性的有三個 : TYPE, EMIT, CR 。 隱性的另有兩個 : LF, EOF。隱性的,只須適時適地的安放其碼就能完成工作。顯性的三個指令則需採用高階的明碼設計,內容並不複雜,只須記得 TYPE 是印出一大串字串,後二者則只印出單個字元,如此便可。而設計的關鍵,則在必須將這三個顯性指令規劃成為可改變執行內容的向量式(vectorized)指令,在資料被存進檔案後,系統才能據此而恢復成原來的標準輸出狀態。一套典型的相關設計如下: