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で試してみた。数行を実行するだけなら色々な言語で試せる。