天下為公
曾慶潭 Ching-Tang Tseng
ilikeforth@gmail.com
Hamilton, New Zealand
2 January 2025
大道之行也,天下為公。
偉大美好的生活方式在全世界運行時,天下是屬於大家的。這句話出自於孔子口述的言論。
孔子述而不作,他只教書論述言行,不寫書創作文章。學生記下之孔子的論述,不僅只被收集在『論語』一書之中。孔子之後大約三百年,西漢時期的戴德、戴聖叔侄兩人選編孔、孟、儒家思想的論述,編成『禮記』一書時,也記錄了孔子的言行教育。禮記中的一篇『禮運大同篇』就記載了孔子論述世界大同時的輪廓。這一篇文章的首段,後人視之為禮運大同篇的最精華所在,實際上文章還有後段,記錄了孔子對當時混亂局勢的批評。首段是我們高中國文課本中的一課,想深入了解全文的學生,可以根據每課課文後面『國學常識』欄目中的解說,自行研讀『禮記』一書中的全文。
想當年,高中生都得背誦這篇課文,達到此一要求倒也不難,因為我們學生時期的音樂課中就全面教唱禮運大同篇的歌曲,在人人會唱的情況下,考試若考這一課課文的默寫,那是難不倒學生的。不出聲,心中默唱、默寫,誰都能完整的答好這樣的考題。
天下為公、世界大同,在中國文化基礎教育中被列為教育宗旨,我們將其延伸到各個領域時,又何嘗不希望如此?做人處事該如此,我們走進全世界電腦軟體的發展環境時,也希望天下為公、世界大同。 AI 正面的發展,若沒有世界大同的觀念,就不可能實現自由取得天下為公的數據。
我們的 國父孫中山先生之禮運大同篇的墨寶,曾經在學校環境中處處可見。相關的歌曲,學生都會唱,可謂都無版權問題。向全世界廣傳這些有意義的東西,不失為身體力行正面教材的作法。我不擬用語體文解釋禮運大同篇,因為內容平易近人,墨寶字體清晰,網上容易取得。 這一份從 Youtube 下載的歌曲影片,畫面不加油添醋,只配樂,同步播出全文,最適合轉載。我不忘說明出處,感謝提供,影片下載的網址:
https://www.youtube.com/watch?v=dSssNn-bTL4
Forth 結合外部軟體功能的方法不是一成不變的,隨時代而變、隨使用環境而變、隨作業系統而變、隨外部軟體的執行方法而變、隨 Forth 系統設計者的規劃方式而變 ..... 等等等。所以,討論這個主題時很難以偏概全解釋得清楚。不過,就我個人的使用經驗而言,不管怎麼變,都有辦法可以實現從 Forth 系統的內部執行出外部軟體的功能。這就是一種天下為公的軟體使用概念, Forth 向來都不孤獨,能夠與所有的軟體功能共榮的精神,自古以來都有。我們發展 Forth 的同時,也希望 Forth 有世界大同的環境。網上的資源已成現行軟體發展時必須操作的對象,傳統的 Forth 系統不包括這種指令的設計,解決這項問題的方法,就是 Forth 系統必須抱持天下為公的觀念,結合外部能夠自動存取網上資料之軟體的功能,來實現理想。
為了避免天馬行空式的亂談一通,我就務實的只談現行 Linux 公益作業系統中所建之 Forth 系統的結合方法。我選定的作業系統是 Ubuntu 20.04,取其中文顯示功能比較完善的緣故。選定的 Forth 系統則為全以組合語言形式建成的 Lina64 ciForth 系統。就這麼單純的一個 Forth 系統,與外部軟體結合的方式,就可以分成好幾種了。例如:系統建立時,免不了要叫用作業系統的現成功能來實現文、數字的輸出與輸入,還有其他非常基礎的軟體叫用指令,但這都不是本文想要強調的重點。作業系統內的軟體,本就是屬於天下為公的資源,否則所有其他發展出來的軟體就無法在這個作業系統中運行。系統這樣的結合方式,可以視同為一種靜態連結的結合方式,亦即被 Forth 系統叫用與否,作業系統的基本功能軟體都在電腦開機之後立即被安裝在記憶體內,每一個後續被執行的軟體,都可以叫用作業系統中固有的功能。
另外有一種相對於靜態連結而被稱為可動態連結的軟體, 在 Forth 系統想叫用它時,必須讓作業系統先行載入已由可產生動態連結軟體之工具所產生的程式,然後才能以與叫用靜態連結程式同樣的方式來叫用其中的功能。這一部份,我已在一百個例題中的第 80 個範例中展示過執行出全套功能的方法。能令系統發出聲音的可動態連結功能程式叫作 kernel32.dll ,它是一種動態連結性質的程式。能被叫用來發聲的指令名稱叫作 Beep (大小寫嚴格劃分)。這種結合方式也不是本文想介紹的部份, .dll 的程式可以是天下為公的軟體,也可以不是,取決於 .dll 程式的設計者的意願,若作者願意公開,則該 .dll 的程式必須存在於作業系統中。
本文要介紹透過作業系統先行安裝出來的任何軟體,如何由 Forth 系統透過作業系統之外殼(shell)語言 BASH 來叫用的方法。關於 BASH 程式語言的執行原理,我在 20240710 貼出之 『設計浮點系統』 一文中,展示過它的執行迴路。簡而言之,跟 Forth 系統的執行原理相似,只是 BASH 程式語言不似 Forth 系統那樣能夠接受輸入數字。作業系統之所以能夠執行天下為公之軟體,實拜 BASH 執行迴路之賜。你在命令視窗(command console)內輸入任何指令時,就是 BASH 在處裡您的輸入。因此, Forth 想要結合外部軟體,執行出一些天下為公之軟體的功能來時,在 Forth 系統內叫用 BASH 就能實現。他的叫用指令也只有一個,ciForth 中叫做 system 。
長篇大論的講道理,不適合當今資訊媒體的傳輸教學,現行比較好的表達方式,就是給大家一個簡單的範例程式,讓有興趣的人能夠透過範例來實踐出自己的打算。
本網頁於 20190216 發佈的文章『測試函數』,文內直接刊載了各種函數的測試圖,並探討從測試過程中找出設計問題的技術,直到不再發現設計瑕疵後才貼出成果。這一套測試方法,就是典型的天下為公軟體的使用方法。現行軟體的熱門話題偏重於與影像處裡以及獲取網路資訊有關的技術,傳統的 Forth 系統並沒有這方面的基本指令可用,但透過世界大同、天下為公的軟體使用觀念,好的系統設計者精研過如何驅動外部軟體程式之技術,便發展出了現成指令。誰想抓取網上資料來用?誰想把相片背景直接清除? ..... 等等問題,現行 Forth 系統都有能力解決。下列介紹一個很精簡的繪圖成果,能令大家舉一反三的實現任何這方面的構想,請記住 : 世界大同、天下為公永遠是我們追求的理想。
我所借用的軟體是當今流行的 python 程式語言,借用的方法純靠執行 Lina64 Forth 系統中的 system 指令完成。
相關程式逐個列示如下,但執行過程中產生的一千筆數據組之 data.txt 檔案內容不列示於此處。
被請用的 oneset.py 繪圖程式,係網上下載之 python 公益範例程式,使用時,只略改抬頭文字顯示的內容成為:
ax1.set_title("f(x)=atan(x), -9.99<x<9.99")
便可。
在下列範例中,被計算的函數是 atan 函數,計算的範圍是從 -9.99E0 到 9.99E0 。
圖形顯示的成果,係以滑鼠操作,將視窗存成檔案而得。
沒有留言:
張貼留言