先週の記事では、terminal内で使用するエディタとしてはnanoを使ってるよ、と書きました。が、viに乗り換えました。

nanoは、確かに覚えるべきことが少なく(参考)、初心者にはわかりやすい。その反面、機能に乏しいのが弱点です。ちょっとした直し程度ならnanoでもいいのですが、ある程度の長さのテキストを編集するとなると、nanoでは限界があります。

そこで、やはり本格的なエディタに取り組もう、と選んだのがviです。参考にしたのは、エディタ特集をやっているSoftware Designの2012年7月号。単なるユーザーにとってはvi(vim)、自分でカスタマイズ(プログラム)するならemacsに軍配が上がる、という印象を受けました。

viの習熟度の現状は、モードの切り換えやhjklでの移動に慣れた程度です。挿入モードメインで普通のエディタみたいな使い方をしています。もう少しコマンドを覚えれば、コマンドモードの方が高効率になるんでしょうが…。

あと、初歩的なテキストファイルの編集に関してはMacのterminalでもUbuntuのterminalでも大差ないので、最近はMacのterminalで作業するほうが多いです。ApacheとMySQLはUbuntuにしか入れてないので、PHPを書くときはUbuntuです。


また、言語に関してはRubyを始めました。今月からRubyの勉強会に参加する予定なので、その準備です。参考書としては『たのしいRuby 第3版』を選びました。理由は、

(1) 3版目である(=間違いが混入している可能性が低い)
(2) まつもとゆきひろ氏の推薦文がある
(3) 2色刷りで紙面が見やすい
(4) 2010年刊と比較的新しい

といったところ。今日は第1部、約60ページを終えました。感想は、

(1) Rubyの構文はシンプル
(2) 基本的な部分が説明不足(オブジェクトって何?)
(3) あまりたのしくないかも…(比較対象は『Perl言語プログラミングレッスン』)

Rubyでまず驚いたのは、文末のセミコロン(;)やif文の{}を使わないこと。短いif文を私の知っている言語で書いてみると、以下のようになります。

PHP(if文の中身が1行だけなら波括弧は省略可):

$a = 10;
if ( $a >= 10) print "$a";


Perl(波括弧省略不可):

$a = 10;
if ($a >= 10) {
    print "$a";
}

ただし、Perlで実行部分が1行の場合は、

print "$a" if ($a >= 10);

という書き方もできる(if修飾子)。


Ruby(セミコロン不要、波括弧の代わりにthen~endという文字列を使う)

a = 10
if (a >= 10) then
    print a
end

なお、『たのしいRuby』の第1部の段階では触れていないが、RubyでもPerlと同様にif修飾子が使えるので、

print a if (a >= 10)

と書くこともできる。


また、『たのしいRuby』では、オブジェクト指向言語の用語に慣れさせるためか、「オブジェクト」「メソッド」等の用語を多用します。しかも、これらの用語に関する詳しい説明はありません。プログラミング初心者を対象としているにも関わらず!

オブジェクト指向は直感的な書き方ができるので、「習うより慣れろ」式でも良いのかもしれませんが、納得感が得られないのが気になります。

『たのしいRuby』を、並行して進めている『Perl言語プログラミングレッスン』と比べると、構成もかなり違います。

『Perl言語プログラミングレッスン』は、数と文字列、変数、配列とハッシュ、条件判断とループ、といった具合で、基礎的な概念から順番に説明していく「伝統的」なスタイルです。これに対し、『たのしいRuby』は、最初にその本で紹介するトピックを概説し、その後各トピックを深く掘り下げるスタイル。

目次だけ見ると、『たのしいRuby』の方が見通しが良いように感じるのですが、実際にやってみると、『Perl言語プログラミングレッスン』の方が、「たのしい」。一歩ずつ前進していく(各項目をきっちり理解していく)感覚が心地よいのです。

『たのしいRuby』は、今日読み終えた第1部の段階では、地図をじっくり眺めただけ。一歩も進んでない。2部以降は各論に入っていくので、この先が楽しめるといいな、と思います。