Bartłomiej Szypelow の発言に完全に同意します。とにかく、私はあなたの質問に答えようとします。
宣言型言語は、機能するために常に命令型言語に依存しています。たとえば、算術のような単純なものを考えてみましょう。の結果を求めるとき、ステートメント全体を解釈する前に、まずをどのように理解すべきか、またそのコンテキストで演算子をどのように計算できる1+1
かを知る必要があります。これは、複雑さを克服する方法の 1 つです。プラス演算を使用できるようにするために、プラス演算がどのように行われるかを知る必要はありません。1
+
http://en.wikipedia.org/wiki/Imperative_programmingから:
手続き型プログラミングは、宣言型プログラミングへの一歩と考えることができます。プログラマーは、プロシージャーの名前、引数、および戻り値の型 (および関連するコメント) を見るだけで、特定のプロシージャーが何を行うべきかを、その結果がどのように達成されるかの詳細を必ずしも見なくてもわかることがよくあります。同時に、完全なプログラムは、実行されるステートメントとその実行順序を大幅に「修正」するため、依然として不可欠です。
どのドメインでも同じことが当てはまります。客室乗務員に尋ねるとreschedule
、flight
彼女はフライトと乗客が何であるか、そしてその方法を知っていますreschedule
。したがって、スケジューリングがどのように機能するかを記述せずに、完全に宣言的なフライト スケジューリング ドメイン モデルを作成することは不可能です。すべてのドメイン モデルには操作/動作が含まれているため、たとえば、同様の方法で運営されている 3 つの航空会社がある場合など、問題のドメインが一意でない限り、宣言型言語でドメイン モデルを作成することは同様に不可能です。
理由に戻る...あなたは言った:
実際、仮想的な理由は、非コーダーが設定によって (些細な) バックエンドを作成できるようにするためです。
宣言型プログラミングは、命令型プログラミングより常に単純であるとは限りません。ほとんどの場合、人々は結果で考える傾向がありますが、結果が非常に多様であるため、段階的に考える方が (はるかに) 簡単な場合もあります。これが、これらの異なるスタイルが存在し、そもそも存在し続ける理由です。コーダーとノンコーダーの主な違いは、ノーコーダーがプロセスではなく結果の観点から考える傾向があるということではなく、ノンコーダーは単にコンピューターの動作に煩わされたくないということです。非コーダーは問題に集中したいと考えています。ドメインによっては、非コーダーは、宣言型 DSL ではなく、命令型 DSL を使用するのが最適な場合があります。