26

1 つまたは複数のレトロ コンソール プラットフォームでゲーム開発を容易にすることを目的とした、新しいForthシステムの開発を検討しています。私は Forth の初心者で、どの Forth コードベースから移植を開始するかを決めるのに助けが必要です。

私は基本的に、特定の Forth と互いの長所/短所を探しています。JonesFORTHのソースを読み、それに対する賞賛と批判、および ANS に関する議論を読みましたが、残念ながらかなり混乱したままです。Forth コミュニティは、私が知る限り、標準準拠の問題に沿ってかなり残酷に分かれているようで、標準が良いものであると同時にひどいものである理由について、両方の陣営によって非常に良い議論がなされています。しかし、標準が正確に何を変更するかについて、必要以上に複雑で肥大化するという一般的な感覚を除いて、良い実用的なアドバイスを見つけることができないようです.

アセンブリーや C での開発の可能性に現在怯えているプログラマーや愛好家のために、開発を容易にしたいと考えています。教育を受けた決定。

4

7 に答える 7

7

私はあなたが今いるような場所です。私はしばらくの間Forthを何気なく読んでいて、スクリプトにも多くの可能性があると思います。しかし、私は権威の近くにはいませんが、ここに私の考えがあります。

まず第一に、Forthは究極のプログラム可能なプログラミング言語のようです-lisp以上のものです。そのために、コーディングする必要のあるCまたはアセンブリの量がわかりません。私はフォース自体で語彙を開発することにもっと傾いていました。結局のところ、それが使用されることになっている方法です。

次に、私が試した実装の中で、GforthとPforthが一番好きです。

どれを使っていますか?

最後に、これが私が発見したオンラインの4番目の読書のリストです:

  • フォースを開始
  • フォースを考える
  • フォースプライマー
  • Forth言語
  • 4番目のチュートリアル
  • Pforthチュートリアル
  • Gforthマニュアル
  • 4番目に開始
  • WikiForth
  • OLPC Forth
  • コンパイラを構築しましょう
  • 他に見つけましたか?

    于 2010-07-15T18:00:54.280 に答える
    4

    基本的な Forth システムは非常に小さく、すぐに実装できます。次のページはあなたにとって非常に役立つと思います: 「Linux / i386 システム向けの最小限の Forth コンパイラとチュートリアル」. これは、Forth システムのブートストラップに関する線形チュートリアルです!

    定義語 (コンパイル時に実行される語) を必ず実装してください。それが Forth の力の源です。本当に拡張可能にします。

    実際に試したことはありませんが、オープン ソース ライセンスを持つ数少ない Forth の 1 つであるbigFORTHに落ち着いたことがあります。また、積極的に維持されています。たとえば、今年初めにリリースがありました。

    過去数年間、Forth に関する一連の注釈付きリンクを収集してきました。中には入手困難なものもあります。

    標準の話について: これは 20 年前の議論です。話すよりも実際に何かをする方が重要だと思います: ソフトウェアを実装し、素晴らしい例を提供し、ドキュメントを書き、他の人を参加招待するなど. リンクの注釈付きリストで「machineForth」および「ColorFORTH」を検索すると、興味深い記事やステートメントを見つけることができます。チャールズ・ムーアも現在ブログを持っています。

    于 2010-07-20T20:28:02.203 に答える
    3

    最初のステップとして試みたいことの 1 つは、Java、C++、Python などの高レベル言語で Forth インタープリターを作成することです。これには、マシンレベルの Forth の主な利点である速度とコンパクトさが欠けていますが、独自の仮想マシンを作成すると、Forth のさまざまなフレーバーで使用されるさまざまな種類のスレッドなどについて理解できるようになります。

    ほとんどの新しい Forth 実装は基本的に、CPU を仮想マシンとして見ることから始まります。したがって、解釈されたバージョンからマシンコード バージョンに移行するときに、明示的な仮想マシンを作成することは知識の無駄にはなりません。また、マシン バージョンをビルドするときに相互参照する独自のコードの設計図も用意されています。

    ただし、マシン コードに本当に慣れている場合は、おそらく上記の手順をスキップして、標準の 1 つを直接移植するだけでかまいません。

    標準に関しては、いくつかの標準を選択しますが、最初は最小限にとどめます。ユーザー定義の単語以外の点で標準を超える必要がある場合は、実装のニーズに応じて、標準または非標準のいずれかに向かっていつでも成長できます。Forth の最も優れた点の 1 つは、非常に単純であるため、実行する Forth コードの一部を書き直すよりも、コンパイラ全体を簡単に書き直すことができることです (笑)。

    于 2010-07-28T21:48:53.543 に答える
    2

    ANSI 互換性に関しては、独自のアプリケーションに Forth を使用している場合は、必要のないものを省略したり、気に入らないものを変更したりすることもできます。間接スレッド化された Forth は、16 ビット プロセッサで最もコンパクトです (64 ビットではこれ以上ありません)。ですから、これはおそらく進むべき道です。

    FIG-Forth と呼ばれる間接スレッド Forth のファミリーは、今でも教育的な資料です。jonesforth は、同じ流れで進む Forth の例です。私自身、jonesforth と yourforth のインスピレーションの 1 つである ciforth の著者です。これは、物事をあるがままに設計する理由を説明しようとしているため、おそらく一見の価値があります。Ting の eforth (いたるところにある) と Camelforth も良い例です。gforth は c を介して迂回し、そのバルクはあなたにとってあまり価値がありません。

    一般的なアドバイスの 1 つとして、コード ワード (最低レベルの Forth ではなく、アセンブラーでコード化されたもの) が必要な場合は、それを盗んでから再実装する方がよいでしょう。ほとんどのあいまいなプロセッサを除くすべてのプロセッサで、たとえば 32 ビット x 16 ビットの除算のコードがどこかに見つかるはずです。そのため、使用しているプロセッサに実装されている Forth をいくつか集めてください。

    プロセッサを選択する必要があり、それはほとんどあなたをロックします。その後、Camelforth の 1 つを使用するだけで (ほとんどの一般的なプロセッサ用にあるため)、アプリケーションを開始できます。満足できない場合は、それを変更して独自の Forth にすることができます。6809 または Renesas プロセッサ、または 16 ビット i86 を使用している場合は、私の ciforth を出発点として使用できます。

    于 2015-02-09T22:00:49.103 に答える
    2

    Arduino上のゲーム開発プラットフォームであるGameduinoは、内部で最小限のCPU(J1フォース)を実行しています。

    J1 forthの Verilog ソース コードに加えて、Serge Zaitsev によるGoogle Go で書かれたコンパイラである PC シミュレータもあります。

    J1 はすでにザイリンクス FPGA に実装されています。最新の MCU で J1 CPU を「シミュレート」することもできます。

    于 2013-10-19T13:10:03.940 に答える
    2

    Ting が書いた eForth を探すことをお勧めします。ある意味で現代的な図のようなものです。彼は C で書かれたカーネルを持っていますが、eForth カーネル/システムはすでに多くのプラットフォーム/CPU に移植されており、そのほとんどはアセンブリ カーネル/コアを持っています。ただし、Factor と呼ばれるちょっとしたクールなものがあります。「ただのゲーム」として始まり、プログラミング言語の世界のワイルドで楽しいコーナーに行き着きました

    于 2010-07-21T20:16:14.210 に答える