TOP > プログラマ2.0日報 > 2009年01月30日

あすなろBlogger

facebookに投稿 このエントリーを含むはてなブックマーク このエントリーを含むはてなブックマーク このエントリーをはてなブックマークに追加 この記事をクリップ! livedoorclip ユーザー数 BuzzurlにブックマークBuzzurlにブックマーク この記事をtweetする

ドメイン固有言語を活用したら?

2009.01.30

Windows だって、要するに cygwin とか擬似UNIX環境で仕事をするわけですから、 (g)awk って確実に存在しています(勿論 UNIXは言うに及ばずね)。で今回、

csv で出力されたデータのチェック

をしなければならないことになりました。2つの csv 出力が対応しているかどうか...のチェックです。勿論、

一方が他方に対して、その(複数フィールド・複数列の)合計とか

自明でない関係を持っていますから、それをチェックしないといけません。

以前、

コードジェネレータに bash を使うと、バッチリ使える

という話を書いたことがありますが、さすがにこっちは

フィールドで分解し、数値を扱う

ものなので、bash では力不足です。で...ですが、勿論 perl を入れて、Perl でチェックスクリプトを書くというのでもイイのですが、

そういう用途の「」として、ちゃんと があるじゃん。

ということを強調したいな...と思います。だって、

適当なセパレータ(この場合はcsvですからカンマ)でフィールドを切り分けて、それぞれの列で合算したり、行ごとに集計したり、切り上げ・切捨て・四捨五入...とか倍率を掛けたり割ったり....

という仕事のまさにそのために、昔から awk がUNIXには付いてきていたわけです。これ栄えあるベル研開発スクリプト言語ですしね(苦笑)。

A は Alfred Aho の「A」
Wは Peter Weinberger (今Googleに居るそうです)の「W」
Kは Brian Kernighan の「K」

と、歴史....に思いを馳せるのもいいのでは?

実際入力をフィールドにバラして、合計したり...という仕事をさせるスクリプトは、AWK だと極めて簡潔です。

awk は汎用的なツールであって、汎用的な言語ではない

というあたりが一番のポイントではないか、と思います。あ、勿論 AWK は形式的な定義としてはチューリング完全な言語であることは承知の上ですが、

これだけCSVファイルのチェックのような特定分野で使いやすいのは、そりゃ特定用途に特化した「ドメイン固有言語」なんだからでね!

というあたりを強調したいわけです。ハッカーとそれ以外のプログラマの最大の差....って何かというと、私が一番しっくりする違いは、

新しい言語を憶えるコストが極めて低く、心理的な障壁がほとんどないのがハッカー

という違いを感じます。要するに「プログラミング言語上のマルチリンガル」であること、に馬鹿にならない大きなメリットがあるのです。つまり、「使っている言語を相対化して捉えることができるかどうか?」という能力なのではないのでしょうか。AWK には AWK の「良さ」があり、その「良さ」が最大に発揮できるタスクならば、ぜひとも awk を使おうよ...と、思いませんか?フツーにそこにあるんですしね!

投稿者 : 杉浦 こずえ | 投稿日時 : 2009.01.30 14:52

カレンダー

<< 2009年01月 >>

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最新のエントリー

最新のトラックバック

最新のコメント

Tag

バックナンバー