10 Should I use Gforth extensions? ¶
このマニュアルの残りの部分を読み進めると、 標準ワードのドキュメントと、 いくつかの魅力的な Gforth 拡張のドキュメントがあります。 あなたは、
「標準に限定すべきか、 それとも gforth での拡張を使用すべきでしょうか?」(Should I restrict myself to the
standard, or should I use the extensions?)
その答えは、 あなたが取り組んでいるプログラムの目標(goal)によって異なります:
- 自分だけのためですか、 それとも他の人と共有したいですか?
- 共有したい場合、 他の人は全員 Gforth を使用していますか?
- 自分だけの場合は、 Gforth に限定してもいいですか?
プログラムを Gforth のみに制限しても問題ない場合、 Gforth 拡張を使用しない理由はありません。
移植性を保ちたい別のプログラムでこれらのパーツを再利用したい場合に備えて、 標準を守るのが簡単なところでは標準を守るのは良い考えです。
プログラムを他の Forth システムに移植できるようにしたい場合は、 以下の点を考慮する必要があります:
- 保守されているほとんどの Forth システムは、 標準 Forth をサポートしています。 したがって、 プログラムが標準 Forth
に準拠していれば、 多くのシステム間で移植可能です。
- 多くの Gforth 拡張は、 compat/ ディレクトリで提供されるパブリック・ドメインのファイルを使用して標準 Forth
に実装できます。 これらについてはそれぞれ本文中で触れています。 つまり、 あなたは、 これらの gforth 拡張を使用しない理由はありません。
プログラムは依然として標準 Forth に準拠できます。 つまり、 あなたはプログラムに適切な compat/
のファイル(達)をインクルードするだけでよいのです。
- ans-report.fs (see ans-report.fs: Report the words used, sorted by wordset)ツールを使用すると、 あなたのプログラムを分析し、
どの非標準ワードに依存しているかを簡単に判断できます。 ただし、 標準ワードを非標準的な方法で使用しているかどうかについてはチェックされません。
- 一部の手法は標準 Forth によって標準化されておらず、 標準的な方法で実装するのは困難または不可能ですが、 ほとんどの Forth
システムでは簡単に実装でき、 通常は同様の方法(ワード・ヘッダーへのアクセスなど)で実装できます。 Forth
には、プログラマーがツールの実装に依存する機能を利用する(たとえば、 ディクショナリー構造の知識に依存するなど)歴史的に豊富な先例があります。
これらのテクニックは、 ハードウェアの性能の最後の一滴まで引き出すために必要な場合もありますが、 単なるプログラミング上の省略表現である場合もあります。
- Gforth 拡張を使うことで、 この部分を他のForthシステムに移植するコストよりも作業コストを省くことができるだろうか?
- 追加機能には、 移植性の低下や移植に関する追加の問題を勘案するだけの価値があるだろうか?
これらの考慮事項を実行するには、 何が標準で何が標準ではないかを知る必要があります。 このマニュアルには通常、
何が非標準であるかが記載されていますが、 信頼できる情報源は
standard document です。
Appendix A of the Standard (Rationale) は、技術委員会の思考プロセスについての貴重な洞察を提供します。
注意: Forth システム間の移植性だけが移植性の問題ではないことにも注意してください。 異なるプラットフォーム (プロセッサと OS
の組み合わせ)間の移植性の問題もあります。