0

私は現在、アセンブラーに類似した低レベルのインタープリター型プログラミング言語を設計し、再考しています。

私はすぐに、関数/ループ/goto の決定の問題に遭遇し、ループが好きwhilefor高レベルすぎて不適当である一方で、goto は低レベルすぎて維持できず、一般的に再び悪になるだろうと考えました。戻り値と引数を持つほとんどの言語の関数は、言語の概念にも適合しません。

だから私は関数とgotoの間で可能な何かを理解しようとしました

  • 再帰
  • 効率的なループ

しばらく考えた後、サブルーチンのアイデアを思いつきました。

  • 関数のように始まりと終わりがある
  • 名前はありますが、goto のような引数はありません
  • jump で 1 つに入り、終了する前に再びそこから出ることができますreturn(結果は返されず、サブルーチンを停止するだけです)。
  • 通常のコードと同じように処理 -> goto のようなグローバル スコープ

だから私は知りたかった:

  • 上記のアイデアは良いですか?(欠点)利点は何ですか?
  • function と goto のより良い組み合わせ、またはまったく新しいアイデアはありますか?
4

3 に答える 3

0

アセンブリレベルになると、GOTOは邪悪なものではなくなり、プログラムが実際にどのように機能するかということになり始めます

しかしとにかく、あなたのサブルーチンはパラメータを取りますか?そうでない場合でも、再帰オーバーフローを回避するために、ストアはどのように状態を登録しますか?

于 2010-04-09T15:22:18.460 に答える
0

上記のアイデアは良いですか?

いいえ。

または、少なくとも、新しい言語を設計することによって解決しようとしている問題について、より良い説明をするまでは。

(欠点)利点は何ですか?

関数の抽象化も再帰もなし、変更可能な状態を共有するだけでプログラミングできます。非常に弱い合成原理。人間のプログラマにとって使いにくく、コンパイラのターゲットとして意味がありません。


このようなプロジェクトを成功させるには、目標が必要です。あなたの目標が何かを学ぶことであれば、いくつかの優れた言語を学び、何を盗むことができるか、何を組み合わせることができるか、または実装できるかを理解しようとする方がよいでしょう. 解決しようとしている実際の問題があり、それが標準のアセンブリ言語では解決できない場合、それは興味深いことです。それが何であるかを教えてください。

「ポータブル アセンブリ言語」を Google で検索して、何か面白いものが見つかるかどうかを確認してみてください。

于 2010-04-10T03:34:06.967 に答える
0

実装しているサブルーチンは、BasicのGOSUBまたはAssembly のCALLとまったく同じです。

再帰は、再帰アルゴリズムに使用している場合にのみ意味があります。これには、パラメーター、ローカル変数、および戻り値を持つ関数が必要です。

ただし、グローバル変数しか持たないいくつかの単純なスクリプト言語では、変数をスタックに格納するためのPUSHおよびPOP命令があります (アセンブリ言語でレジスタがプッシュおよびポップされるのと同じように)。これらは、ローカル変数と再帰の低レベルの実装に使用できます。

私は、Rosetta Code のいくつかの Vedit マクロ言語の例でその方法を使用しました。たとえば、ハノイの塔ベジエ曲線を参照してください。

于 2010-04-09T16:34:16.800 に答える