2014年10月25日 星期六

Forth語言在Swarm發展之可行性

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再利用其小而完美的特性重新站起來。

沒有留言:

張貼留言