- 「最初にJavaやっておくと良いよ。」「入社してからの最初に学んでもらう研修はJavaです。」との言葉通りに、ただ平坦にその線路を進んできた。
- 経験豊富気取りなJava若輩記述者である私は、とうとう「簡単かつ人気」というRubyに泣きつくことにする、何とも甘え技術者の鏡。
- しかし「簡単かつ人気」とはいえ、「何かとんでもない裏仕掛けがあるのかもしれない。」という、怠慢に満ちた心配性。
- ということで、主目的の「不安解消」と、格好をつけるための「効率的な学習」という、二大目的をかかげて、取り組む。
共通点
<共通点>
-
オブジェクト指向
-
プラットフォーム非依存
-
アクセス指定
→public,protected,privateが使用可能。
※細かな仕様や権限等は、多少違う。 -
単一継承
→1つのクラスは、直接の親クラスを1つしか持てない。
※Mix-inという仕組みで、実装のみクラスの複数継承可能
※属性継承は、不可能。 -
すべてのクラスの親クラスがObjectクラス
<相違点>
- 型付け。
→Javaでは変数やメソッドの型宣言が必要であることに対し、Rubyでは不要
→Javaは静的型付け言語であることに対して、Rubyは動的型付け言語である。
※静的型付けは「実行前の整合性確認」、動的型付けは「実行後の整合性確認」
※すべてオブジェクトとして扱われるため、Rubyに型は存在する。
→Javaの場合
String name = "nanashi";
int number = 50;
→Rubyの場合
name = "nanashi"
number = 50
- メソッド呼び出しの括弧は、省略可能。
String message = "hello";
System.out.println(message.length());
→Rubyの場合
message = "hello"
puts message.length
- 定数の変更
→Javaでは定数の変更が不可能に対し、Rubyでは変更可能
※変更可能であるが、変更時の警告は出る。
→Javaの場合
static final String MESSAGE = "Hello";
static final String MESSAGE = "Hello World"; //エラー。変更されない。
→Rubyの場合
MESSAGE = "Hello"
MESSAGE = "Hello World" # 警告のみ
- 基本データ型がない。
→すべてがオブジェクトとしての表現のため、普通の数値へのメソッド実行可能。
→Javaの場合
String number = new String(100);
→Rubyの場合
number = 100.to_s
- 最低限のクラス定義の有無。
→Rubyでは、クラス無しでも実行できる。
→Javaの場合
public class Test {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
→Rubyの場合
puts "Hello World"
- メソッド名に記号が使用可能
→!や?が使える。
※真偽チェックメソッドの命名は、「?」をつけることが慣習化。
→Javaの場合
public class Main {
public static void main(String[] args) throws Exception {
// エラーになる。
sayHello!();
}
public static void sayHello!(){
System.out.println("Hello");
}
}
→Rubyの場合
class UserNumberCheck
def userNumber?
true
end
end
number = UserNumberCheck.new
if number.userNumber?
puts "正しいです。"
end
- ライブラリの豊富さと開発速度
→gemという便利なライブラリが豊富
→バージョン更新の流れが早い。
まとめ
- 今回は、JavaとRubyの違いということで、今までお世話になったJavaをだしに使って、Rubyの「簡単さ・書きやすさ」を自分に染み込ませるという、信頼関係軽視行動。
- 「ただ、これはRubyではできないのか」という、未練たらたらぶりな「不人気の典型行動」をしている私は、今後すべての言語から距離を置かれるだろう。
- そのような実現確実未来に、希望の光を見出し、朗らかな暮らしをする私は、今日も簡単学習作業にいそしむ。
参考
-
http://www.atmarkit.co.jp/ait/articles/0803/25/news152.html
→主にこちらを参考にしました。大変お世話になりました。 -
https://tsuchikazu.net/java_ruby_differenc/
→こちらの記事も非常に参考にしました。大変お世話になりました。 -
http://a-auto50.blogspot.com/2015/07/javaruby.html
→こちらの記事も非常に参考にしました。大変お世話になりました。