Rubyについての落書きなど

Ruby(1.8)についての雑感。というか落書き。
# 嘘を書いていたら、教えてください。

  • スクリプト言語で、かなり遅い(1.9で改善されたし、そもそも実行系が色々出てるので、もう触れなくていい問題かな)。
  • 制御構造は、ALGOL族の末裔なので、慣れてるはず。
  • クラスベースのオブジェクト指向なので、慣れてるはず。
  • ビルトインのライブラリが充実していて便利。
  • 破壊的なメソッドが区別されてて分かりやすい。
  • 全ての文法が互いによく考慮されており、非常に扱いが良い。

Rubyは非常に動的な言語。Objective-Cに近い感じ(実はSmalltalkに近いのだろうか)。

たとえば、いわゆる「ダックタイピング」。型構造でメソッド呼び出しを縛るC++/Javaなどとは違って、その名前のメソッドがあれば呼んでやれ、ということ。

これはC++/Javaなどから見ると静的チェックがしにくいともいえる。ただ、ちゃんとテストをすれば潰せる問題のはず。

あとはちょっと細かいけど、

  • includeでインスタンスに特定の操作を追加できる。
  • 「import Math」とかにちょっと感激。selfにメソッドを追加するんだ!!
  • 既存のクラスライブラリもHackし放題。まあ、ほどほどにしとかないと。
イテレータは強力。Javaのイテレータとはもちろん違う。ALGOL系言語の構文を利用して作っているけど、内容は高階プログラミング。関数型言語(LISPやML)などと同等のパワーを持つ。僕は頭が弱いので、うまく使えていないけど。

行末のセミコロンが必須じゃないのは良いかも。慣れてくると他の言語でセミコロンを打ち忘れそう。

# セミコロンに関しては、C/C++/JavaとPascalでもどうせ違うし

Perlとできることはそんなに変わらないかもしれないけど、よっぽど綺麗なコードが書けるんじゃないかな、と思う。

 
落書きついでに他の言語についてもちょこっと書いておくと、

C
今では、Cは普通のプログラミング言語では無いのかもしれない。OSとか制御とか特殊用途に使われる言語だ、とか書いてしまおう。

この頃はJavaとかRubyから入門する人も増えたと思う。とりあえず初学者がCをやって挫折、というパターンが減ってきたのは良いことと思う。

でも、一度は勉強しといた方が、いろいろな意味で理解が深まるとは思う。

C++
機能豊富、なんでもできるかわりに相互作用が悲惨で、素人には使わせられない。
# なんと適当な書き方だろう、一時期ずっと使っていたクセに。

Java
C++よりもランタイムで行なう部分が大きい(特にGC)し、プログラマの裁量も低いので、ずいぶん扱いやすい。もちろん見方によっては全く逆の意見になる。

単一継承/インタフェースを強要させられるため、どうにもコードがごてごてする。ただし、エンタプライズ開発では、これは悪いことばかりではない。

Perl
Rubyの1ヶ月前らしい。ネイティブPerl人が書いたコードはまさに暗号文で、一行解読するのに一日かかったりする。ちょっと言い過ぎか。

「Rubyについての落書きなど」への2件のフィードバック

  1. Railsとかだと,StringクラスとかNumericクラスなんかの超基本クラスを魔改造していて,
    ひどいよ.
    2.days.ago とか.

  2. うん。そういうのも一応聞いた上で書いてる。まあノリが違うといえば、それだけなんだけどねぇ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です