問題タブ [declarative]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
xml - xsltのエレガントな例?
XAMLを介した長い学習ループの後、HTMLとjavascriptに戻り、宣言型コードの概念(変換のルールの観点から)が非常に強力な概念であることに気付きました。
構文が豊富であるにもかかわらず、XMLのXSLT処理は宣言型変換プログラミングの要です。ただし、XSLTが日常のタスク(XMLを使用)にどのように使用されるかを理解するのは常に困難です。
HTMLを生成する以外に、プログラミングの問題をエレガントに解決するXSLTの良い例は何ですか?
グラフ変換やデータ再処理が得意だと思います...
編集:私はいくつかの実際の例を望んでいます-完全なxsltを思いとどまらせるものの1つは、コードの視覚的な複雑さです。
java - Java の可変モデルの宣言的な派生プロパティ
POJO のプロパティを同期するためのフレームワークはありますか? たとえば、反復的でエラーが発生しやすい値と (特に) コレクションで、プロパティの変更、要素の追加、およびリスナーの削除を登録する必要がないことをfoo.text = bar.text + baz.text
(高レベルの宣言形式で) 表現したいと考えています。foo.y = (max(bars, y)).y
programming-languages - 宣言型プログラミング言語を理解するためのヒントは?
質問
述べたように、宣言型プログラミング言語を理解/理解/理解するのに役立つヒントはありますか?
それとも、言語とその構文に没頭しなければならないという単純なケースですか? 何日も部屋に閉じこもって、主題に関するさまざまな本を 6 冊も読んでいるわけにはいかないので、これは実際には選択肢ではありません (責任はそれらが何であるかであり、すべてです)。
では、宣言型言語に取り組むときに役立ったヒントやコツ、伝えるべき洞察はありますか?
PS 私は個人的に「<em>黙って仕事に取り掛かる」という最初の回答に賛成票を投じます。
バックグラウンド
私が最初に wring コードを始めたのは 13 歳のときです (基本、姉妹のOric-1 で)。
それ以来、私は多くの新しい概念と多くの異なる言語に取り組んできました。オブジェクト指向?気にしないでください。イベント駆動パラダイム?キッパーを吸って、朝食に戻ります。
フクロウ、Mfc、ActiveX、Vb3、4、5 & 6、VB.Net、パスカル、デルファイ、C、C++ & C#。少なくとも長い間、私の邪魔をした人はいません。
しかし、最近、私の満点は少し打撃を受けました。
数週間前、私は Xaml に身を投じました。皆さん、私は水泳よりも沈み込んでいます。
私の主な問題は、それが宣言的であることだと思います。私の他のプログラミングスキルはすべて手続き型です。私は MSBuild でこのブロックにぶつかったことがあります。
Xaml に戻ると、現在、トリガーをプロパティに配線して、必要な効果を得ようとして気が狂っています。
特定の Xaml に関する質問をすぐにここに投稿するかもしれません。今のところ、私はこの一般的な「宣言型プログラミング」の質問をしています。
PS いいえ、私は実際にはそれほど生意気ではありません。はい、初めて OO を実行したときと、初めてイベント ドリブン UI (Windows 3.11 の VB3) を作成したとき、私は地獄のようにつまずきました。
編集
それは沈み始めています、この分野で私をここまで導いた粘り強さが報われています。ただ、フラッキングに時間がかかります!
. . . 私はこのようなものには年を取りすぎていると思います。. . :)
php - PHP の汎用宣言型式ビルダー
皆さん、
私は、多くのアプリケーションに共通していると確信しているPHP5 UIの一部を構築しようとしています。基本的に、これはユーザーが次のように論理演算子 (AND/OR) を介して結合された式を指定できるようにする式ビルダーです。
- FieldX > 3 AND FieldY = 5
- FieldY = "bob" かつ FieldZ が null ではない
- FieldX > '5/23/2007' OR (FieldY = 5 AND FieldY が null でない)
理想的には、このようなシステムにより、プログラマーとして、ユーザーが選択できるパラメーター (列) のリストとそれぞれのデータ型を指定できるようになります。また、そのような式を定義するための使いやすいインターフェイスを提供します。各行に複数のピッカーがあるテーブルのようなものを想像しています。
[列] [条件] [値] [AND/OR] [列] [条件] [値] [AND/OR] ...
そのようなことをするオープンソースのコンポーネントを知っていますか? それとも、この種の機能の一部ですか?
java - OSGI宣言型サービス(DS):サービスコンポーネントインスタンスを使用する良い方法は何ですか
EquinoxとEclipsePDEを使用してOSGIと宣言型サービス(DS)を使い始めたところです。
AとBの2つのバンドルがあります。バンドルAは、バンドルBによって消費されるコンポーネントを公開します。どちらのバンドルも、このサービスをOSGIサービスレジストリに再度公開します。
これまでのところすべてが正常に機能しており、Equinoxはコンポーネントを相互にワイヤリングしています。つまり、バンドルAとバンドルBは(デフォルトのコンストラクタを呼び出すことによって)Equinoxによってインスタンス化され、バインド/アンバインドメソッドを使用してワイヤリングが行われます。
さて、Equinoxがそれらのコンポーネント/サービスのインスタンスを作成しているので、このインスタンスを取得するための最良の方法を知りたいですか?
したがって、OSGIによってインスタンス化されないサードクラスのクラスがあると仮定します。
現在、次のオプションが表示されています。
1. ActivatorでServiceTrackerを使用してComponentBundleA.class.getName()のサービスを取得し(すでに試しましたが、機能しますが、かなりのオーバーヘッドがあるようです)、静的ファクトリメソッドを介して利用できるようにします。
2. activate()メソッドが呼び出されるとすぐに各コンポーネントが登録される、ある種のレジストリを作成します。
また
}
3.それらのインスタンスを持つosgi/equinox内の既存のレジストリを使用しますか?つまり、OSGIはすでにインスタンスを作成し、それらを相互に接続しているので、オブジェクトはすでにどこかにあります。しかしここで?どうすれば入手できますか?
結論 クラスWantsToUseComponentB(これはコンポーネントではなく、OSGIによってインスタンス化されません)はどこからComponentBのインスタンスを取得しますか?パターンやベストプラクティスはありますか?先ほど言ったように、ActivatorでServiceTrackerを使用することができましたが、それがなくても可能だと思いました。
私が探しているのは、実際にはSpringframeworkのBeanContainerのようなもので、Container.getBean(ComponentA.BEAN_NAME)のようなものを言うことができます。しかし、私はSpringDSを使いたくありません。
それが十分に明確だったことを願っています。それ以外の場合は、ソースコードを投稿して詳細を説明することもできます。
ありがとうクリストフ
更新: ニールのコメントへの回答:
元のバージョンに対してこの質問を明確にしていただきありがとうございますが、DSなどを使用して3番目のクラスを作成できない理由を説明する必要があると思います。
うーん、わかりません。方法はあるかもしれませんが、フレームワーク全体をリファクタリングしてDSに基づくようにし、「new MyThirdClass(arg1、arg2)」ステートメントがなくなるようにする必要があります。その方法はよくわかりませんが、DSのComponentFactoriesについて何か読んでいます。だから、する代わりに
私はするかもしれません
これを書いている時点では、ComponentFactoriesの使用方法は正確にはわかりませんが、これはある種の擬似コードであると思われます:)
ありがとうクリストフ
wcf - WF、WCF、および宣言型サービス (または、Microsoft の「宣言型」とはどういう意味ですか?)
私がこのコミュニティ Wiki を作成したのは、議論の余地があると考える人もいれば、言葉を実際に意味するものを使用する問題だと考える人もいるからです (つまり、意見の問題であるかどうかは意見の問題です)。
宣言型プログラミングに関する SO に関する一般的な質問があり、いくつかの優れた回答があります。
しかし、Microsoft のエバンジェリストからのこのブログ投稿には少し衝撃を受けました。
宣言型プログラミングの利点の 1 つは、何をしたいのかを示すことはできますが、その方法を示すことはできないことです。
これまでのところ、とても良いです-実際、SOの質問に対する受け入れられた回答と正確に一致しています。
しかし、「サービスの実装」に関する部分を確認してください。
数十行の xaml コードを見るだけで、WCF サービスがどのように構成され、対応するワークフローがどのように定義されているかを判断できます。
いくつかの例を見て、「いいえ、できません」と簡単に答えさせてください。しかし、このことを軽々しく却下するのではなく、 docs を見てみましょう。
しばらく時間がかかりましたが、ついに現実が風刺に追いつきました...しかし、それは重要ではありません. また、ばかばかしい冗長性や、そのようなものを誰もが手で書くという奇妙な考えについて不平を言っているわけでもありません。人間が読める言語というよりも、コンパイラの出力のように見えます。
私にとっての謎は、これが「宣言的」であると主張されていることです。それでも、その核心は割り当てステートメントです。
宣言型サービスは、XAML で宣言的に定義され、抽象化の別のレイヤーを提供します。基本的に、サービスの実行方法ではなく、サービスに実行させたい内容を定義することによって、サービスのモデルを作成します。操作の実装を含め、サービス全体を宣言的に定義できます。
したがって、宣言的または宣言的に 3 回言うと、宣言的になります。ガチャ。そして、「どのように行うかではなく、何をしたいか」という魔法のフレーズを言うと、次の文で、結局「操作の実装」を指定することに注意することを怠ることができます。その方法を具体的に説明します。
そのページの例は次のとおりです。
つまり、全体 (WF の例から切り取った大量のがらくたを含む) は、次のものとまったく同じです。
つまり、ステートメントのブロックで、出現順に実行され、副作用があります。もちろん、ループ用のワークフロー アクティビティ要素があります (WF にお気に入りの命令ステートメントがまだない場合は、独自のアクティビティを作成できます)。どうやら、「コードを読めない形式に書き直す」ことは、「抽象化のレイヤーを追加する」ことと同じことです。
繰り返しますが、私が不満を言っているのは非常識で読みにくい冗長性ではありません。サービスの実装で明らかにチューリング完全な命令型プログラミングが行われているという事実です。気が付く前に、デバッガーでワークフローをステップ実行し、どの代入ステートメントがどの値を変更したか、またはループが永遠に続く理由を解明しようとします。
(皮肉なことに、C# バージョンでは、文字列の断片を連結する方法を指定していないため、もう少し宣言的であり、コンパイラがConcat
メソッドの呼び出しを少なくすることができます。)
では、XML で何かを記述すると、それは宣言的になります (可読性が低下するだけでなく) でしょうか?
excel - Excel の財務モデルでビジネス ルールを表すにはどうすればよいですか?
Excel で「1 期間」の財務モデルを作成しています。つまり、数式が各列で一貫しているモデルであるため、必要に応じてコピー/貼り付け/拡張できます。
モデルの仮定を別のシートに分割しています。たとえば、という名前のセルがmonthly_sales
あります。これは、私が毎月追加する新規顧客の数です。数式は次のようになります。
前提シート 1.0
予測シート 1.0
したがって、8 月には 6 人の顧客がいます。9 月には 12 人の顧客。10月は18名。ここまでは順調ですね。しかし、私の最初の顧客は、より多くの開発リソースを必要としますよね? もう少し制限を加えた方がいいです。
前提シート 2.0
英語: 最初の 3 人の顧客は、それぞれ 2 か月の開発期間がかかります。8 月から 11 月まで、1 人の顧客がいます。12 月に 2 番目の顧客を追加し、4 月に 3 番目の顧客を追加します。2010 年 8 月までに、私は を通過しearly_customers
、その後は月に 6 人ずつ成長し始めることができます。
VBA でこれを行う方法を知っています。前の月をチェックするユーザー定義関数を作成し、# Customers
数式を次のように変更できます。
しかし、この概念を適切な Excel 式で宣言的に表現する方法があると思います。ある?
c++ - C ++での宣言的誤謬を説明する最良の方法は?
次のコードが正しくない理由について、作成者が手続き的にではなく宣言的に C++ コードを書こうとしているという理由について、どうすれば適切な説明を作成できるでしょうか?
著者cout
は適切な計算を表示することを期待していましたが、代わりに「狂った数」を取得しました。
これについては、「C++ は手続き型であるため、宣言の時点で
newtons
値が割り当てられていません。
より良い提案はありますか?あるいは、C++ が、ユーザーが誤って期待した動作を実行するほど「スマート」ではない理由を説明しますか?
python - 宣言型SQLAlchemyのタグの辞書?
を使用して実装された非常に大きなコードベースに取り組んでおりsqlalchemy.ext.declarative
、クラスの1つにdictのようなプロパティを追加する必要があります。私が必要としているのはこの質問と同じですが、宣言型です。SQLAlchemyの知識が豊富な人に例を教えてもらえますか?前もって感謝します...