2025年12月1日 星期一

壯吾壯以及人之壯

壯吾壯以及人之壯


曾慶潭 Ching-Tang Tseng
ilikeforth@gmail.com
Hamilton, New Zealand
2 December 2025


當今,要勸人學寫程式是一件非常困難的事情,也很少有人有想要學寫程式的需求。事實上,五十年前我上大學時就可以完全不寫程式完成學業,最忙的工程設計作業都是拉計算尺完成的,計算尺只提供乘、除、函數功能,加、減計算則靠自己計算,因為沒有計算機可用,我也不打算盤。跑大電腦是一學期只能跑十一次,若不夠用,可以從不跑電腦的同學那裡借用使用權,就這樣唸完了大學,誰也找不出大學生非得寫程式不可的理由。

憑良心講,不與電腦相關之科系的學生學寫程式,純粹就是個人喜好,開始學習時,都是自動自發的行為,我也不例外,後來才參與過必須藉助於電腦從事研發科技的工作,偏重於數位信號處理,用到大量的數學計算技術。

寫程式是一件受制於人的事情,受制於程式語言,通常寫程式的人都不是程式語言的發明人或創作者,學會使用,就是學通程式語言的使用規矩。我接觸過幾種不同的程式語言,知道除了程式語法外,還有必須學會操作程序,才知道如何執行出程式、獲得結果。

透過 Forth 設計出自己的 ABC Forth 計算系統是後來的事情,做這件事情的起因是我老覺得一般程式語言的語法不合我意,尤其是面對程式書寫方式與慣常的數學式之書寫格式不同時,我更不喜歡使用。BASIC 程式語言的數學表示方式最為理想,所以我選擇了它。

教導大家學寫程式不是我的責任,只是我的興趣。我在台灣曾經長期搞過推廣 Forth 程式語言的工作。那時比較容易推廣 Forth ,因為那時是個人電腦剛剛開始發展的階段,不但軟體透通,硬體也透通,Forth 又是個開發軟、硬體時都很適用的程式語言。主動來學 Forth 者趨之若騖、人人興趣高昂、喜歡互相切磋技術,不少同好後來也用 Forth 成就了一番事業。

現在,要勸跟我年齡相仿的人學習與 Forth 相關的技術,簡直就是不可能的事情,我有不少親友都已經開始接受晚輩的奉養了。而且不是年輕時學會的技術,年老時很難從頭開始。認清這樣的事實,我就再也不跟日常來往的人談 Forth ,甚至於不談電腦程式技術。我只在網上談 Forth ,談的對象,當然就是各位讀者,是還年輕力壯的你們,是一群力爭上游、主動學習、愛好程式語言的好學者。大家來自四面八方,不限台灣也不限中國,全球各國都有,只會英文的讀者可以依靠網上翻譯器協助閱讀。

Forth 不似一般程式語言,它不是那種照本宣科式的(scripting)程式語言,例如:Python, PHP, Perl.....等等最近很流行的程式語言。前述提過了,誰覺得語法不好的時候,學通了 Forth ,你就能用 Forth 來設計出改變書寫程式的語法,我就是這樣做的。換句話說,研究 Forth 可以是一輩子的事情,再老也仍然可以照用。

早期發展系統的階段,我還很有興趣於努力設計出各種數學體系的數學計算功能,設計時必須重讀書本,整理通則,規劃程序,參考已有的設計,寫成 Forth 格式的指令,最後再轉化成 BASIC 程式語言的語法。後來,由於作業系統的演進,我發現這樣子追著作業系統搞發展是一件很吃力的方式,尤其是,在遇到新的作業系統沒有與舊系統同樣功能的環境時,有些性能就不得不暫時捨棄、等到以後再說,發展內容會變得不連貫也混亂,連記錄指令用法都成了問題,不容易落實新系統的整個設計。自己長期用過各階段的創作後,知道精簡設計是最好的辦法,例如:我把用到 BASIC 語法的部份精簡到只留十個必用指令就夠了,能捨棄的 REM, GOSUB, RETURN, STOP, READ, DATA.....等多餘性的指令都不再用了,就算設計只須一列程式我也不用了。

我每天還有很多事情要做,一家之主的大男人,粗鄙骯髒的工作得肩負起來,繁重、耗時的事情也不能免,我很幸運的從小外孫脖子還軟到須要扶著抱他時一星期跟他玩四天,已經一年了。貼出網文前幾天,我就在陪小外孫遊樂期間想妥為文的綱要。他睡覺的時間我瀏覽網頁不斷學習,獲取網上的新訊息,晚上才跑程式。大型工作已暫停了,每天卻也還能在社群媒體上貼出小作文,天南地北、古今中外毫無限制的評論事情。我仍然是一個每天使用電腦超過八小時的人,同時用好幾台、好幾套不同作業系統的電腦。剛買不久的 Raspberry pi5 我安裝了 Ubuntu 24.04 。每天早上我陪小外孫用 FireFox 看每部半小時的 Mickey Mouse 卡通影片,今天早上看的是米老鼠尋寶記,有唱跳的部份他露笑容,快結束前通常都有點累了,我得抱著他一起享受到卡通結尾,然後關機。這個裝置的啟動與關機速度都夠快,能讓一歲的小孩忍受得了載入系統所耗的時間,就看著圓圈轉呀轉的,轉沒幾圈載入就完成了,比任何微軟的視窗軟體都要快,整台電腦我只花不到 150NZD 就裝好了,錢花得非常值得。

最近,我在社群媒體 Line 上貼文評論,強調自由下載影片的功能越來越受限制了。我曾用過好幾個方法下載短片,當然是挑值得我留存的我才下載,一路走來,好幾個功能都受限了:

1.剛開始時曾經可以採用在網址中之 youtube 前面添加兩個 s 成 ssyoutube 的方法下載整部短片,後來失效了。
2.在臉書中看影片,本來可以採用在網址中將 www 改為 mbasic 後下載整部短片,後來也失效了。
3.有一段時間,可以直接將影片的網址 copy 下來,到命令視窗中執行 $ yt-dlp <影片網址> 的方式獲得整部短片,現在也失效了。
4.本來將想要下載影片的網址貼進具有下載功能的網頁 https://en1.savefrom.net/9AR/,可以下載獲得整部影片,現在也失效了。

我愛用 ubuntu 作業系統,它提供 kazam 可以下載影片的免費公益軟體,任何影片只要能在網上播放,使用 kazam 都能框住影片於播放時同步下載。有的時候,我下載的短片是想要與 Line 社群媒體中的親友分享的訊息,但格式不符合貼出要求。這個時候,就必須另外採用影片編輯器 OpenShot video editor 操作轉換格式的功能,選擇輸出選項為 mp4(Xvid) 的格式,輸出成果後才能夠在 Line 上貼出。採用這個方法獲得短片,永遠不受限制,可見 Linux 作業系統的環境有多優秀。我們在接受網上訊息時,留存切要訊息是非有不可的功能,擷取照片,也只須操作 Shift + PrintScreen 就能立刻獲得。這些功能對網上學習非常重要,等同於學習時作筆記。但獲得訊息後不要隨便亂貼,至少也該謝謝訊息提供者。我教大家如何使用這些工具,大家要珍惜著用。

幾天前,我見到網上有人貼文表示 1/89 獲得的小數是一個 Fibonacci 序列的級數,我有很方便的 ABCForth 系統可以直接計算出來後進行驗證。
開機後現成的位數設定是 400 位數,想自訂位數時,可以用來改變設定位數的變數名稱為 maxdigits 。
直接除算後就輸出的指令是 /.. 。
若想要獲得具有右邊邊標與底部字元尺的輸出表示時,可以採用 [/..] 指令直接獲得。
我的驗證結果顯示,1/89 雖然是一個 Fibonacci 序列的級數,但是所有的有理數都是有限位數的循環小數,所以這個級數就不可能以無限位數的方式表現下去。1/89是一個 45 位數的循環小數,因此,Fibonacci 級數的表現就到此為止。兩份貼圖貼示如下,貼出的訊息不只是教中國人怎麼用這個系統,也讓全世界分享成果。



另外有個貼文問一個非線性方程式之 X 的答案,我直接採用已有的二分法(bisection method)程式解這種題目,連圖帶答案回覆貼文,結果就有大量的讀者來訪這裡介紹二分法求解任意方程式的文章。問題、相關曲線圖與答案附貼於此,這就是我的壯吾壯以及人之壯的貼文舉止。



今天中國新聞報導,中國展出了戰國時期大約 2400 年前的竹簡與木牘,其中我最感興趣的報導主題是那時就有九九乘法表了,跟今天我們中國人人都耳熟能詳的九九乘法表完全一樣,只是那時並沒有阿拉伯數字可用,中國人有自己的數學文字。這向全世界表示出了為什麼中國人擅長於數學計算的主因。幾千年來,中國人就擅長於四則運算,代代相傳,直到今天。我們從小就熟悉四則運算,這樣的特質,讓我覺得,我貼文時不只是要『壯吾壯』,是該『以及』全世界的『人之壯』了。真實之千年九九乘法表,是從新聞報導影片中擷取所得的照片,貼示如下: