他言語の書き方に学ぶ

元ネタは竹迫さんの記事です。

確かに昔、ダラダラと PerlCGI を書いていましたが、最近は凄いですね。
Python もそうですが、テストケースを書くとか、手順を Makefile でまとめるようなことは見習いたいものです。

CGIといえばPerl。そんな風にいわれていた時期もありました。

Part1 正しいPerl/CGIの書き方 | 日経 xTECH(クロステック)

何故 awk じゃなかったのでしょうか?
既に何度も書いている内容ですが、awk で書かれたものはほとんど見かけることがありません。それには何か理由があるからです。

  • jcode.pl (jcode.pm, encode.pm) のようなものがなかった
    • 特に Web からの入力を受け取り、処理する場合に文字コード変換が必要ですが、この機能が awk には存在していませんでした。(今も存在していません)
  • flock() のようなものがなかった
    • 当時は flock() により同時アクセスでのコンフリクトを避けたりしていましたが、この機能が awk には存在していませんでした。(今も存在していません)

当時のインターネット黎明期の PC やサーバーは Perl を動作させることすら重いようなマシンでしたから、必要な機能さえあれば awk でも多くの CGI を作ることができたでしょう。
さらに、これらの機能は awk 単独では難しくても、他のコマンドと合わせることで解決することはできそうです。もともと awk は全ての機能を単独で網羅するものではなく、他のコマンドとの組み合わせで構成するものでした。

最近は、awkiawki - A Tiny And Fast WikiWiki-Clone Written In (n|g|m)awkのように Wiki だって awk で作れてしまいますが、こうした書き方というか、作法は未だに固まっていないのは残念です。

さて、昔話はこのくらいにして、やはりテストが簡単に記述でき、それを実行できるということは素晴らしいと感じているわけですが、なかなか難しいものです。こうしたことは Perl だからとか Python だからというわけではなく、どんな言語にでも通用することだと思います。