2010-07-08 236 views
23

我期待開發一個新的Forth系統,旨在使遊戲開發更容易在一個或幾個復古控制檯平臺上進行。我是Forth的初學者,需要您的幫助來決定從哪個Forth代碼庫開始移植。開始從哪裏開始移植?

我基本上是在尋找特定的Forths vs對方的優點/缺點。我已經讀到JonesFORTH的來源以及對它的讚揚和批評,以及關於ANS的討論,不幸的是感到相當困惑。據我所知,Forth社區似乎在遵守標準問題上相當殘酷地劃分,兩個陣營就這個標準既是好的又是可怕的事情提出了非常好的論點。然而,我似乎無法找到關於標準變化究竟是什麼的良好實用建議,除了一般意義上說,它使事情變得比他們可能需要的更爲複雜和膨脹。

我希望能夠讓程序員和業餘愛好者們更容易開發,因爲在彙編或C語言開發的前景下,所以我傾向於更簡單的Forth,但我對Forth的瞭解還不夠充分尚未做出有教養的決定。

回答

6

我很好,你現在在哪裏。我一直隨便讀了一段時間,也認爲它有很大的潛力 - 也許對於腳本也是如此。但是,我遠沒有權威,但這是我的想法。首先,Forth似乎是最終的可編程編程語言 - 甚至比lisp還要多。爲此,我不確定您需要編寫多少C或程序集。我更傾向於在Forth本身開發詞彙表。畢竟,這就是它應該如何使用的。其次,在我嘗試過的實現中,我喜歡Gforth和Pforth最好的。

你正在使用哪些?

最後,這裏是網上閱讀來回,我發現了一個清單:

  • Starting Forth
  • Thinking Forth
  • Forth Primer
  • Forth Language
  • Forth Tutorials
  • Pforth Tutorial
  • Gforth Manual
  • Begin Forth
  • Forth Links
  • WikiForth
  • OLPC Forth
  • Lets Build a Compiler
  • Jones Forth
  • 你有沒有發現任何其他方面?

    4

    一個基本的Forth系統非常小,可以快速實施。我認爲以下頁面對您非常有用:「A sometimes minimal Forth compiler and tutorial for Linux/i386 systems」。這是一個關於引導Forth系統的線性教程!

    務必執行定義字(在編譯時執行的字)。這就是福斯的力量來自何處;使其真正具有可擴展性。

    我還沒有真正嘗試過它,但我曾經因爲bigFORTH而入駐,因爲它是少數擁有開源許可證的Forths之一。它也被積極維護;比如今年早些時候發佈了一個版本。

    我在過去幾年收集了a set of annotated links about Forth。有些是很難找到的東西。

    關於標準談話:這是一個20年的討論。我認爲實際做一些事情而不是談話更重要的是:實施軟件,提供殺手級的例子,編寫文檔,邀請其他人蔘與等。查爾斯摩爾已經完成並完成了Forth chips,machineForthColorFORTH。如果您在註釋鏈接列表中搜索「machineForth」和「ColorFORTH」,可以找到一些有趣的文章和聲明。 Charles Moore現在也有blog

    2

    我建議尋找eForth,一個Ting寫道。在某些方面有一種現代化的圖。他有一個用C語言編寫的內核,但eForth內核/系統已經被移植到了許多平臺/ cpus中,大多數都有彙編內核/內核。不過,這裏有一個很酷的叫做因子。它起源於'僅僅爲了遊戲',最終成爲編程語言世界的一個狂野而有趣的角落

    2

    你可能想嘗試的第一步是使用某些更高級的語言編寫Forth解釋器Java,C++,Python等。它將缺乏機器級Forth的主要優點:速度和緊湊性,但通過編寫自己的虛擬機,您將瞭解不同類型的線程等在各種口味的福斯。

    大多數新的Forth實現基本上是通過將CPU視爲虛擬機來啓動的 - 因此,當從解釋版本轉換爲機器代碼版本時,製作顯式虛擬機不會浪費知識。此外,在構建機器版本時,您將擁有自己的代碼藍圖以供交叉引用。

    但是,如果您確實非常非常適合使用機器碼,那麼您可以跳過上述步驟,直接移植其中一個標準。

    至於標準,我會選擇一些標準,但保持最低限度開始。如果您需要超越用戶定義詞以外的其他標準,您可以隨着實施需求的變化,不斷向標準或非標準方向發展。 Forth最酷的事情之一就是它非常簡單,你可以重新編寫整個編譯器,比重新編寫你將要運行的一些Forth代碼更容易,哈哈。

    1

    Gameduino,在Arduino之上的一個遊戲開發平臺,內部運行着一個最小的CPU(J1)。

    除了Verilog源代碼J1 forth,還有一個PC模擬器,一個用google go編寫的編譯器,由Serge Zaitsev編寫的here

    J1已經在Xilinx FPGA中實現。也可以在任何現代MCU上「模擬」J1 CPU。

    0

    關於ANSI兼容性,如果您使用Forth作爲自己的應用程序,則可以省去任何不需要的內容,甚至可以更改不喜歡的內容。間接線程化Forths是16位處理器上最緊湊的處理器之一(不超過64位)。所以這可能是要走的路。

    間接線索Forth的稱爲FIG-Forth的家族仍然是教育性的材料。 jonesforth是Forth的一個例子,它繼續發展。我自己是ciforth的作者,這是jonesforth和你的創作靈感之一,這可能值得你一試,因爲它試圖解釋設計事物的原因。 Ting的eforth(到處都是)和Camelforth也是很好的例子。 gforth通過c繞道而過,它的體積對你來說價值不大。

    一個一般的建議,如果你需要一個代碼字(用匯編代碼而不是Forth編碼,最低級別),你最好偷竊它,然後重新實現。所有代碼都是32位乘16位除法,但最隱蔽的處理器肯定會在某處找到。因此,收集您正在使用的處理器上實施的幾個Forth。

    您必須選擇一個處理器,並且會將您鎖定在非常多的位置然後,您可以使用其中一個Camelforth(因爲它適用於大多數流行的處理器),並從您的應用程序開始。如果你不太高興,你可以修改它成爲你自己的Forth。如果您使用的是6809或瑞薩處理器或16位i86,則可以使用我的ciforth作爲起點。