前にもお話ししたように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との比較を行います.
                                まつもと ゆきひろ /:|)