Rubyをかじる

Rubyはまつもとゆきひろ(通称Matz)さんが開発されたスクリプト言語だ。

勉強していろいろカルチャーショックを受けた。

0がture

一番驚いたのが実は0がtrueだということ。

Ruby

if 0 then
    puts '0 is true'
end

これを実行すると「0 is true」が表示される。

C言語

#include <stdio.h>
int main(void){
    // Your code here!
    if (0) 
      printf("0 is true");
    else
      printf("0 is false");
}

これを実行すると「0 is false」が表示される。

C#

public class Hello{
    public static void Main(){
        // Your code here!
        if (0) {
            System.Console.WriteLine("Hello C#");
        }
    }
}

数値を論理型(Boolean)に変換できないのでビルドエラーになる。

C言語の「0はfalse,0以外はtrue」に慣れていた。C#では暗黙に変換できないのね、バグになりにくていいねと思った。Rubyでは数値はすべてtrueになる。確かにC言語を始めたころは0がfalseなのはなぜ?と思っていたけど、0がtrueになる言語があるのに驚いた。Rubyの言語仕様を知るとむしろC言語の方がおかしい。C#は親切でスマート。C言語は低級言語なので高速重視で機械語に近いので0と1の論理値が異なるのは自然ではあるのだが、慣れとはこわい。

変数名

変数変数の種類
varローカル変数
@varインスタンス変数
@@varクラス変数
$varグローバル変数
Var定数

見ただけでスコープが分かり面白い。C言語だとvarだけだと変数の種類はわからない。区別するためにコーディングルールを決めたりするのだが、Rubyは言語でルールが決まっているのでわかりやすい。

文字の繰り返し

“*”をn回表示したいとする。C#で10回なら次のように書ける。

using System;
public class Hello{
    public static void Main(){      
        System.Console.WriteLine(new String('*', 10));
    }
}

Rubyだと、

puts "*" * 10

なんとシンプルでわかりやすい。

paiza.io

今回プログラミングコードの実行をpaiza.ioで試してみた。数行を実行するだけなら色々な言語で試せる。