コードジェネレータ用の特選言語は?
2008.07.16
さて、仕事からのネタです。Java ってマクロがないですから、
「定義」をするために、複数の関連しあうシンボルを定義し、データをとして作り上げるコードが、ムチャクチャたくさん必要だけど、作業自体は機械的で1回やればいいだけ...
な場合、「何かコードジェネレータ(「達人プログラマ」で言う「消極的コードジェネレータ」です)にそういう仕事はさせたい」と思いませんか?しかし、Java で開発しているケースでは、適当なスクリプト言語インタプリタがありません...から、
- 1. Java で使い捨てプログラムを書く
- 2. Emacs とかエディタのマクロ機能を使い倒す
- 3. 何かスクリプト言語インタプリタを導入する(Perl でも PHP でも Python でも Ruby でもお好きなものを...)
というあたりの解決が多いのかなぁ...とも思います。しかし、
Windows 環境だって Cygwin とか使ってるジャン!
というプログラマの現実から見るとき、第4の解決策として
- 4. bash で書く!
というのがあるのです。実はコレ私は最大の特選言語なんですね! パワフルで柔軟、しかも「特に何もしなくてもソコにある!」というメリット付きです。
まあ勿論、「コマンドラインの延長線上としての、シェルスクリプト」の知識では、これはできません。ちゃんと、「スクリプト言語として、bash を使い倒す」という勉強をしなくてはなりませんが、しかし一度身につければ、極めて強力なツールです。たとえば、適当なファイルから、1行の中に空白で区切られた2つの文字列を取得し、行数分だけループする...というありふれた処理は、
while read var1 var2
do
echo "$var1 -- $var2"
done < ./myfile.txt
という風に書けてしまいます...ポイントは勿論、done(というかwhileブロック)に対してリダイレクトが書ける、ということと、組み込み命令のread が、その行を分解してシェル変数 var1, var2 にセットしてくれる、ということですよね!
ですから、
...といったあたりの処理を組み合わせれば、コードジェネレータくらいのことならばお手軽に出来てしまうのです! わざわざ「コードジェネレータのために Perl を入れる」とかしなくて済むのです。どうです?勉強する価値がこれありますよ!
ちなみに「スクリプト言語としてのシェル」を勉強すると、自動的にコマンドラインにも強くなります....そっちも極めてイイことですよねぇ...
投稿者 : 杉浦 こずえ | 投稿日時 : 2008.07.16 10:06
あすなろBLOGのトラックバック・コメントは承認制になっています。
すぐにブログに反映されませんので、ご了承ください。





