「JavaからRubyへ」を読む
軽く流し読み。
情報源
JavaからRubyへ
言語 | 実行時間 | コード量 |
---|---|---|
Java | 速い | 多い |
Ruby | 遅い | 少ない |
Javaとの類似
rdoc
という埋め込み型のドキュメントツールがありjavadoc
に似ています
Javaとの違い
- 標準GUIツールキットがある(
Ruby Tk
) - サードパーティ製GUIツールキットがある(wxRuby,FXRuby,Ruby-GNOME2,Qt)
- XMLよりもYAMLが好まれます
- 比較する方法が違います
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#のほうがいいと思っている。
対象環境
- Raspbierry pi 4 Model B
- Raspberry Pi OS buster 10.0 2020-08-20 ※
- bash 5.0.3(1)-release
- ruby 3.0.2
$ uname -a Linux raspberrypi 5.10.52-v7l+ #1441 SMP Tue Aug 3 18:11:56 BST 2021 armv7l GNU/Linux