實踐
曾慶潭 Ching-Tang Tseng
ilikeforth@gmail.com
Hamilton, New Zealand
16 May 2025
這一陣子,我在適應 ARM 系統的使用環境,經常會碰到一些問題,使用環境之適應性的建立,全憑身體力行的實踐,別無它法。這種事情已經不是時下青年喜歡做的事情,因為耗時又麻煩,要細讀許多資料,要實作許多設計,逐個度過難關後,才能有點成就。
以前,在發展系統時,沒有注意到摻雜了特例的用法,會給後來改到新環境繼續延用時產生麻煩。因此,重新在新環境發展系統時,我注意到重建的系統應該要注意永續可用的問題,最好不要強加個人偏好性的設計,以免自找麻煩。趁著這次再在 ARM 環境建立 abc Forth 運算系統的機會,把能夠永續使用的設計整理妥善,簡化發展程序,刪除所有個人偏好,不再添加於未來應用。刪除的部份可以另行建檔,需要時才載入系統。
有許多經驗是實踐後才知道的。今天,我在 Raspberry pi4 上完成了一套發展,改到 pi3 去試用,就出現了記憶體分段選址有問題之訊息,系統不能執行。但憑經驗,一看就知道,是因為我將系統容量宣告得太大了的關係,將設定改小就能解決問題。在 pi4 上有 4GB 的 RAM 可用,而 pi3 只有 1GB 的 RAM ,我在 pi4 上發展時,將系統宣告得很大,超出了 1GB 的範圍,就出問題了。由於我設計的 abc Forth 系統需要執行大數計算,它比較耗用記憶體,雖然長成的系統仍然是只有幾百 KB ,運算大數時,可能要耗用 Forth 系統從 HERE 開始算起以上的記憶體。因此,只宣告不到 1MB 的使用量絕對不夠。經過這次產生問題後的經驗告訴我, pi3 上只能用 1GB ,也就是 1000MB ,我若將 Forth 系統的記憶體使用量宣告成 1GB 的十分之一,也就是 100MB ,算是比較妥當。如此一來,我就能在操作上比較方便的 pi4 系統上發展出轉置到 pi3 也能執行的 abc Forth 系統。這件事已經測試完畢。
在家裡獨自發展系統,不易察覺這種單板電腦有什麼使用上的問題,家中若有人同時上網,就能體會出問題。昨天,我小女兒在我這裡使用網路開會,我才發現 pi4 啟動後連編寫程式都有困難,反應慢到無法接受的程度,只能關機停用,待我能夠獨享網路時再搞程式設計。單板電腦採用 WiFi 上網,響應速度當然沒有一般手提電腦的速度快,能分享的無線訊息傳遞必定大受影響。pi3 的運行速度為 1.2GHz ,pi4 為 1.8GHZ ,比起一般電腦為 2.5GHz 的速度,確實差了許多,用時不可不知。
ARM 是 Linux 的作業環境,我在產出基本系統後,必須取用原在 Window's 系統上發展出來的應用程式。程式中有些說明,包括中文,因係 big-5 的編碼,轉到 Linux 採用 utf-8 編碼時無法閱讀,要操作轉碼程式來更換編碼,才能看到中文的內容。每次打字總覺得麻煩,於是自己設計了一個小程式,想將檔案內容的碼轉換時,只須輸入檔案名稱就夠了,會用電腦的人,應該盡量自己設計程式簡化這種問題。這個程式可以在 Linux 作業系統中之 ciForth 系統使用,我用的是 Lina64 Forth。設計要點只是字串操作,然後設法運用以 Forth 轉交 BASH 執行出轉檔程式的技巧,就能完成工作。轉檔程式的名稱叫做 iconv ,它的詳細使用說明,不在此討論,這種 Forth 的使用技巧,則是當下程式發展者應該建立的運用觀念。程式能完成 big-5 與 utf-8 碼間的互換,只須輸入欲轉碼之檔案名稱便可。