エイホ先生おめでとうございます、そしてプログラミング言語 AWK の巻

三寒四温とよく言ったものです. 先だっては初夏を思わせる陽気から一転、今日はときより小雪が舞う冬に逆戻り. これだから4月は油断ならないんですよ…

チューリング賞

「計算機科学のノーベル賞」ことチューリング賞がコンパイラの改良に多大な貢献したコンピューター科学者のジェフリー・ウルマン先生とアルフレッド・エイホ先生に贈られることが発表されました. おめでとうございます.

アルフレッド・エイホ先生

Alfred Vaino Aho , Aho と書いて エイホと読みます.

米国プリンストン大学を卒業後、ベル研究所の計算機科学研究センター勤務.
効率的な正規表現と文字列のパターンマッチングアルゴリズムを考案、egrep と fgrep を実装.

エイホ先生とウルマン先生が書いた「コンパイラ—原理・技法・ツール」というコンパイラ設計の教科書は表紙に紅いドラゴンが書かれて”the red dragon book” と呼ばれ、全世界で読まれてます.

プログラミング言語 AWK

私個人としてはエイホ先生といえばプログラミング言語 AWK です.

プログラミング言語 AWK は開発した アルフレッド・エイホ (Alfred Vaino Aho), ピーター・ワインバーガー (Peter Jay Weinberger), ブライアン・カーニハン (Brian Wilson Kernighan) の頭文字を取ったものです.

ブライアン・カーニハン先生はC言語の開発で有名ですね.

AWK はテキストの入力パターンに応じてアクションを実行するスクリプト言語です.

よく sed では手に負えないけど、CやC++で処理系を書くほどでもないときに使ったりします.

20年以上前に会社でこの本を買ってよく使ってたんですが、度重なるレイアウト変更で見当たらなくなったので、エイホ先生の名前を聞いて買いなおしました.

この本はすでに絶版となっており中古で手に入れたんですけど、再販されているようですね.

AWKの出会いは、CQ出版インターフェースに連載してた「いきあたりばっかり読書日記」に、著者の祐安重夫さんが自分の会社の帳簿をAWKで書いてる、というのを読んだのが始まりです.

それに誘発されてMS-DOS上で動く gawk で出勤簿を作って月次の残業時間を計算するスクリプトを書きました. 何しろ Windowsも Excel も無い時代でしたので…(笑)

便利な「一行野郎」たち

いわゆる「ワンライナー」ですが、技術専門書の史上最高のコピーです.

「一行野郎」

一行でもいろいろんなことができて

入力行の総数を出力

END { print NR }

10行目の入力行を出力

NR == 10

すべての入力行の最後の欄を出力

{ print $NF }

良く使うのが、複数の欄で構成される複数の行となるデータで、特定の欄だけ、例えば第二欄だけ出力する場合は

{ print $2 }

手軽にアルゴリズムの試作をするのに最適な言語です.
いまなら python が使われるのかな…と思いつつ

追伸

この本を知るきっかけは何だったかな? と過去の記憶をたどっていくと、その当時に読んでた月刊プログラマーズ・ページの連載記事 “プログラマの仕事場”に訳者の足立高徳さんが紹介されたのがきっかけでした.

ミワシステムコンサルティングはC++トランスレータ― MIWA C++ を開発されていたことで知られてました. 30年前にすでにC++を社内システムの開発言語としてC++をフル活用されてたそうで、C++で書いたコードを C のコードに翻訳するツールを作成、社内で利用していたのを外販されてたそうです. 当時は馴染みが無かったC++ですが、C++の優位性を30年前に見抜いてたのは素晴らしい.

この雑誌、技術的な内容だけじゃなくて著名なプログラマの仕事場紹介記事や、祐安重夫さん、小田嶋隆さんのコラムが連載されて読んでて楽しい雑誌でした.

残念ながらしばらくして廃刊、短命に終わった雑誌ですが、当時はまだこういうバラエティに富んだ技術雑誌が出せるだけの業界の余裕があったんだと思います.

古い技術雑誌は大量に本棚にありますので、それらの紹介はまた後日…