1. Forth語言之困境
身為Forther是不會願意接受這件事,但此為現狀,Bee很早就認為,只是隨ARM MCU之流行,情況更加嚴重。
Forth因為小而完整發揮MCU能力,確實在8/16位元MCU上一直有特色。
但隨著時代推展,進入32位元MCU時代,小而完整之特質已無法凸顯其特色。
32位元MCU時代的特性為:
1. 豐富週邊
2. 大量免費C函式庫
3. 大量免費軟體工具
RTOS, FAT File System, USB Driver, Ethernet Example, GUI Library, SD Card Driver...等等。
以上特色,使得MCU以C發展可以快速得到成果,Forth則無廠商願意寫函式庫,變得跟不上時代。
32位元MCU各大廠又以軟體元件為其發展重點,快速拼裝已成為特性,大大的拉開C語言及其他語言的距離。
32位元MCU除了C外,其他語言完全變成非主流。
2. Swarm Robot / Multi-Robot System發展之問題
Robot一直是MCU實現的好目標。使用Forth發展是很方便的。但因MCU隨著32位元時代來臨,Forth被淡忘。
實際上單一Robot發展並不是很方便,若非C語言在MCU上有大量的工具,使用C語言是一項沒有得選擇的發展。
Bee曾認為Forth在Robot上的發展可能有一席之地。但32位元MCU推展過於快速,完全沒有給Forth有時間及機會去成長。
在一個偶然的機會,Bee想到找群體機器人(Swarm)上的相關資料,發現以目前的Robot發展是困難的。
主因為在於Swarm Robot除了實現Robot外,需要解決Robot之間溝通之問題。
實現通信不難,但Robot之間溝通,實為發展社會語言,若非有電腦語言發展能力,此問題不易解決。
一般實作Robot,多以電子為主,語言只是實現工具,故一般工程師無法有效解決此問題。
常用工具C語言在此問題上,完全是缺乏應用之空間。故在此領域推展很慢。
3. Forth如何解決Robot通信及Swarm程式發展之可能
Forth寫Robot程式和C寫Robot有很大的不同。
C語言寫Robot比較像是外科手術:
1. Robot關閉; 麻醉
2. 寫程式下載; 開刀
3. Robot打開; 叫醒
但此程序對於多機器人的程式發展及測試是不利的。
因為有很多狀況是機器人已經面對和另一個機器人要做溝通協調,外科手術反而打斷取得狀況的方法。
Forth寫Robot程式則是像老師教學生:
學生接受老師的指令,一步步動作。有新狀況也可以回報,並加以修正。
在Swarm的環境,所有的通信都變成廣播型式的指令。
Forth原先只有一個對象,在此環境中,只要增加指定對象的指令、交換資料的指令,就可以開始使用。
此時程式設計師成為教練,每一個機器都是學生、學生間可以交換資料,並下命令改變其他學生的工作。
故Forth可以直接成為Swarm Robot的自然語言,人機一體語言在此環境是極為自然的溝通。
在通信格式上,幾乎只要將Forth指令用通信封包包一下就可以直接使用。
結論:
Bee認為Forth的衰退是時代的必然。但Forth要能使用下去必須找一個符合的環境。
只是經過長久的觀察才找出可以有效利用Forth特性的使用場所。
另一個說法是:C語言在MCU上已是霸主。
Forth在單打獨鬥上是輸C不少,所以就不要單打,改打群體戰。
在群體戰這個新領域Forth再利用其小而完美的特性重新站起來。
沒有留言:
張貼留言