何が宣言。[定休日]
-
02-07-2019 - |
質問
いつ聞この期間を振り回数の異なるコンテキストを共有します。何ですか?
解決
宣言的プログラミングを書くときに押さえておくべきコードで記述したいことを、どのようにしたいです。では、コンパイラに。
例宣言的プログラミング言語にはSQLとProlog.
他のヒント
その他の答えてい素晴らしい仕事を説明するかの宣言的プログラミングはなのだけを提供する事例はなぜでも役にたつかもしれません。
文脈の独立性
宣言的プログラム コンテキストを独立.だけを宣言するのか、究極の目標は、どのようになり仲介手順で目標を達成するためには、同プログラムで使用できるというものです.このはん なプログラム, なものが多いので、コンテキスト(例えば隠します。
取 yacc
を例にしています。このパーサに発生装置"ハーブの女王"。コンパイラのコンパイラでは、外部コDSLを記述するための文法、語学、パーサによる言語から自動生成されます。ではそのコンテキストの自立ができないと大変でしたが、様々なことをそのような文法:
- を生成するCパーサによる文法の使用例
yacc
) - を生成するC++のパーサによる文法
- を生成するJavaのパーサによる文法(ジェイ)
- を生成するC#パーサによる文法を使用GPPG)
- を生成するRubyのパーサによる文法を使用Racc)
- を生成するツリーの可視化と文法を使用GraphViz)
- だから印刷までのブランド-フォーマットと構文強調表示のyaccのソースファイルそのものなどでリファレンスマニュアルとしての統語仕様の言語
多くり---
最適化
などを規定するためにコンピュータを手段、どういう順序で並べ替えることができプログラムがより自由に、その国でも実行の一部業務を行なった。れることができなければ、クエリプランナーおよびクエリ-オプティマイザのためのSQLデータベースです。最SQLデータベースを再現するクエリをその 実際に 実施前クエリをそのま 問 しを実行することを示しています。多くの方の質問を見る なし います。クエリのプランナーかも考慮できないものが夢:回転待ち時間のディスクの盛り合わせ、またはその一部を完全に別のアプリケーションのための全く異なるユーザで実行され同様のクエリを表すと共にまで多大な努力を重ねてきたな負荷が既にメモリ。
いう興味深いトレードオフはこちら機械はもっと努力して頑張を どのよう いように必要とされる言語で は 図では、より自由な情報の最適化。
緩やかに:
宣言的プロが向:-
- セットの宣言、または宣言ステートメントにはそれぞれの意味でも、問題のドメイン)と理解される場独立しです。
が不可欠グが向:-
- 配列のコマンドの実行がアクションの実行;ものでは意味を持つものについての問題領域です。
その結果、必要とされるスタイルの原理を理解するかは、実際にシステムをやってもう少しの問題である。一方、コスタイルの問題を理解するドメインのアプローチのシステムに向けての解決の問題では参考になります。
実際のプログラムでも記述言語るのは、スペクトルなどのProLog C)がスタイルを現在は、さまざまな様々なを満足できるの異なる複雑な通信のニーズはます。一つはなされておりませんが、他;もっと異なる目的で、多くの生命、節度が鍵となります。
誠に申し訳ございませんが、それには反対ですが他の多くの応答となります。うに歯止めて欲しの誤解の定義を宣言的プログラミング
定義
参考透明度(RT)のインターンシップに表現するの のみ必要 属性の宣言的プロの表現, ですので唯一の属性を共有していないが不可欠です。
その他の引用の属性の宣言的プログラミングからこの部分。をクリックしてくださいハイパーリンクの詳細な説明をします。
表計算例
"と"どちらかと言えば、上記表計算プログラミングの場合、スプレッドシートプログラミング(a.k.a.公式なアクセス可変 グローバル の状態で、その宣言的プログラミングこれは変更可能なセル値の範 入力 や 出力 の main()
(全体のプログラム)の新しい値を書いていない細胞への後に数式を実行すると、このような変更可能な生活するために、宣言的プログラム(執行のすべての数式の表計算シート).このように相互の関数これらの変更可能な細胞において、不変です。るRT機能のアクセス可能 不変なので グローバル状態も 変更可能な 地 状態).
このようにする機能を変化させ、価値観の細胞がプログラムが終了して出力から main()
いないため、それを変更可能な保存価値のコンテキスト。キーを区別する細胞の値がない場合には最後の手段として、各表計算式が行われ、その行の数式は問いません。細胞の値は最後の手段として、すべての宣言型式を実施しています。
こちらは一例です。
CSS(スタイルのHTMLページ)したい場合に、画像を生成する100ピクセル、高さ100ピクセル幅のは、単に"宣言"することになるだいたいと
#myImageId {
height: 100px;
width: 100px;
}
ることにCSSをコ"スタイルシート言語です。
ブラウザのエンジンを読み込み、 解釈 このCSSが無料の画像を表示することこの広いかについてお聞きしましょう。異なるブラウザエンジン(例えば、エンジンの家、エンジン用クローム)を実施すこのタスクとは異なります。
独自の実装は、もちろんないで書かれた宣言ですが、手続き上のように組み立て、C、C++、Java、JavaScript、またはエラーになります。このコードは、バンチの手順で実施される段階(とか機能します。ないように差し込むピクセル値は、描画を画面に表示します。
宣言的プログラミングの写真が必要とプログラミングを指示した塗装です。
いプラグコスタイルだ"ん"ですが、より記述する手順をコンピュータは取得したい場所です。
ご利用の際はXMLマークアップされたデータだけを使用宣言的プロでなんて言って"この人は、誕生日以上あり。
一部の例が宣言とが不可欠グを組み合わせにより効果:
Windows explorerに見られるものと同等の使用の宣言型をXML構文の記述などのユーザインタフェースのように見え、何の関係(バインディング)は管理配下のデータ構造です。
構成設定ファイルを使用宣言書式(プ"のキー名=値"のペア)をこの文字列または値のデータです。
HTMLマークアットタグの記述はどう役立つのか、それぞれのテキストに関する全書類です。
想像してみてくださいexcelページです。列デ関数を計算す税金を返します。
すべての論理行に宣言された細胞の順序を計算による定式点から詳しくかつ分かりやすくprocedurally.
このソートの宣言的プログラミングす。きたことを宣言の問題のソリューションの流れのプログラム。
Prologを宣言います。が必要とされる異なる種類の思考ができたことを嬉しく思いを学ぶだけをなすもの以外の代表的な手続きプログラミング言語.
私が書いた私の前に回答していを策定し 新しい定義 の宣言型性の種類を表すマークも表示されます。また定義とプログラミングデュアル物件です。
この定義の優位性を提供した私の前に答えで簡潔であります。ものでありする可能性があると思いますが、grokので、意識の不完全性定理を適用プログラミングおよび生活全般が難しい人間を包む心に持っています。
その説明の定義についての役割 純 プログラミング演劇の宣言的プログラミング
コvsが不可欠
の宣言的財産も鈍ることが困難で捉え、技術的に正確な定義は一般的な曖昧となっておりますので素朴概念として宣言すること意味します。a.k.aはセマンティクスのプログラム招くことなく意図しない副作用がある。コレクションの多様さとの関係が緊張表現の意味を回避の意図せざる影響を、この張力を実から派生する 不完全性定理 プログラミングおよび当社の宇宙。
でoversimplification技術的に不正確であり、しばしば曖昧な定義を宣言的として “何” とが不可欠として “どのような”.曖昧な場合は、"何"は、"どのよう"プログラムを出力するプログラムをコンパイラです。
確かに、 無限の再帰を語チューリング完了, も斑点の意味だけでなく、ローカルの文法構造の評価(a.k.a.業務の意味論).これは論理的に例に似たゲーデルの定理"他のシステムの公理などと整合的でない".考えのような矛盾の凄味の引!ここでは例としてどのように表現の意味がない証、製本されることができないことを証明2 このプログラム(およびその斑点はセマンティクスを停止。k.a.の停止です.
不完全性定理を導の基本的な自然と宇宙ので、記載の熱力学の第二法則は"エントロピー (a.k.a.の独立の可能性) がでおすすめの最大永遠に".の符号化とデザインのプログラムは完成です!— かみアドレスは、現実世界との意味は現実世界は常に変化する、おすすめのより可能です。人間の問い合わせください新しいものを含む正プログラム;-).
正確には、技術的にはこれを上記の希望という概念はこの奇妙な宇宙とエッジ(よく考えてみましょう。ありません"外"の我々の宇宙が必要である、エッセイは英語で書が一見ない-簡単に定義する音の誤りで説明することができるから。
定義:
の宣言的財産ができる存在することを可能との結する表現できるのでそれぞれの特定のモジュールの意味.
が必要にな物件3 のデュアルでは、意味が整の下での構成および/または表現でき変化の記述です。
この定義の宣言型性 地 に意味の範囲ることを意味するモジュールの意味を維持、一貫性のある意味を問わずどのようなこのインスタンスを生成と採用 グローバル ます。それぞれの宣言型モジュールの意味は本質的に直交して他ではなく、なによる不完全性定理) グローバル アルゴリズムやモデルの立ち会いの一貫性もあるポイント"より常により良い"ロバート-ハーパー-教授コンピュータ科学学部カーネギーメロン大学のデザイナーの標準ML.
例これらのモジュール宣言的意味論などのカテゴリー論functors例 の
Applicative
, 公称キングの名前空間という分野である。r.t.業務レベルの意味その純粋な機能的プログラミングこのようにも設計宣言語で をより明確に表現の意味, ばらつきを伴いながらも、損失を一般に表現できることはなかなかお目にかかれない"ゲインで表現できることと固有の一貫性を追求します。
例上記の定義は式は、細胞のスプレッドシートプログラムは予定されているので、このように意味が異なるカラム列細胞、すなわち細胞識別子を変更します。細胞の識別子の一部でない余計なに意味があります。それぞれ表計算結果は独自のw.r.t.細胞識別子に一定の式に代入します。の一貫したモジュールの意味的にこの場合の利用細胞の識別子としての入出力 純 機能細胞の式(下記を参照)。
Hyper Text Markup Language。k.a.HTMLの言語のための静的なwebページの例には高いが完璧ではありません3)宣言ること(少なくとも前HTML5)た能力表現の動的な行為です。HTMLはおそらく最も簡単な言語を学ぶことができます。のための動的挙動の転換を進めることが喫緊のスクリプト言語をJavaScriptなどのが通常であったと合わせます。HTMLなくJavaScriptの宣言型を定義で公称型(のタグを維持しており、一貫性のある意味下での構成のルールの構文です。
競合の定義のための宣言型を 可換環 や 例外: 性の意味諸表、すなわちその結できる注文と重複しない変化の意味があります。例えば、算定値の名前の分野で注文と重複しな意味を変え、プログラムの場合はその名前がモジュール化されておりました。r.t.への示唆する。名前あなため、例えば細胞識別子を含むそのカラム及び列の位置—移動の合計額が表計算シート変動ひとつひとつに意味があります。その他、これらの特性を暗黙のうちに必要と グローバル 一貫性の意味論。では一般的に不可能なデザインの意味論の諸表のように不整合ランダムに発注をお願い注文の複製は本質的には意味論。例えば、"Fooが存在する"(構造)および"Fooが存在しない"(破壊).に当てはめて考えれば、それはランダムに矛盾endemicalの目的意味論、そして一受け入れこの定義として一般に対して十分に宣言型物件です。本質的にはこの定義は真空として一般に定義かしながら存在していたという一貫性に直交する意味、すなわちに枠にとらわれず、常にこの宇宙の意味が動的に無限のときな撮像することに グローバル コヒーレンスパラダイム
必要に可換および例外:特性(構造評価順序の)低レベルの事業意味に変換業務の意味を宣言型 局在 モジュールの意味など 純 プログラミングを含む再帰の代わりに欠かせループ).その後の業務の実施の詳細な影響(広がる 世界的に 入り)の一貫性を高いレベルの意味論。例えば、注文の評価(理論ものの重複)、スプレッドシート関数は関係ありませんので、出力にコピーされませんの入力後まで全力して計算する類似の純粋な機能
C、Java、C++、C#、PHP、JavaScriptを使用したい宣言.Coputeの書式やPythonの文法に詳しdeclaratively 連結 目的の結果, (一貫した文法意味を除去するのに余計なので気軽にオーダーできる 理解コードの後は忘れたのです。Copute、ウを実施 決定の意味を促す"な繰り返し 自分自身"(ドライ)でのみ可能の純粋な機能的パラダイム
2 もできることを証明の意味でのプログラムの例の言語-コックは、この意味で表記している のタイピング, は、入力できな捕捉するためには、の意味でのプログラムでも、してはならないの言語にはないコンピュータの完全などHTML+CSS表現することができる矛盾の組み合わせることが未定義の意味論。
3 多くの説明は誤の主張のみが不可欠プログラムは構文上注記述です。明らかになったこ との間の混同が不可欠とプログラミング.例えば、HTML算が減ることはないとの整合性の意味があります。
編集:掲載の 以下のコメント ロバート-ハーパーブ
にプログラミング...の範囲の変動の可変タイプ
によってどのよう一つ別の機能からな プログラミング、および割り当に必要とされるプログラムもあ aタイプに行き、その変動。
非定義が曖昧であっ現在に感謝機能 プログラミングは機能として初のclassオブジェクトの種類と、b) 好再帰超えループ、及び/又はc)の純粋な機能を持つこれらの機能のない影響を与え、希望の意味を プログラムがmemoized(このように完全に純粋な機能的 グは存在しない汎用的なdenotational意味論 影響により運営意味論、などメモリ 配分).
のべ財産の純粋な機能と機能を呼びかけ その変数に置き換えることもできます、その価値は一般的に の場合の議論の必要とされる。純粋な機能 そうすると宣言型ました。r.t.のuncomposed状態遷移 入出力間の結果です。
その構成の純粋な機能はまったく持ちませんな 濃度トリートメントできるため、モデルサイドの効果(グローバル 状態)とプロセスを純粋な機能的プログラミング言語、 例えばウのIOMonadまで全く不可能で 防うな他のコンピュータの完全な純粋なプログラミング 言語です。
としてい 書 2012年も同様のコンセンサス コメント お近のブログ, この宣言的プログラミングは、 よく"という認識をもつことを意味してい 不透明である。例不透明な意味は依存し、 依存性消去の高レベルの意味は運用 意味の層(例えば かぶりしていない変換およびジェネリック医薬品reified 制限高レベルの意味)への依存の変数値 できませんの同意が必要となります。た正にプログラミング言語.
このようにしていまこのみチューリング完了できる言語 コ.
このように一つ一義と異なる属性の宣言 できることをその出力が可証に従うもenumerableセット 生成。例えば、特定のHTMLプログラム(無視 異方法について次のように通訳者の乖離、あるいは可能性としては脚本 (はなチューリングを完了し、その出力変動き enumerable.以上,ドキュメントを編集するには、プログラムは、純粋な機能 その変動。数理計算上の差異の処理、スプレッドシートプログラムは、純粋な機能の 入力変数です。
このように見える宣言語に対するアンチテーゼ 無限の再帰, (たゲーデルの第二不完全性 定理自己参照の定理できない証明します。
Lesie Lamport 書 おとぎ話かでユークリッドが 働いてたけど、ゲーデルの不完全性定理を応用数学の証明 のプログラミング言語のコンテキストへの合同と種類は、 ロジック(カリー-ハワードで対応します。
この方法でプログラミングの中心を記述する 何 いずれを説明するのではなく、あえて どのよう しないと反映されません。
その他の言葉ではなく、書きアルゴリズムの表現、すぐにレイアウトにどのようにしたいものです。二つの良い例はHTMLコンポーネントのラインナップ.
このWikipedia記事は概要: http://en.wikipedia.org/wiki/Declarative_programming
を記述するコンピューターにしたいものなど何もしないわけにはいかない。
私は洗練されたもの宣言的プログラミングが2011年に提供した 答え この質問です。ここに以下の現在の私の理解下さい。
ロングバージョンの理解の研究は詳細で このリンク, するこの読みを深く理解するの概要を提供します。
なプログラミングが変更可能な状態を保存および読み、その注文及び/又は複製のプログラムの指示を変更することが可能なの挙動(セマンティクスのプログラムも原因となるバグにつ意図されてきました。
最も素朴、極端な意味で(私は主張-立証された私の前で解答),宣言的プログラミング(DP)を避けて保管の変更可能な状態で、この順序は重複のプログラムの指示できる ない 変更の挙動(セマンティクスのプログラム。
しかし、そのような極端な定義はつながらないことを現実世界の中でのほぼすべてのプログラムを格納変更可能な状態です。の 表計算例 に適合してこの極限の定義DPでの全体プログラムコード実行完了につ静的コピーの入力状態の新しい状態が格納されています。その場合は状態を変更することができないことがある。最も現実世界のプログラムできないのに限るなど積層モデルの状態が変化します。
より有用な定義のディプロマプログラムは、注文及び/又は複製プログラミングの指示をしていないことを誓いの不透明な意味論。その他の言葉がない隠れたランダムに変化を意味る--変更プログラム指令および/または複製だけが目的の透明性の変化をプログラムの行動です。
次のステップにもつプログラミングモデルやパラダイムの補助DPものですが、実はそうではありません。
宣言的プログラミングはプログラミングによる宣言を、宣言文が書かれています。宣言文において多数の物件との区別な文が書かれています。特に、宣言:
- 可換環のとき、注文)
- 連想(再掲)
- べき等で繰り返し変わることなく意味)
- 単調に増加,(宣言な減算情報)
関連する点は、これらはすべての構造的特性に直交することはできない。宣言的ではない "何を対どのように".まdeclare(代表する制約) "どのように" だけ簡単にすることを宣言いたしまし "何を". 宣言は約なります。 宣言的プログラムへの影響が大きかという抽象的refactor社コードしmodularizeでsubprogramsわけではないことがわかった.多くのドメインモデルです。
くまから変換が不可欠に宣言型を追加。E.g.から左折します。(...待つので...)を右折するためのシステムである。"Bobを左折FooとBar11:01.Bob交差点を右折のバー Baz11:06." るということに注意してくださ後者の場合は文章もべと可換であるのに対し、元の場合には並べ替えたりを繰り返しの文章うという問題が生じる変化を意味します。
に関する 試, 宣言を追加でき 制約 を差し引 の可能性.が制約が追加情報は正確には、制約については、情報。する必要が生じた場合の時間変化する宣言では、典型的なモデルは、この明示的な時間的意味論など"から、ボールは横ばい""ボールをラットでの時間T"また相反する宣言をして矛盾したコシステムが解決されるの紹介 ソフト 制約(優先順位の確率など) 又はかかるparaconsistentトです。
宣言的プログラミング"のプログラミング言語に適合するメンタルモデルの開発者ではなく、業務モデルの機"です。
の違いを宣言とが不可欠では、プログラミング 絵の問題の解析で構造化データです。
必要とされるプログラムが相互利用再帰機能を消費の入力 出力データです。を宣言的プログラムが表現、文法を定義する の構造データその後の解析が続けられます。
の違いこれら二つの手法を宣言的プログラム 新しく作成した言語であり、新しいものを創り出す所にマッピングされ、メンタルモデルの 問題は、そのホスト言語です。
すっきりとしたインテリアですが奇数の時には、今後の追加優(又はその表計算ん)のリストに宣言型ます。良い例え こちらの.
いについての説明としてディプロマプログラムは解決をもたらすことがあ
- A 目標表現, の条件は何を検索します。はい、もしくは多いのでは?
- 一部の周知の事実のみを対象と
- ルールの知事実
...あり差し引エンジンは通常作業に 統合 アルゴリズムを探ります。
調査を実施しているのは、同じように、いった記述するプログラミングシステムのようにPrologでprologする(はずの)約を宣言するものを抽象的。
でますますリーですので、定義されたユーザーです。では明確であるべきであることがある湾岸との間で宣言的プログラミングウとしての宣言的プログラミングます。
カップルのその他の例は宣言的プログラミング:
- ASP.Net マークアップのためのdatabinding.って見積書や請求書を発行するsaas"に入れたグリッドをこのソース"としては、例えば、紅葉のシステムからうれしいです。
- Linqの表現
宣言的プログラミングもでき を簡素化しメンタルモデル*コード、可能性があるからであっきー.
例えば、い機能を持っているところは何かある各要素に配列または一覧です。伝統的なコードのようになります:
foreach (object item in MyList)
{
DoSomething(item);
}
なります。などをご利用の場合より-宣言型の構文で定義DoSomething()アクション?そのように言うことができるのでこの方法:
MyList.ForEach(DoSometing);
これは、もちろん、より簡潔でなければならない。っていらっしゃることだと思います。懸念だけ節約でき、ラインのコードだけではないことを知りました。性能です。古い方法、処理することになっています。※だきます。ForEach()メソッドが簡単に絞り込めます信号で取り扱うことができ処理を並行しまうのですか?今突然聞きコードマネジ付き非常に安全とみ変更につコンポーネントです。にあり、 延長 ます。純まとめて見ることができるすように設計してあります。
- 守っているリンクできる友人のです。全体のポストは長いが、スクロールすることができますの見出しとし "の問題"_andそれが問題ありません。*
による方法をご提出いただくに答えなさい。全体を見ることが出来までのプログラムについて特定のビューなどを見る角度の問題です。まだ始まったのプログラム:Dimバス、車、高さとしてIntegr
すでによって異なりの問題である。なければならなくなるかもしれの短縮によるプログラムです。武器agiは、dexで下がらないboxerぐの考慮が必要であれば、フィードバックではありません。お願い致します。