Java
Ruby
プログラミング
初心者

【Ruby理解力促進①】JavaからRubyへの乗り換えにおいて、まずその違いを把握。


  • 「最初に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ではできないのか」という、未練たらたらぶりな「不人気の典型行動」をしている私は、今後すべての言語から距離を置かれるだろう。

  • そのような実現確実未来に、希望の光を見出し、朗らかな暮らしをする私は、今日も簡単学習作業にいそしむ。


参考