C系言語とRubyを比較

こんばんは、スペードです。

テスト真っ只中ですが、2014年度 2014年度ANCTGCCアドベントカレンダー - anctgcc’s diary 二日目担当となりました。

僕は、最近Ruby on Railsを勉強しており、特にRubyの文法が面白いと思ったので、普段使っているC系言語(今回はC++を例に挙げます)と比較しながら紹介しようと思いました。

Rubyとは

Rubyは、日本で開発されたオブジェクト指向スクリプト言語です。

最近は、Ruby on RailsというWebアプリケーションフレームワークが流行っていて、それに伴い、Rubyが書かれることも多くなりました。

Rubyの文法

  • 変数

    C++の場合は

     int num = 10;
     string str = "hoge";
    

    これがRubyの場合は次のようになります。

     num = 10
     str = "hoge"
    

    最大の違いは型名が明示されてるかされてないかや、セミコロンの有無ですが、これはスクリプト言語との違いであってRubyとC系言語の比較にはならないので、ここではスルーします。

    どちらも変数と呼ばれますが、意味がかなり違います。

    上の場合のC系言語の変数はデータ型と呼ばれ、オブジェクトのコピーを格納している、いわば箱みたいなものです。

    一方、Rubyの変数は、どこかにあるオブジェクトを指しています。変数が名札となってオブジェクトを指していると考えれば分かりやすいかもしれません。また、上の例では、numは数値オブジェクト、strは文字列オブジェクトと呼ばれたりします。

  • if文


    C++の場合は

      string str("");
      if(str.empty()){
       puts("true");
      else
       puts("false");
      }
    

    これがRubyの場合は次のようになります。

      str = ""
      puts "true" if str.empty?
      puts "false" unless str.empty?
    

    C++の方の説明はいらないと思います。

    Rubyは上のように後置if文やunless文(条件が偽なら真)を使うことができます。(もちろん前置if文も使うことができます。)

    また、C系言語は0はfalseですが、Rubyだとtrueになります。Rubyでfalseになるのは一般的にfalseとnil(C系言語でいうNULLみたいなもの)だけです。

  • まとめ

    二つしか例を出せませんでしたが、Rubyの文法に面白いものはたくさんあります。

    これを機会にRubyに少しでも興味がもっていただけるとうれしいです。

    おまけ

    ゲーム創作研究部なのでゲームプログラミングに関することも書いておくとすれば、RubyのゲームライブラリにDXRubyというものがあります。

    少ししかさわったことがありませんが、比較的簡単にゲームを作れる印象でした。

    明日(12/3)のアドベントカレンダーの担当はリュー君に任せることにします。プロそうなこと書いてくれると思うので乞うご期待ですね。