タグ

Programmingとメタプログラミングに関するpukumanのブックマーク (2)

  • メタプログラミングの基本とか - mirichiの日記

    Rubyはメタプログラミングができる言語だ。 高度なことをしようと思うと特異クラスなどの詳細を知る必要が出てくるが、そういうことをそれなりに知っている人でなければ、特異メソッドぐらいは理解できても特異クラスが出てきた時点でよくわからなくなってしまう。 よくある説明とは違う切り口で説明してみよう。 ちょっと長いが気にしない。 1. まず、Rubyでは先頭が大文字の識別子は定数である。 このルールで最もよく使われるのはクラスやモジュールの名前だろう。 これらは定数である。 class Hoge end p Object.const_get("Hoge").name # => "Hoge" p Object.const_get("Hoge").class # => Class Hogeという定数が定義され、そこにHogeクラスを表すClassオブジェクトが入っているわけだ。 つまり上記の定義は(

    メタプログラミングの基本とか - mirichiの日記
  • メタプログラミングの光と影 - ひがやすを技術ブログ

    メタプログラミングとはソースコードを生成するプログラミングのことです。メタプログラミングによって生成したソースコードは、eval関数で実行することができます。 メタプログラミングとは、ロジックを直接コーディングするのではなく、あるパターンをもったロジックを生成する高位ロジックによってプログラミングを行う方法、またその高位ロジックを定義する方法のこと。 メタプログラミング - Wikipedia だから、eval関数は、手段であり、メタプログラミングそのものではない。これは弾さんが指摘してますね。 evalだけがメタプログラミングの技法ではないし、またevalはその威力ゆえ最後の選択肢とすべきだ。 弾さんのパフォーマンスの指摘に対して、miyagawaさんが、「必ずしもevalが遅いとは限らない」と指摘してますね。 メタプログラミングとevalのベンチマーク - Bulknews::Subt

    メタプログラミングの光と影 - ひがやすを技術ブログ
  • 1