今日は7時頃起きたっけな。お休みだから目覚ましはセットせずに寝たが、自然にこれくらいに目が覚めるのなら、まあいいだろう。朝食を食べて、さっそくお勉強。昨日買った本はとりあえず置いておいて、まだ読みかけの「初めてのPerl」を読む。
どうもPerlという言語は曖昧さというか、いろんなところを省略したり別の書き方ができたり、いやそれは他の言語でも同じなのだが、「省略の美学」というのがあるらしく、Perlは特にすさまじい。この本を読んでいると、ひたすらプログラミングのタイプ数を減らせて速く作れるから、こういう書き方ができる、と書いてある。
しかしなあ、その「省略の美学」のせいで、ろくに勉強もしないまま他の人のプログラムを見よう見まねで作り始めた自分は???????の部分がいっぱいあって、実に困っていたのだった。
小学生のときにBASICから入って、アセンブリ言語、C言語、大学では情報工学科でFortran、PASCAL、再びアセンブラ、AWK、シェルスクリプト、LispやらPrologなどのAI系のものまでやらされた。就職してからはC言語を独自にオブジェクト指向に拡張した言語を使ってオブジェクト指向プログラミングもやっていたし、最近では趣味でPHPとか他のスクリプト言語もやったし、たいていの言語はソースを読んだらだいたい何をやっているかわかる自身はあったのだ。
しかし、幸か不幸か私はWeb系の仕事とは縁がなく、CGIを作ったりしたこともなく、Perlには手をつけたことがなかった。別にPerlはCGI専用の言語ではなく、強力なスクリプト言語なのだが、どうも「PerlでCGI」というのが一時期はやったせいか、Perlには縁がなかった。
会社でも使う場面はなった。ちょっとここの処理が簡単そうなので、勉強がてらPerlで書いてみたい、とリーダーに言ったことがあるが、みんなが知らない言語で書かれてもメンテができないからやめてくれ、と言われる始末。
CGIを作れる環境もなかった。自分のPCにApacheでもインストールしてActivePerlでもいれるか、Linux環境でも構築すればよかったのかもしれないが、それをやったのはつい最近のことだ。それもWebアプリはPHPでやっていた。
話はだいぶ遠回りしたが、要は、Perlは触ったことがなかったが、
「たいていの言語は読んだら何をやっているか想像できて、それを元に頭の中でリバースエンジニアリングをかけて文法を推測する」
ことができる自信があったのにPerlは全然わけわからん、という状態だったのだ。
とりあえず今日は「初めてのPerl」を読破しよう、と思っていたが、9時くらいにちょっと疲れを感じて横になったら、そのまま11時くらいまで寝てしまった。やっぱり疲れは溜まっていたんだな。
午後から勉強を再開するも、睡魔との戦い。いっそ寝た方がいいのか。でも昼間に寝たら、夜に眠れなくなるので、なんとか体をやすめつつ寝ないで頑張りたい。休憩を多く入れ、伸びをしたりストレッチをしたり深呼吸をしたりして本を読んでいった。私が理解できてなかった「省略されていたものたち」の正体がやっとわかってきた。
とりあえずWebアプリ用のフレームワークを用いての開発なので、ファイルシステム管理やプロセス管理は飛ばして、なんとか最後まで読んだ。明日は昨日買った「続・初めてのPerl」と、今日の朝に届いた「Effective Perl」をつまみ食いしながら読むことにしよう。「Effective Perl」はより実戦的な内容で、これも非常に参考になりそうだ。
う〜ん、いろいろ詰め込みすぎて頭がパンクしそうだが、いろいろ覚えられるということは、自分のスキルがあがるということだから、どんどん詰め込んでいこう。そして作って作って作るのだ。自分の作った物が、ソフトウェアというバーチャルな世界ではあるが目に見える形になって動いている、というのはとても楽しいことだからやめられない。
コメント
Perl にはいろんな特徴がありますが、
いろんな書き方が出来るのが一番の特徴かも。
え!って言うような省略された書き方ができます。
メインテナンスのことを考えれば、素直にCみたいに
書けばよいのでしょうが、慣れてくるとどんどん短く書くようになりますね。で、大抵は他の人が読めないような事になってしまいます ^_^;;
一行野郎とか紹介しておきましょうか
http://www.geocities.co.jp/SiliconValley-Sunnyvale/6128/perl/oneline.html
あんまり極めると解読できる人がぐっと減るのでご注意を:)
そうなんですよ、前任者がかなりのスキルで、真似した
コードは省略できる部分はことごとく省略されていて、
しかも自分はリファレンスもまだ勉強していなくて、
まるで暗号のような部分もあって四苦八苦していました。
Perlは奥が深いです…。
Effective Perl、とてもおもしろいです。グラフィカルな
リストやハッシュの説明がわかりやすいし、正規表現を
オートマトンの形式で分解しているのがとても参考になりました。
前任者が残していったコードで、正規表現で解読不能な
ものがたくさんあるのですが、正規表現も奥が深くて、
けっこう理解しているつもりだったけど、実際に人の
コードを見てわけわから〜ん、という状態でした。
まだちらっとしか見てませんが、これから役に立って
くれそうです。