2011-11-19 6 views
5

私はディーノ・エスポジートとアンドレアサルタレロにより、Microsoft .Net: Architecting Applications for the Enterpriseからアーキテクチャについて次の段落を読む:あなたは、あなたには、いくつかの 他の層にいくつかの責任を委任されている 不可欠なアプローチではなく、コーディングに宣言的なアプローチを取るたび宣言型プログラミングと命令型プログラミングの違いは何ですか?

あなたが完全にコントロールしていない層です。だからあなたは です。最終的に中間のツールがあなたに理解してくれることを願っています 正しく道に沿って自分自身のトラブルに遭遇することはありません。 ソフトウェア開発では、サードパーティに委譲することで開発時間を短縮することができますが、ユーザはあなたが望むものを正確に得ることを保証する必要があります。

これは、Visual Studio 2008または 同様のウィザードベースの製品を信頼するべきではありません。ポイントはまったく別のものです。 大規模なシステムでは、いくつかのチームによって開発されている可能性があります。古典的な 宣言型プログラミングは機能しません。 プレゼンテーションには、何を表示するかを決定するコードのレイヤーが必要です。ここでは、 の設定を読み込み、それらを適用する方法を決定します。宣言的プログラミングはまだ ですが、エンジンとウィザードを書く場合にのみ有効です。

誰かが簡単に宣言的で命令的なプログラミングとは何かを説明することができますか?

+0

この[SOポストを参照してください[1] F#およびC#の のcompaison [1]:HTTP ://stackoverflow.com/questions/952318/what-are-the-benefits-of-using-c-sharp-vs-f-or-f-vs-c –

+0

@AshokPadmanabhan:これはほとんど適用されません。 C#とF#の関係、そして命令型プログラミングと関数型プログラミング(宣言型プログラミングのかなり特殊なサブセット)についてのみ部分的にしか説明していません。 – delnan

+0

ウィザードと宣言型プログラミングはどのように関連していますか? – CodesInChaos

答えて

2

宣言型プログラミング -

命令型プログラミングを行うべきである何 - 何をしたいがどのように行われるべきです。

宣言型プログラミングでは、開発者は何をすべきかを記述する必要があります。命令型プログラミングでは、開発者はコードの実行方法を段階的に定義する必要があります。

例:C#のLINQは宣言型です。

は、より多くのためにここで読む:http://www.informit.com/articles/article.aspx?p=1330154&seqNum=4

+1

LINQは単純な関数型プログラミングのIMOです。データバインディング、検証属性などは、私が宣言的と呼ぶものです。 – CodesInChaos

+0

@CodeInChaos - 関数型プログラミングと宣言型は互いに排他的ではありません。 LINQは宣言的です。あなたが望むものを言うからです。システムはxml、sqlなどから取得する方法を知っています。 – manojlds

7

宣言的 - 私はあなたがしたいことを説明します。あなたはそれを理解します(SQL、XSLT)。

必須 - 私は正確に何をするか、一度に1ステップ(C#、Java)を教えてくれます。

+1

SQLは宣言よりも機能的です。私はXSLTはxml構文の関数型プログラミングに過ぎないと確信しています。 – CodesInChaos

+0

@CodeInChaos - どちらも宣言型として記述されています。私はちょうどこれに同意する両方のためのウィキペディアのエントリを見てみました。 – Oded

7

例。

宣言型プログラミング:

<asp:DropDownList runat="server" DataSourceID="ObjectDataSource1" /> 
<asp:ObjectDataSource runat="server" ID="ObjectDataSource1" ItemUpdating="..." /> 

命令型プログラミング:

ObjectDataSource source = new ObjectDataSource(); 
source.ItemUpdating += ...; 

DropDownList list = new DropDownList(); 
list.ID = ""; 
list.DataSource = source; 
list.DataBind(); 
関連する問題