嚴格的說起來,改念了設計學的博士之後,我現在已經不太算是「資訊工程」領域的學者了,大多數的時間都花在「文化、設計」的新領域裡,寫有關秦史中由小
篆到秦隸發展的論文,今天能抽空上網到 Forth 的網站去閒逛挖寶,已經是很奢侈的嗜好與享受了!
言歸正傳,不知道大家是否還記得前幾年 Moore 先生開設了 IntellaSys 公司(http://
www.intellasys.net/),設計與生產了 40 核心的 Forth 晶片 SEA 40C18,一時給了 Forth 佬許多幻想的
空間,而今歲月匆匆,也不知道是否大夥兒已經找到了 Killer AP,狠狠的發了,從此能讓大家痛快的以 Forth Chip 為根基,大發利
市!
反之,這種多核心的晶片,而今越來越多,而使用 MultiProcessor 來控制 I/O 的技巧,也越來越成熟。當年 Moore 先生的許多
偉大創見,例如 Creat Dose> (單一方法的物件),例如 P21 的 MISC(最小指令集電腦架構),例如 SEA 40C18 的
I/O 控制指令等。而今也被其他公司成功的應用在產品上了。
不知道大家是否仍然記得有一家做 BASIC Stamp 起家的 Parallax 公司,前兩年推出了 Propeller 晶片,包含八個速度高
達 20MHz 的 32 Bits RISC 核心,每個核心擁有 2K 的 RAM ,還有八個核心共用的 64K Memory (32K
SRAM + 32K ROM) 與一組 32 Pins 的 I/O 及內建的 Timer/Counter 等,這個 CPU 沒有中斷指令,而是
讓八個 CPU 各自管理一個腳位變化觸發的處理程序,因此這個 CPU 非常的善於處理 I/O 導向的應用,目前主推的市場是機械人,與簡易的遊戲
機,開發工具有組合語言與一個稱為 Spin 的高階語言,當然如果願意花錢買,Parallax 也賣 C 的開發工具。
http://www.parallax.com/tabid/407/Default.aspx
重點是對 Forth 佬而言,當然得有一套 Forth 在上面才會顯得有趣些,而且最好這個 Propreller Forth 還得是
OpenSource 的,才夠爽口!畢竟對 Forth 佬而言,除了 Forth Inc. 可以公然的賣 Forth 開發系統外,誰都得免費的
提供開發工具,還得附上原始程式,否則就會被判定為褻瀆!
http://www.cliff.biffle.org/software/propeller/forth/index.php
在過往的 Forth Chip 設計理念裡,多半僅在意 Forth 指令的執行效率,而不太理睬 C 語言的執行能力,這讓 Forth 變成了資
訊科技裡的孤鳥,更隔離了所有 Unix 上的廣大資源。近來有一顆 Stack Machine 叫做 ZPU 卻剛好相反的是為了 GNU 的
gcc 編譯器而設計的,這意味著 ZPU 可能是 Linux 的最小平台。若現在台灣仍然有 Forth 佬對使用 FPGA 來設計
Forth Chip 感興趣,不妨參考一下這個設計。
http://www.zylin.com/zpudownload.html
當然 MicroCore 這個在 2004 年發表的 Forth Chip 的 VHDL 開放原始碼中,在 1.2 版後的設計,也考慮了 C
語言的需求,其實說穿了也就是得尊重 C 語言在「區域變數」與「參數傳遞」的處理方式。http://www.microcore.org/
上面所介紹的都是 Forth 相關的軟硬體開發系統,下面聊一點趣味性工具。
在 2005 年有一套挺有名的 PC 遊戲叫做 ZoG(Zillion of Games)被發表,主要是益智類遊戲的共用平台,當然到現在已經有
幾千個使用著貢獻的益智類遊戲被拱上了 ZoG 的遊戲平台,尤其是棋類的遊戲,包含中國的象棋與圍棋,ZoG 還內建有專用的遊戲 AI 引擎喔!當
然今天的主題不是介紹 ZoG 與它的開發語言 LISP 。而是在 2009 年,這個 ZoG 上竟然有 Forth 佬由於太過狂熱於寫遊戲,而
幫 ZoG 的益智遊戲平台,開發了一套使用 Forth Script 的開發工具叫做 Axiom。短短的十幾K Forth 程式,竟然就能夠寫
出一個益智遊戲,真的太神奇了!
http://www.zillions-of-games.com/
先到 ZoG 的下載網頁如下:http://www.zillions-of-games.com/demo/ 下載 Windows XP 的版
本,裝入 ZoG 的 Demo 版本後,在 Help 裡有個可以輸入 Name 與 Password 的選項。然後把 SN 輸入之後,就成為註
冊版了!(大家都是明白人,愛玩又手癢,那就上網去用心找找吧!)
註冊成功後,然後再去下載 Axiom 的開發工具,放在 ZoG 的次目錄下,做個 ZoG Patch 就能夠依照範例,使用 Axiom 的
ForthScript 來寫益智遊戲了,挺好玩的!
http://www.zillions-of-games.com/cgi-bin/zilligames/submissions.cgi/68497?do=show;id=1452
其實,我今天跟燕南大俠在 MSN 上聊了許久,他說使用 Win32Forth 6.13 版搭配 DirectX 來當 Forth 的遊戲開發工
具,當然這樣的方式除了顯著的效率高與速度快之外,更符合了 Forth 傳統自給自足、自生自滅的精神,但我則有點兒不以為然。畢竟,多少年了,興
許,該讓 Forth 放下一點唯我獨尊的傲氣,嘗試著走出自己的小圈子,也開始去利用外面世界的廣大資源,加上不停頓的半導體工業,實踐著偉大的莫爾
定律,使得 PC 的 CPU 速度與 DRAM 大小,都早就跨越了在 8 Bits 的時代裡,發明 Forth 的當年想像。所以我建議使用
FICL 加上 SDL 這兩套使用 ANSI C 寫成的 Forth 系統與多媒體操作介面 Lib 來整合出一套類似 PyGame 這樣的遊戲
開發平台。讓所有他人使用 ANSI C 寫出來的遊戲程式庫都能被 FICL Include 近來使用,那樣子就為 Forth 開啟了一展通往
C 世界的窗戶。
http://ficl.sourceforge.net/
http://www.libsdl.org/
http://www.pygame.org/news.html
說透了,看到 PyGame 與 ZoG 的成功案例,都該給 Forth 佬一個當頭棒喝,Python 與 LISP 這兩個語言都不見得比
Forth 更簡潔或更容易,甚至 LISP 還比 Forth 更老些,但作為一套遊戲開發工具,重要的是使用著介面,一定要設計的十分友善,不能有
太艱澀的學習門檻,滿足了初學者小小的成就感,才會吸引著使用者不斷的投入,而終於引起廣大的支持與迴響,然後累積了上千個使用者的小案例,吸引著更多
的入門者來使用,最後成就了網路上的大宅門,這樣的良性循環,不就是 FIG 當年想推廣 Forth 的夢想嗎?只是 Forth 佬把自己逼進了
System Programmer 的窄胡同,非得玩熟了 Meta Compiler 弄一套自個兒的 Forth 系統玩玩,否則不算
「Forth 玩家」,唉!誰看過幾個 C 的 Programmer 懂得 Lex 與 Yacc 並且 K 過 PDP11 的 UNIX 原始程
式呢?
結束文章前,想說幾句由衷的感慨,離開資訊工程系好多年了,前些日子,回到資訊工程系去找老同事聊天,談到了現在學生的程度低落,寫程式上機考試幾乎全
班垮台,我差點昏倒。現在的大一學生第一個程式語言學得是 Java,然後資料結構也使用 Java,然後網路應用也使用 Java。結果是啥?一個班
級除了少數的幾個學生還能跟上進度,自己寫程式之外,其餘的都練成了「手少神工」,交作業從大一抄到了大四。連編譯器與除錯器都不會用,就由資訊系畢業
了!想想廿五年前自己剛教書的時候,也不過教學生寫寫 QuickBASIC 罷了,語言的結構不複雜,內建的函數庫也不太大,但解決學生的上課需求也
足夠用了!那時候好像學生的挫折感是能夠容忍的,而且很快的就通過學習瓶頸,而享受到寫程式的樂趣了!
秉持著這樣的想法,我在網路上找到了一個類似 QuickBASIC 的 LibertyBASIC,才 3M 左右,小巧可愛。可以開發視窗的小應
用,執行速度當然比不上 Visual C++ ,但寫獨立執行的小程式也足足有餘了,何況也能夠使用 Windows API 與別人提供的
DLL 彈性也夠,至少在 3GHz 的 Pentium4 上是感受不到 Interpreter 的執行速度有所跌宕了!畢竟,做簡單的事情,使用
簡單的工具就夠了,有時候也想使用 Win32Forth 來寫小應用,但一想到這套內嵌著大量使用組合語言最佳化的龐然大物,就有點心虛不安,畢竟
Forth 的 Debugger 可不是僅僅一個 .S 就能夠解決的啊!一笑~
http://www.libertybasic.com/
2009年03月26日 子夜
燾昍 隨筆
老師的話說中我的心聲,forth的例題永遠是那十多個,我想很難吸引更多的人來學,上次想去上月會但每次上的都是我聽不懂的東西,我喜歡froth,
但發現他不太喜歡陌生人
可能去上課的覺得太基礎了沒什好上的,但如果沒有新人進入forth,那在台灣可能十年後沒人會用,用forth的人都說這是一個寶,卻沒人想傳下來,
對一個自修又沒什程式底子的人來說它真的太抽像了。
喜歡forth卻都學不會的人留
因此,身在c營心在forth也沒什麼不好。forth 本來就是言語道斷的禪法、是無相神功,只需精神性的滲透、細水長流,而不必旗幟鮮明的和主流競
爭、對幹。
On 3月26日, 下午11時01分, 金城 <CherngC...@gmail.com> wrote:
> 諸位 Forth 佬,我是燾昍(Forth 的禪思),大家好!又有許久沒在這兒跟大家請安了,這兩天上網逛了一下 FIG 的網站,發現了兩個有趣
> 的東西,追蹤了一下,在這兒概略的介紹給大家,希望能激發某些火花。
>
> 嚴格的說起來,改念了設計學的博士之後,我現在已經不太算是「資訊工程」領域的學者了,大多數的時間都花在「文化、設計」的新領域裡,寫有關秦史中由小
> 篆到秦隸發展的論文,今天能抽空上網到 Forth 的網站去閒逛挖寶,已經是很奢侈的嗜好與享受了!
>
> 言歸正傳,不知道大家是否還記得前幾年 Moore 先生開設了 IntellaSys 公司(http://www.intellasys.net/),設計與生產了 40 核心的 Forth 晶片 SEA 40C18,一時給了 Forth 佬許多幻想的
> 先到 ZoG 的下載網頁如下:http://www.zillions-of-games.com/demo/下載 Windows XP 的版
> 本,裝入 ZoG 的 Demo 版本後,在 Help 裡有個可以輸入 Name 與 Password 的選項。然後把 SN 輸入之後,就成為註
> 冊版了!(大家都是明白人,愛玩又手癢,那就上網去用心找找吧!)
>
> 註冊成功後,然後再去下載 Axiom 的開發工具,放在 ZoG 的次目錄下,做個 ZoG Patch 就能夠依照範例,使用 Axiom 的
> ForthScript 來寫益智遊戲了,挺好玩的!http://www.zillions-of-games.com/cgi-bin/zilligames/submissions.cgi/6...
>
> 其實,我今天跟燕南大俠在 MSN 上聊了許久,他說使用 Win32Forth 6.13 版搭配 DirectX 來當 Forth 的遊戲開發工
> 具,當然這樣的方式除了顯著的效率高與速度快之外,更符合了 Forth 傳統自給自足、自生自滅的精神,但我則有點兒不以為然。畢竟,多少年了,興
> 許,該讓 Forth 放下一點唯我獨尊的傲氣,嘗試著走出自己的小圈子,也開始去利用外面世界的廣大資源,加上不停頓的半導體工業,實踐著偉大的莫爾
> 定律,使得 PC 的 CPU 速度與 DRAM 大小,都早就跨越了在 8 Bits 的時代裡,發明 Forth 的當年想像。所以我建議使用
> FICL 加上 SDL 這兩套使用 ANSI C 寫成的 Forth 系統與多媒體操作介面 Lib 來整合出一套類似 PyGame 這樣的遊戲
> 開發平台。讓所有他人使用 ANSI C 寫出來的遊戲程式庫都能被 FICL Include 近來使用,那樣子就為 Forth 開啟了一展通往
> C 世界的窗戶。http://ficl.sourceforge.net/http://www.libsdl.org/http://www.pygame.org/news.html
Linux& Arm 也是如此過程.在過去 單在 Arm port Linux , 各家有各家的 tooling chain ,也搞的人仰馬
翻! (samsung Arm公板此時出現)
現在 Arm的都已便宜,chip價格也直逼8051. 上可以搞大系統小可以搞單晶片.
當初 eforth 全心搞,forth MCU 時, 我就建議順便先推 arm 做為市場入手( 如GBA forth ),後接 forth
MCU!
現在eforth休眠中,許多心血,都功敗垂成! (方向沒錯,但可惜資金不足,力道分散)
試著整理一套, Win32forth <----> Arm ( 以 ST32F103 公板為主, 仿 GBA )
會以Win32forth 做為 IDE 方向發展,Arm 以 ST32F103 為主, 仿 GBA , 弄個 Game應用.
另外增加 Objlink I/O 的功能,以互通其他語言的聯結!
(ps有這個機制 ,商業公司才會採用,保護它們所謂的商業機密; )
硬體公板 暫以ST32F103開發板為主. (上面i/o界面齊全,又不大; 36pin~144pin全,arm移植ok)
( 丁陳老師 寫了好幾個chip eforth,eforth卻不出公板,納悶耶)
軟體公版 改寫 eforth 底層,增加 Objlink I/O (ELF格式)的功能
IDE Win32forth
版權管理效法LINUX
On 4月1日, 上午9時37分, "H.C. Chen" <hcchen5...@gmail.com> wrote:
> 拜讀 燾昍 老師的文章真快樂。
>
> 我真正一直在用的是自己土製的 Forth 語法 interpreter, 自認還只是 forth 門外漢。
> 我碰過幾次經驗(好像是做習題時)不同作者的 forth
> 不太相容。我沒下多少功夫去解決,就自己亂猜了:「也許這是必要之惡?難怪比較少人用。」我自己的也一樣無法與人直接相容。
>
> 其實無需為 forth 這樣的神器擔心 . . . .
> 啊! 誤會了,所有憂心 forth 人口的,其實是為手握神兵卻使不上力,心裡很不爽喔!對不對?
> 不想抱怨別人,心裡一轉,就推成「人口太少」了。門外漢亂猜的,亂猜的。
>
> 要是有「forth 程式庫大全」網站,就證明我猜錯了。(那好!)
> 果真無法相容,有「forth porting 心法」也好,我有空找找看 . . . .
>
> 2009/4/1 燕南 <ezfo...@gmail.com>
>
>
>
>
>
> > 會用 : ; &堆疊操作 forth 就算學完了!
> > 剩下是自己想怎麼用! 自然就會造出 所定義的詞出來! <--- 這個原則一定要有!
> > 再看有沒有 已定義的詞,可以借力使力不會費力! <--- 這是借用而不一定要!- 隱藏被引用文字 -
>
> - 顯示被引用文字 -
> > C 世界的窗戶。http://ficl.sourceforge.net/http://www.libsdl.org/http://www.pygame.o...
>
> > 說透了,看到 PyGame 與 ZoG 的成功案例,都該給 Forth 佬一個當頭棒喝,Python 與 LISP 這兩個語言都不見得比
> > Forth 更簡潔或更容易,甚至 LISP 還比 Forth 更老些,但作為一套遊戲開發工具,重要的是使用著介面,一定要設計的十分友善,不能有
> > 太艱澀的學習門檻,滿足了初學者小小的成就感,才會吸引著使用者不斷的投入,而終於引起廣大的支持與迴響,然後累積了上千個使用者的小案例,吸引著更多
> > 的入門者來使用,最後成就了網路上的大宅門,這樣的良性循環,不就是 FIG 當年想推廣 Forth 的夢想嗎?只是 Forth 佬把自己逼進了
> > System Programmer 的窄胡同,非得玩熟了 Meta Compiler 弄一套自個兒的 Forth 系統玩玩,否則不算
> > 「Forth 玩家」,唉!誰看過幾個 C 的 Programmer 懂得 Lex 與 Yacc 並且 K 過 PDP11 的 UNIX 原始程
> > 式呢?
>
> > 結束文章前,想說幾句由衷的感慨,離開資訊工程系好多年了,前些日子,回到資訊工程系去找老同事聊天,談到了現在學生的程度低落,寫程式上機考試幾乎全
> > 班垮台,我差點昏倒。現在的大一學生第一個程式語言學得是 Java,然後資料結構也使用 Java,然後網路應用也使用 Java。結果是啥?一個班
> > 級除了少數的幾個學生還能跟上進度,自己寫程式之外,其餘的都練成了「手少神工」,交作業從大一抄到了大四。連編譯器與除錯器都不會用,就由資訊系畢業
> > 了!想想廿五年前自己剛教書的時候,也不過教學生寫寫 QuickBASIC 罷了,語言的結構不複雜,內建的函數庫也不太大,但解決學生的上課需求也
> > 足夠用了!那時候好像學生的挫折感是能夠容忍的,而且很快的就通過學習瓶頸,而享受到寫程式的樂趣了!
>
> > 秉持著這樣的想法,我在網路上找到了一個類似 QuickBASIC 的 LibertyBASIC,才 3M 左右,小巧可愛。可以開發視窗的小應
> > 用,執行速度當然比不上 Visual C++ ,但寫獨立執行的小程式也足足有餘了,何況也能夠使用 Windows API 與別人提供的
> > DLL 彈性也夠,至少在 3GHz 的 Pentium4 上是感受不到 Interpreter 的執行速度有所跌宕了!畢竟,做簡單的事情,使用
> > 簡單的工具就夠了,有時候也想使用 Win32Forth 來寫小應用,但一想到這套內嵌著大量使用組合語言最佳化的龐然大物,就有點心虛不安,畢竟
> > Forth 的 Debugger 可不是僅僅一個 .S 就能夠解決的啊!一笑~http://www.libertybasic.com/
>
> > 2009年03月26日 子夜
> > 燾昍 隨筆- 隱藏被引用文字 -
>
> - 顯示被引用文字 -
其實 Forth 是很多人的秘密武器,甚至是 Adobe 這樣的大公司的秘密武器。我剛剛貼上了一段文字報導有關 Javascript 的發展,
最近 Javascript 大量使用 Forth 開發出來的技術,甚至裡面就藏著 Forth。很難想像吧,未來我們使用的網頁瀏覽器,只要不用微
軟的 IE ,裡面都會藏著 Forth 技術。甚至 IE 也可能藏著一個 Forth 核心,微軟不說,誰知道呢?
對於必須在自己的產品中內建一個 interpreter 的人,Forth 絕對是最好的起點。在這個起點上可以建立 Javascript 或是其
他更具使用者親合力的語言,而 Forth 則是內藏的做最佳化的秘密武器,Adobe 貢獻給 Mozilla ,用於改進 Firefox 內
Javascript 執行效率的核心就是用這種方法設計的。Forth 的inner interpreter 和組合語言間的親合性使得某種被稱
為 Tracing 的 Just in time compiling 技巧變得容易實行。
Forth 是一個無名的英雄。人們只會在不經意時發現。
附上以下英文網頁說明一個不懂得 Forth 但是為了要改進 Firefox 中 Javascript 執行效率而必須瞭解 Forth 的人的
blog。.從他的這篇和其他幾篇 blogs 中我們可以知道目前方興未艾的 javascript 性能提升大戰中大家使用的秘密武器都和
forth 有關。
http://blog.mozilla.com/dmandelin/2008/05/21/tamarin-tracing-interals-part-ii-forth/
如果有台南地區的 Forth 朋友可以和我聯絡。