前にもお話ししたようにrubyとperlはかなり近い領域を対象にする 言語です.ここで,似ている点と違う点をまとめておきます. 似ている点 * 文字列やファイルに対する処理が強力 というか,rubyのその辺の機能はperlを真似ている.ただし, rubyはperl5の拡張正規表現には対応していない. * 一度構文木にコンパイルしてから,実行を行う 両方ともバイトコードコンパイラが無い. * 変数に型が無い 厳密にいうとperlの変数には3つの型(スカラー,リスト,連想 リスト)があるんだけど. 違う点 * 文法のみかけ rubyはAlgol風にbegin..endを使う.ただし,if/while修飾子 だとか,redoとか,perlからもらった制御構造もある. * オブジェクト指向 rubyは純粋なオブジェクト指向言語で言語の扱う全てのデータ はオブジェクトである.perlはperl5でオブジェクト指向機能 を持つようになったが,パッケージでクラスを代用するなど, あくまでも追加機能である(と松本は思う). * 多重継承 perl5には多重継承がある.rubyは多重継承は無いが,モジュー ルを使ったMixinで同等のことを実現している.Mixinの方が優 れていると松本は信じている. * rubyには例外処理がある perlでは例外処理はevalを用いて間接的に実装する. * perlには(基本的に)型が無い.rubyは動的な型がある. perlにはスカラーデータそのものには型が無く,演算子がデー タの型を決める.rubyはあらゆるデータがオブジェクトなので, 自分の型情報を持っている. * 組込みの演算子 perlはかなりの演算子を組込みで持っている.逆にrubyはほと んどの演算子が単なるメソッドである.組込みの演算子で行う 処理が多い時には,速度的にはperlが有利.しかし,ユーザ定 義の関数(メソッド)の呼び出しはrubyの方が早いため,場合に よっては逆転する. * 変数 perlは変数名によってデータ型が決まり,宣言によってスコー プが決まる.rubyは変数名によってスコープが決まり,宣言は 存在しない.ただし,ローカル変数については代入が宣言のよ うな働きをしている. * パッケージ perlはパッケージで名前空間を分割できる.rubyにはパッケー ジは無い.ただし,モジュールを名前空間の分割に使える. 次回予告 次はpythonとの比較を行います. まつもと ゆきひろ /:|)