やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

「JavaからRubyへ」を読む

 軽く流し読み。

情報源

JavaからRuby

言語 実行時間 コード量
Java 速い 多い
Ruby 遅い 少ない

Javaとの類似

  • rdocという埋め込み型のドキュメントツールがありjavadocに似ています

Javaとの違い

rdoc

# 名前を返す。
def get_name; 'ytyaru'; end
# 年齢を返す。
def get_age; 100; end
# 渡された数の配列値を加算した値を返す。
def sum(*values); values.sum; end
rdoc

 または以下でもいいようだ。

rdoc --main ./lib.rb

 docディレクトリが作成され、index.htmlから閲覧できる。

 残念ながら#@param 引数名 説明とか、メソッドの仕様を示す書式はないらしい。昔のJavaDocってそういう感じだったと思うけど。全然JavaDocと違わない?

 試しにString型のJavaDocを見てみるとかなり詳しく書かれている。

 まあいいや。次いこう。

比較する方法が違います

 ドキュメントでは以下のように書いていた。

言語 値比較 参照比較
Java == equals()
Ruby equal?() ==

 でも、ググってみると比較する方法は他にもあった。

比較 概要
equal? x.object_id == y.object_idのようにオブジェクトが完全に同一か
eql? ==とほぼ同じだが少し厳密。同一クラスのインスタンスでなければ偽を返すから。
=== ==とほぼ同じだが型も関わる。case文で使われる。
== 値が同じか。<=>によって再定義できてしまうため動作が一定とは限らない。

 なんか文献によって説明が違う。まあいいや。今は適当に流そう。

所感

 適当だけど量が多いからね。サクッと流してどんどん次へ行く。わからなくなったらまた読む。それを何度も繰り返していくうちに、そのうち理解が深まっていくはず。

 Javaは1.4あたりの頃まではよく触っていた。それ以降は触っていない。とくにOracleに買収されてしまってからは完全に嫌煙していた。open_javaがあるはずだけど触ってない。今でもJavaを触るくらいならC#のほうがいいと思っている。

対象環境

$ uname -a
Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux