問題タブ [metaprogramming]
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.
python - メタプログラミングのための Python と Ruby
私は現在、主にDプログラマーであり、ツールボックスに別の言語を追加しようとしています。できれば、D のような静的にコンパイルされた言語では実行できないメタプログラミング ハックをサポートする言語を追加したいと考えています。
私は Lisp について少し読んだことがありますが、Lisp の奇妙な構文などを使わずに、Lisp が行ういくつかのクールなことを可能にする言語を見つけたいと思っています。私は言語の炎上戦争を始めたくありません。また、Ruby と Python の両方にトレードオフがあると確信しているので、私にとって何が重要かをリストします。Ruby、Python、または他の言語のどれが私に最適か教えてください。
重要:
- 優れたメタプログラミング。実行時にクラス、メソッド、関数などを作成する機能。できれば、コードとデータの区別を最小限に抑えた Lisp スタイル。
- 素晴らしく、クリーンで、健全な構文と、一貫性のある直感的なセマンティクス。基本的によく考え抜かれた、楽しく使える現代的な言語です。
- 複数のパラダイム。すべてのプロジェクト、またはプロジェクト内のすべての小さなサブ問題にさえ、1 つのパラダイムが適切というわけではありません。
- プログラミングについての考え方に実際に影響を与える興味深い言語です。
やや大事な:
- パフォーマンス。パフォーマンスがまともであればいいのですが、パフォーマンスが本当に優先される場合は、代わりに D を使用します。
- 十分に文書化されています。
重要ではありません:
- コミュニティの規模、ライブラリの可用性など。これらはいずれも言語自体の特性ではなく、すべて非常に急速に変化する可能性があります。
- ジョブの可用性。私はフルタイムのプロのプログラマーではありません。私は大学院生であり、プログラミングは私の研究に関連しています。
- 100 万のコード モンキーが取り組んだ非常に大規模なプロジェクトを念頭に置いて主に設計された機能。
ruby - Ruby のクラスにインスタンス変数を追加する
実行時に定義されたクラスにインスタンス変数を追加し、後でクラスの外部からその値を取得および設定するにはどうすればよいですか?
クラスを最初に定義したソース コードを変更する代わりに、実行時にクラス インスタンスを変更できるメタプログラミング ソリューションを探しています。解決策のいくつかは、クラス定義でインスタンス変数を宣言する方法を説明していますが、それは私が求めているものではありません。
ruby - Rubyの「for」とは
ルビーの場合:
以下と同じです:
for
はカーネルメソッドではありません:
for
ruby の" " とは正確には何ですか- 他のキーワードを使用して同様のことを行う方法はありますか?
何かのようなもの:
へのマッピング:
reflection - リフレクションとは何ですか?
私はASP.NETを初めて使用します。私はVB6/ASP(クラシック)/ SQLServer2000のバックグラウンドを持っています。私はVisualStudio2008についてたくさん読んでいます(インストールしていて、いじっています)。私は「リフレクション」について読んだので、誰かに、上記で書いたテクノロジーの年配の開発者に、リフレクションとは何か、なぜそれを使用するのかをできるだけ詳しく説明してもらいたい...その周りの私の頭。ありがとう!
ruby - Ruby: define_method と def の比較
プログラミングの演習として、クラスを作成し、そのクラスから 2 つのオブジェクトをインスタンス化し、1 つのオブジェクトにモンキーパッチを適用し、method_missing を使用してもう 1 つのオブジェクトにモンキーパッチを適用する Ruby スニペットを作成しました。
これが取引です。これは意図したとおりに機能します。
method_missing のパラメーターがあることに気付くでしょう。これを行ったのは、define_method を使用して不足しているメソッドを適切な名前で動的に作成することを望んでいたためです。しかし、うまくいきません。実際、define_method を静的な名前で使用しても、次のようになります。
次の結果で終了します。
エラー メッセージをより当惑させているのは、引数が 1 つしかないことですmethod_missing
。
ruby - Ruby メタプログラミングの質問
Ruby ロギング ライブラリの Logging.logger メソッドを調べていて、このコードに関連するgithub のソースから質問があります。
クラス << logger が eigen/meta/singleton クラスを logger オブジェクトに開き、インスタンス固有の close メソッドを追加することを理解しています。しかし、「class << self; undef :close; end」が何をし、何の目的で行われるのか正確にはわかりません。誰がそれが何を意味するのか教えてもらえますか?
javascript - JavaScript でマクロをシミュレートするにはどうすればよいですか?
JavaScript がマクロ (Lisp スタイルのもの) をサポートしていないことは知っていますが、マクロをシミュレートするための解決策があるかどうか疑問に思っていましたか? 私はそれをグーグルで検索し、ソリューションの1つが を使用することを提案しeval()
ましたが、彼が言ったように、かなり費用がかかります.
彼らは本当に空想的である必要はありません。私は彼らと簡単なことをしたいだけです。そして、デバッグを大幅に難しくするべきではありません:)
macros - Boo での演算子の定義
軽量メタプログラミングの一部を Nemerle から Boo に移行しようと考えており、カスタム オペレーターを定義する方法を見つけようとしています。たとえば、Nemerle では次のことができます。
次に、これら2つは同等です:
Boo でこれを行う方法が見つかりません。アイデアはありますか?
ruby - 現在実行中のメソッドの名前を取得します
$0
最上位のRubyプログラムの変数ですが、現在のメソッドの変数はありますか?
c++ - C ++メタテンプレートはプログラマーに必要な知識ですか?
私の経験では、メタテンプレートは本当に楽しく(コンパイラが準拠している場合)、パフォーマンスを向上させることができます。幸運なことに、メタテンプレートを作成する経験豊富なC ++プログラマーに囲まれていますが、新しい開発者が到着してできることもあります。彼が適切に開始されるまでの数週間、私たちが使用するいくつかのメタテンプレートトリック(主にAndrei Alenxandrescuのもの)の頭または尾を作ります。
それで、他のC++プログラマーの状況はどうなっているのだろうかと思っていました。メタテンプレートプログラミングは、C ++プログラマーが知っておく必要があるもの(もちろんエントリーレベルの学生を除く)である必要がありますか?
編集:私の質問は本番コードに関連しており、サンプルやプロトタイプはほとんどありません。