#226 レクチャー・イン・イングリッシュ

2004/01/15

<前目次次>


 フィリピンからの研修生を迎えて戸惑いながらも、最近はどうにか英語で日常会話ができるようになった(気がする)という話の続き。で、いよいよ研修の目的である、コンピュータ技術に関するレクチャーである。内容に関してはある程度こちらに任されているので、自分がある程度理解していて、人に教えられそうなものということで、Perlの基礎を教えることにした。

 ここでも説明したことがあるが、Perlというのは、何と言うか、CやBasicやsedやAWKやシェルスクリプトのいいところをまとめて作り上げたような言語で、文字列処理などを得意とするが、ほかにも、バイナリファイルの編集やファイルシステムの取り扱い、ネットワークプログラミングなどもこなす、強力なスクリプト言語である。基本的にコンパイル不要なので開発効率が良く、使用可能メモリ量や文字列長などについて明示的な制限がなく、正規表現処理や連想配列などの便利な機能が簡単に使えるため、複雑な処理でも比較的短い記述でプログラムを書くことができる。

 難点を言えば、記述法はCに似ているものの、変数に必ず識別記号をつけなくてはならないことなど、初心者にはややとっつきにくい部分があるのと、非常に多くの略記法があるため、しばしば意味がわかりにくいスクリプトを書いてしまいがちになってしまうところである。この辺は賛否分かれるところもあろうが、ある意味開発者の手間を省くためにそのような仕様になっているとも言える。

 私がこのPerlを学習するきっかけとなったのが、Nutshellシリーズの「初めてのPerl(Learning Perl)」という本である。セクションごとにPerlの基本的な文法をが紹介され、各セクション末に練習問題が掲載され理解度を確認することもできる。Perlの原典とも言える「Perlプログラミング(Programming Perl)」が表紙のラクダ絵にちなんで「ラクダ本」と呼ばれているように、この入門書の方は、リャマの絵が描かれていることから「リャマ本」と紹介されている。

 というわけで、早速秋葉原へ行って、この「リャマ本」第3版の英語版を買ってきて与える。自分用には、同じ本の日本語版を買う。そして、2〜3日で1セクション自習してもらって練習問題を解いてもらい、わからなかったところやバグが出たところを一緒に確認する、という方法で授業を行うようにした。

 とは言え、自分の母国語以外の言語で人に教えるというのは、なかなか難しいものである。とりわけ、プログラミング言語と言った概念的なものを教えるというのは、なかなかに骨が折れる。

 そもそもプログラミング言語というものは、ひととおりどんな機能があるのかを学ぶだけで終わるものではない。自分が取り組もうとしている問題に対して、どのような関数や機能を使えば良いか。どのようなアルゴリズムでプログラムを作れば良いか。どうすれば効率良くプログラムを作ることができるか。どうすれば短時間でバグを発見し潰すことができるか。こういった問題は、言語仕様そのものよりももっと深いところにあるノウハウであり、そういったコツを一つ一つ教えるのはなかなか難しい。それが英語でということになるとなおさらである。

 プログラムというものは、たとえば、文末のセミコロンを忘れただけで「コンパイルエラー」ですと文句を言われたり、変数名を一文字間違えただけで全く意図しない結果が出てきたりするものである。これが人間相手で自然言語を使っている限りにおいては、多少単語や文法が違っていたりしても、およそ前後の文脈から、だいたいこんなことを言おうとしているのだなと、相手の方が意味を「汲み取る」努力をしてくれるものだが、何しろコンピュータは冷徹で、作り手のたった一つのミスも修正してはくれない。

 もちろん、このような単純ミスによるバグにはある程度犯しやすいパターンがあって、何度かプログラムを組み経験を積めば、エラーメッセージからすぐにバグを見つけ修正するのは比較的たやすくできるようになる。むしろ難しいのは、文法的には間違っていないのに意図した動きをしないという場合である。こういったバグを見つけ修正するのはなかなか容易なことではなく、結局のところは経験を積んでいくことが早道である。

 慣れない英語でプログラミング言語を教えながら、結局、外国語だろうがプログラミング言語だろうが、ともかく積極的に使う努力をする以外に上達の道はないのだなということを、改めて思い知る今日この頃である。


<前目次次>