ここのところ、仕事でスクリプト、特にperlのをよく書くことがありまして。スクリプト書く仕事しているのではなく、自分の仕事の処理をやらせるためにスクリプト書いて楽しているという感じですが。
perlとは言わずと知れたスクリプト言語です。よくサーバー上で動いているので、サーバ上のプログラム=CGIに使われています。しかし元々はUnix上で処理を行うための言語で、かなり色々なことが出来ます。
で、今回の仕事でテキストデータをある一定の処理をしなくならなくてはなったので、perlでスクリプトをいくつか書きました。
まあ、それ以前から、それなりにperlを使ってはいまして。
例えば、この間(半年くらい前)のサーバ吹っ飛んだときにブログを復旧させたとき、データベースのバックアップはあまりとってなかったので、たまたま残っていたhtmlファイルから、MovableTypeに読み込み可能なテキストファイルフォーマットに整形したとか。(この時に懲りて、その後ブログのデータベースバックアップは外に取っておくことにした)
メガトラベラーのキャラクター生成プログラムを書いて、名前を与えると自動的に最後までキャラクターを作るようにしたとか。これを使って1001人キャラとか作って、この間のリヴァイアサンキャンペーンに使いました。
とまあ、いろいろ作ってはいるんですが、今回のこの仕事関係のことで、完全にPerlを自分のモノにした(理解したとは言わないが習得したとは言えるレベル)......んじゃないかな。まだ外部ライブラリはあまり使ってないので、本職の方には鼻で笑われるレベルだろうけど。
まあ、今さらPerlなんて......と言われそうなのも事実なんですけどね。今はpythonかRubyかせいぜいJavaScriptでしょ、とか。
そういうワケで今はその3つの言語もぼちぼち勉強しています。あと、仕事でJAVAとC#も覚えなくちゃならいことになりそうで、さすがにそれだけ手を広げるのはどうよと自分でも思わないではないです。
そうなんだよなあ、色々な言語がでてきてしょうがない。このほかにLuaとかLispとかも覚えなくちゃならない羽目になるかと思った。やらないで済みましたが。Lispはダメだ、あの逆ポーランド記法ってヤツが......。
あと、シェルスクリプトももうちょい覚えないと。
なんでこんなに言語がバラバラかなあ、バベルのせいかなあ、とか思ってしまうわけですよ。
そういうワケで、いろんな言語の入門書を立て続けに読んでいるのですが......いやあ、ほんっとに玉石混淆なんですね、この分野。ある程度理解が進んでから読んでみると、本当によくわかる。ひでぇ本がときどきある。
特に、ハッキリ書いちゃうと、Rubyの本にひどいのが多い。
別にRubyという言語自体が、難しいわけじゃありません。いや、確かにオブジェクト指向は理解するまで一苦労でしたけども。むしろ、いろんな書き方があって、柔軟性が高いとすら言える。
......いや、この柔軟性というのも、わかる難易度を上げている原因のひとつなんですけども。初心者にはむしろ一通りしかやり方がない方がわかりやすいのですよ。うん、それは昔から知っていったけど、それは上から目線でした。今回初めてその初心者側にたって、ふたたびそのことに身を染みた訳です。
でも、柔軟性が高いだけがRubyのわかりにくさを上げているわけではありません。それだったらPerlも同じくらいわかりにくいはず。
Rubyの入門書がわかりにくい理由は、その書き方にあります。
なんて言うか、あまりにも説明無しでいきなり「これ覚えればいいんだよ」的な押しつけ構文が出てくるものが多い。他の書き方があることには触れない。
なので、一体なにをやっているかわからない。他の言語をやったことのある人間にとってはますますそう。なにしろ、その「他の言語」とまったく違う書き方を押しつけられていることがほとんどだから。
(そして、同じダメな入門書でも、それぞれ違った書き方を押しつけていることが多い。たくさん入門書を読めば読むほど混乱する)
さきほど、あまり自由度が高くない方が、とは書きましたが、意味も説明されず、一通りを「覚えましたね? では次」とポコポコだす。
わかんねーよ。質問も出来るわけで無し。
で、ようやくある程度Rubyのことがわかって、入門書を改めて読んで気が付いたのが、「Rubyのユニークさ書きやすさを強調するあまり、Ruby独特の書き方をばかり押しつける」ものが多いと言うこと。
このことに気が付いたのは、オブジェクト指向とかRuby独特の構文とかを使わずにRubyでのプログラムを教えている本を読んだから。「あ、なんだ、普通のプログラムの書き方でもいいんじゃん」と。
で、そのことに気が付いたあと、入門書を読んで思ったのが、その本の著者のRuby偏愛度。つまり、Rubyは凄い、他の言語とは違うんだぞと言うことを言いたいがためにRuby独特の書き方をばかり強調しているのです。
ひどいのになると、「こんな凄い言語を使いこなせている俺、凄いだろ?」みたいな態度が透けて見える。いわゆる上から目線。そこまでいかなくてもRubyは普通の言語と違う優れた言語だから、普通のプログラム教本みたいなことは書かないぞ、みたいな本は多いです。
そのわりにインストールやディレクトリの作り方、変数の概念あたりはちゃんとやるんだよね。あと"Hello,world!"ね。それが書いてあるからには、一応初心者対象に書いてあるんだろうけど......。
不思議と、Rubyに多いんですよ、こんな入門書。
わかってから読むと、それなりに理解出来るんですけど、わからないうちに読むことによっては理解に至れないという。
逆に、pythonではこんな本はあまり見かけない。そもそもpythonは誰が書いても特定のパターンの書き方になるよう設計された言語なので、そういうことが起こりにくい、と言うのが大きな原因でしょう。その他、ブームが意外と最近で(言語自体は20年前からありますが)こなれた入門書が増えてから書かれたものが多いのもあるでしょうけど。
私の場合、pythonは始めてから1~2ヶ月なのにもうある程度できるようになってしまった。楽です。覚えやすいです。好きかどうかはちょっと微妙なところですけど。(なんだかんだ言って、慣れればRubyの自由度は楽しいのです)
まあ、Rubyの入門書、昔のほどそれがひどくて、最近のものはわかりやすいものが多いですので、最近の本を選んでおけば大丈夫です。そう、「第○版」とかついていないヤツをね。
基本、ネガティブなこと、なにかをけなすようなことはブログに書かないつもりでしたが、Rubyの件はちょっとあんまりひどかったので書いてしまいました。なにしろ昔買った入門書の5冊のうち4冊までそうだったからなあ。
以下はお勧めの入門書です。アマゾンへのリンク付き。
AWK
「いまさらAWK!?」とか「AWKってプログラミング言語じゃないでしょう」というつっこみがありそうですが。この本の原書はperlができる前の出版だからそこらへんは勘弁してください。
そしてそんなに古い本なのにお勧めするのは、とっっってもいい本だからです。わかりやすくて面白くて習得しやすい。プログラムの基本の考え方は変わらないし。
テキストファイルを置換を中心に基本1行ずつ処理していくなら、AWKが今でも一番優れてて、書きやすいと思っています。どんなunix系でもシステムに入っているし。
(でも改めて調べたら、高くなっちゃってるなあ......)
Perl
はじめてのperl(ランダル・スチュワーツ他/オライリージャパン)
今さらながら今さらですけども。本当に、初めての人のためのperl解説書。特に前半1/3,軽快な語り口で面白いです。その後ろも理解しやすいけど、その直前の軽快な部分とはちょっと理解度にギャップがある感じ。間にもうワンステップがあるとよかった。
これを読んだあとで、いわゆる「ラクダ本」を読むとわかりやすいです。いきなりラクダ本だと挫けるかも知れない。あれ、辞書的な部分もあるんで分厚いし。
Ruby
Rubyプログラミング基礎講座(広瀬雄二/技術評論社)
プログラム未経験の本当の初心者のために書かれていると前書きに書かれているけど、すでに(オブジェクト指向でない)プログラミング言語を知っている人にもお勧め。中の構成はなんだか、大学で使う教科書のよう。
普通のプログラムみたいに、Rubyでプログラムするための本。問題を解くことによって習得していくタイプの本です。オブジェクト指向とはなにかとかは、本の後半で説明されますので、とりあえずプログラムがわかってから、Ruby独特の書き方やオブジェクトプログラミングを説明してくれます。
python
プログラミング経験者のためのpython最速入門(天田士郎)(kindle版のみ)
ごめんなさい、本当の初心者のための本ではありません。
先ほども述べたとおり、Pythonについては特にひどいシロモノには当たってませんが、一番わかりやすかったのはこれ。他のプログラミング言語が出来る人が、pythonを覚えなくてはと言うときに読むことを想定している本で、だから、他言語と違う特徴、間違えやすいところなどだけに絞って書かれています。
普通の入門書の中盤に書かれているようなところを凝縮している感じです。ページ数は少ないけど、その分お安いので、どんなものか見てみたいというレベルならこれで充分。これで中級者まで一足飛び。
具体例がたくさん載ってて、そのまま例文を打ち込むだけでなにか出来るようになる......という本ではありません。普通の入門書には、後半によくそういうのが乗っていますよね。
ちなみにこれ、自費出版というか、amazonのkindle個人出版プロジェクトのもののようです。
コメントする