#019 私とプログラミング言語(後編)

1998/09/22

<前目次次>


 前回の続き。私とプログラミング言語とのかかわりの社会人編である。

 社会人になって、ワープロなど市販のアプリケーションを使うようになってからは、むしろテキスト処理のプログラムを作ることが多かった。それらはもちろんC言語でもいいのだが、私の技術ではいつ暴走するかわからないようなプログラムしか作れないので、むしろスクリプト系の言語を使うことが多くなった。

 スクリプト系の言語とは、コンパイル系の言語(あらかじめ機械語に翻訳しておくプログラミング言語)と違い、実行時に(台本を読むように)解釈されて実行されるタイプのプログラミング言語のことである。具体的には、UNIX上で作られ使われてきたsed, AWK, Perlなどの言語である。

 sedとはstream editorの略で、簡単な記述によりテキストの選択や置換などを簡便に行うことができる。欠点は、コマンドの記述があまりにも簡単(基本的にはアルファベット1文字)なので、複雑な処理を行うスクリプトを書こうとすると途端に意味不明の記号の羅列になり、あまり複雑な処理を記述するには向いていないことである。単純な大量のテキスト置換専用コマンドと考えた方がいいようだ。

 AWKの場合はC言語に良く似た記述の制御構造を持ち、数値の計算もできるなど、一通りのことができる。ただ言語仕様上、テキストの順次処理に目的がほぼ特化されており、sedとは逆に置換機能が弱く、目的によっては不自由する場合もある。ちなみに名前の由来は、単に開発者の名前の頭文字を並べたものらしい。
 とは言え、私がようやく個人でPCを購入したのは社会人2年目でAWKを使いはじめた頃で、そのPCを使って初めてやったことは、AWKを使った簡易出納計算ツールの作成であった。もちろんそいつは今でも改造を重ね使われ続けている。

 さて、こうしたsedやAWKの不満を解消した、現在究極のスクリプトと目される言語がPerlという言語である。何というかこれは、C言語とsedとAWKとBASICとシェルスクリプトの機能のいいところを取って混ぜたような言語で、テキスト処理のみならず、バイナリファイルの処理、レポート作成、ネットワークの制御、最近ならWebでのCGIの記述など、ほとんどあらゆる目的に使うことができると言ってよい言語である。

 このPerlを憶えて以来、最近では私は、コンパイラ系の言語でプログラムを作ることがほとんどなくなってしまった。記述方法はC言語によく似ており、加えて正規表現や連想配列やリスト・文字列処理やネットワーク制御の機能を標準で備えている。スクリプトであるからコンパイルの必要がなく、直しては走らせてみるという一連の動作が早く行えるため、開発効率が極めてよい。また言語仕様上、扱える文字列の長さや配列の大きさなどについて定めていないので、そのような制約を考えずに作ることができる。略記法がいくつかあり、慣れないととっつきにくいところもあるが、慣れると非常に少ない記述量で同じ仕事をするスクリプトを手早く書くことができる。つまり、作り手になるべく余計な手間をかけさせないという思想が言語仕様全体に一貫しているのだ。

 このため、一回使ったら二度と使わないようなやっつけ仕事をやらせるプログラムから、かなり本格的なプログラムまで、Perl一つでほとんど片付いてしまうと言っていいのである。もちろん、実行効率はC言語などのちゃんとしたコンパイラ系プログラミング言語で作った方がいいが、開発時間も含めた全体の効率を考えると、自分の場合は明らかにPerlの出番が多い。

 ありがたいことに、Perlは、それが開発されたUNIX上はもちろん、MS-DOSやWindowsやMacOSにも移植され、Perlさえインストールしてあれば(なくても自分でインストールしてやれば)環境を選ばずどこでも走るプログラムができてしまう。実際私の場合、UNIX上で使うPerlスクリプトを、使い慣れたMS-DOS上で大まかに作って、UNIX上に移植するといった作り方をよくしている。

 というわけで、最後は結局Perlの宣伝になってしまったが、私も偉そうにいうほどPerlのすべてをマスターしているわけではない。実際、スクリプト系の言語でありながらPerlはなかなか奥の深い言語である。しかし、ちょっとでもプログラミングの経験のある人なら、Perlを覚えることはそう大変なことではないし、その一部の機能を覚えただけでも十分役に立つことは保証する。役に立つと思って使っているうちに、別の機能もおいおい覚えていくことだろう。語り出すときりがないので、あとは、Perlについての詳しい説明とマニュアルとして日本語 perl texinfoなどを参照されたい。

 まあそんなわけで、私の場合は色々試して、Perlが今のところ一番手になじむ道具であると思って使っているわけだが、どんな言語であれ、自分の手になじむ道具で、プログラムを自分で作って使うことこそが、コンピュータを使うことの原点であると思う。もちろん全ての人がプログラミングの技術を持つ必要はないとは思うが、プログラミングに親しむことによって、既製のアプリケーションの使い勝手や使いこなしについてのカンや目利きの能力もおのずとついてくるような気がする。

 最後に、よく言われる名言を、
「プログラミング言語を覚える最良にして唯一の方法は、とにかくその言語でプログラムを作ってみることである」


<前目次次>