段階的な機能とは(概念的に)
最近のCACMの記事[1]で、著者は段階的な機能の実装を提示しています。彼らはそれがよく知られているかのようにこの用語を使用し、どの参考文献も明らかな紹介のようには見えません。 彼らは簡単な説明をします(強調鉱山と参照番号が変更されました;オリジナルでは22です) プログラム生成のコンテキストでは、Taha and Sheard [2] によって確立されたマルチステージプログラミング(MSP、略してステージング)により、プログラマーはプログラム式の評価を後のステージに明示的に遅らせることができます(したがって、式のステージング)。現在のステージは、次のステージのプログラムを構成(および場合によっては実行)するコードジェネレーターとして効果的に機能します。 ただし、Taha and Sheardは次のように書いています(強調強調): マルチステージプログラムは、コードの生成、コンパイル、実行をすべて含むプロセスであり、すべて同じプロセス内にあります。多段階言語は多段階プログラムを表現します。ステージング、したがってマルチステージプログラミングは、実行時の解釈オーバーヘッドを払わない汎用ソリューションの必要性に対処します。 彼らはさらに、ステージングが効果的であることを示す古い作品へのいくつかの参照に進み、それは概念がさらに古いことを示唆しています。彼らは用語自体の参照を与えません。 これらの記述は、矛盾していないにしても、直交しているように見えます。RompfとOderskyが書いたものは、TahaとSheardが提案したものの応用かもしれませんが、それは同じことに関する別の視点かもしれません。彼らは重要な点は、実行時にプログラムが自分自身の一部を(再)作成することであることに同意しているようですが、それが必要な能力であるか、十分な能力であるかはわかりません。 それでは、このコンテキストでのステージングの解釈は、それぞれステージングとは何ですか?この用語はどこから来たのですか? 軽量モジュラーステージング: T. RompfおよびM. Oderskyによるランタイムコード生成およびコンパイル済みDSLへの実用的なアプローチ(2012) W. TahaおよびT. Sheardによる明示的な注釈付きのMetaMLおよびマルチステージプログラミング(2000)