Lisp から Ruby への設計ステップ

この間、 Ruby の作者である まつもとゆきひろ(Matz)さん のメーリングリストの内容がちょっぴり注目を集めました。 中身は Ruby を設計する時、 Lisp をベースにして Ruby になっていった手順です。
最後の冗談っぽい感じからすると、どこまでホントなのかよくわかりませんが、 話として面白いなと思いました。 今回はそれを翻訳して紹介したいと思います。


原文はこちら。
Ruby は次のステップで設計されています。
  1. シンプルな lisp をベースにする (Common Lisp の前身のようなの)
  2. マクロと S 式を削除
  3. シンプルなオブジェクトシステムを追加 (CLOS よりずっと簡単なもの)
  4. 高階関数からインスピレーションを得たコードブロックを追加
  5. Smalltalk にみられるメソッドを追加
  6. Perl と同等の機能を追加 (オブジェクト指向のスタイルで)
この理屈でいくと Ruby はもともと Lisp だったんです。
これからは Ruby を MatzLisp と呼びましょう (^O^)


以下、補足や感想です。

1. Common Lisp
Lisp は方言の多い言語ですが、それをなんとかまとめようということでできたのが CL(Common Lisp) です。

2. マクロ
Ruby の特徴の 1 つとして強力なメタプログラミングがあります。 Lisp のマクロはこれを更に強力にしたようなものです。
ただ、強力すぎて言語自体をいじれまくるので、方言の大量発生の原因でもあります。 マクロを取り除いて制約を加えたというところでしょうか。

2. S 式
S 式は Lisp の独特の構文となっているヤツです。
こちらも諸刃の剣で、 Lisp の美しさの軸であり、とっつきにくさの原因でもあります。 また、 Clojure でも苦労しているように OO(オブジェクト指向)と Lisp 構文は語順が逆になります。
書きやすさと OO にこだわった Ruby では S 式がなくなるのは必然だったのかもしれません。 4. コードブロック
他の言語では無名関数と高階関数を使ってやるところを もっとエレガントに書けるようにした感じです。
『7つの言語 7つの世界』 のインタビューでも まつもとさん の気に入っているところの 1 つとして挙げれられています。

6. Perl
名前のとおり、 Ruby は Perl の後継を狙った言語ですが、 意外にも一番最後に追加されたようです。

MatzLisp
もとは酒の席でのネタだったみたいです。

関連記事
スポンサーサイト



Prev.    Category    Next 

Facebook コメント


コメント

コメントの投稿

Font & Icon
非公開コメント

このページをシェア
アクセスカウンター
アクセスランキング
[ジャンルランキング]
コンピュータ
31位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
5位
アクセスランキングを見る>>
カレンダー(アーカイブ)
プルダウン 降順 昇順 年別

08月 | 2023年09月 | 10月
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30


はてな新着記事
はてな人気記事
ブロとも申請フォーム
プロフィール

yohshiy

Author:yohshiy
職業プログラマー。
仕事は主に C++ ですが、軽い言語マニアなので、色々使っています。

はてブ:yohshiy のブックマーク
Twitter:@yohshiy

サイト紹介
プログラミング好きのブログです。プログラミング関連の話題や公開ソフトの開発記などを雑多に書いてます。ただ、たまに英語やネット系の話になることも。