LoginSignup
4
1

More than 5 years have passed since last update.

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

Posted at
  • 「最初に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ではできないのか」という、未練たらたらぶりな「不人気の典型行動」をしている私は、今後すべての言語から距離を置かれるだろう。
  • そのような実現確実未来に、希望の光を見出し、朗らかな暮らしをする私は、今日も簡単学習作業にいそしむ。

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1