背景
現在のチームのリーダーさんに、
「コードジェネレーター作るの良いですよ! 震え上がります」
と指導を受けまして、実際にGoで作ったコードジェネレーターのコードを拝見させて頂いたりして、
「メタプログラミング(コードジェネレーターもメタプログラミングの一つと思って)、すごく便利そうだなあ」
と思った次第です。
質問
しかしながら、メタプログラミングについてサーチエンジンで自分が調べた限りだと、やはり思っていたより簡単では無く、
むしろ どういった状況 で どういった考え(設計) に至ると、メタプログラミングのテクニックを使う場面に出くわすだろうと、
頭の中でイメージしているばかりで、なかなか実装する機会を見つけられずにいます。
現状の自分の理解
HTTPリクエストでDBからデータを取り出し、それをJSONやXMLで返すAPIの設計や、
APIから返ってきたJSONデータやXMLを元にHTMLで整形したデータを表示する(これはテンプレートエンジンになると思いますが)。
といったところで、
「コードを書くのがかったるいなあ……」
というときにメタプログラミングのテクニックを使って、コードを自動生成するものだと思っています。
しかし、自分の見てきた資料を眺めてみると、
- 動的に移譲を実装する
- プログラム実行中にメソッドや関数をクラスに追加する
などと書かれていて、
「そこまで高度な事をする必要があるのだろうか。あるとしたらどういった事例の時だろうか」
と、メタプログラミングに対してとてつもなく高度な印象を抱いています。
実際に高度なスキルとは思いますが、やはりちょっとSchemeやNimやPythonなど、メタプログラミングをサポートしている言語を触った程度で、
メタプログラミングを実際にしていなければ身につくようにはならないスキルなのでしょうか。
漠然とした質問で申し訳ありませんが、
「メタプログラミングはこういうときに使えるぜ!」
とか、
「いや、メタプログラミングそこまで難しく考えなくていいし」
など、むしろ、
「専門学校卒業程度で、ちょっと色んな言語のコードが読み書きできるだけの人間ができるわけねえだろ、大学行ってコンピューターサイエンス学んでから出直してこい」
や、
「メタプログラミングとコードジェネレーターは全く違う」
といった厳しいご意見でも構いませんので、
「どういった状況 で どういった考え(設計) に至ると、メタプログラミングのテクニックを使う場面に出くわすか」
「メタプログラミングに取り組む際に必要な考え方・メタプログラムの設計手法」
などを、ご指導いただけると幸いです。
参考資料
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 08:16