[ruby-list:64] ruby vs perl
From:
matz@... (Yukihiro Matsumoto)
Date:
1996-01-18 03:21:06 UTC
List:
ruby-list #64
前にもお話ししたように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との比較を行います.
まつもと ゆきひろ /:|)