2015年9月24日木曜日

RubyとPython -これだけは知っておきたい基礎知識-

勉強の為に引用しました。
http://www.ossnews.jp/closeup/articles/?aid=201304-00001

RubyとPythonはどう違うのか。

「RubyとPythonはどう違うのか。」比較的検索される内容だということで少しまとめてみたいと思います。
RubyとPythonに共通する部分は、オブジェクト指向のスクリプト言語だということです。Rubyは20周年を迎え2.0となりました。一方、Pythonも1990年から開発されています。両方の言語とも成熟期に入っているといってもいいぐらい安定しています。RubyもPython共、豊富なライブラリなどが用意されており、Webアプリケーションや管理系のコマンドの開発言語としても利用されています。
では、2つの言語の違いはなんでしょうか。プログラミング方法やライブラリ、フレームワークなどいろいろな側面で比較してみたいと思います。

プログラミング方法

Pythonは、プログラムのブロック構造を表現するのにインデントを利用します。C言語系などの多くの言語では、プログラムのブロック構造を表現するのに"{}"を利用します。
Pythonでは、「見た目のブロック構造」と「実際の論理的な制御構造」を同一にすることを目的として、インデントを利用したプログラムのブロック構造をとります。
Pythonの場合は、classやdefといったキーワードはありますが、ブロック構造を終了するためのキーワードや括弧はありません。その代り、ブロック構造を終了するときは、一つインデントを上げています。
一方Rubyは、インデントはさほど重要ではありません。
「class」や「def」といったキーワードがあり、さらにそれに対応するendというキーワードがあります。ブロック構造を表現するのには、「def」や「end」といったキーワードを利用します。
リスト1(Python)とリスト2(Ruby)ですが、プログラムの内容は同じです。
Languageクラスにメンバー変数としてcodeとnameを設定して、配列にオブジェクトを収納し、繰り返し処理を行っています。
リスト1:Python
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/python
# -*- coding: utf-8 -*-
class Language:
def __init__(self, code, name):
  self.code = code
  self.name = name
def display(self):
  print self.code + " " + self.name
if __name__ == "__main__":
  languages = []
  languages.append(Language("ruby", "ルビ"))
  languages.append(Language("python", "パイソン"))
  for language in languages:
    language.display()
リスト2:Ruby
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/ruby
# -*- coding: utf-8 -*-
class Language
  def initialize(code, name)
    @code = code
    @name = name
  end
  def display()
    puts @code +" "+ @name
  end
end
languages = []
languages.push(Language.new("ruby", "ルビ"))
languages.push(Language.new("python", "パイソン"))
languages.each do |language|
  language.display()
end

次のページへ続く

ライブラリの違い

RubyもPythonも付属のライブラリは豊富です。また、RubyGemsやPython Package Indexなどの公式ライブライのリポジトリなども用意されています。必要な機能はほとんどライブラリとして入手することができるのではないでしょうか。 

フレームワークなどの比較

Rubyのフレームワークといえば、Ruby on Railsなのでこちらはあまり議論の余地はないと思います。Pythonは、Google App Engineで利用できます。また、Zopeなどもあり、こちらも十分にこなれています。

人気度の比較

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 
このURLによると、PythonとRubyの人気の順位は、それぞれ8位、9位となっています。しかし、Rateを見るとPythonのほうがRubyの2倍となっており、少し劣性ではないでしょうか。

利用状況

RubyはRuby on Railsと一緒に多くのWebアプリケーションとして開発されています。一方、Pythonは、Linux系の管理コマンドなどとして利用されているものもたくさんあります。また、欧米の企業での利用事例も多く、開発数ではPythonに分があるようです。

日本国内での状況

2013/3/24現在のGoogleトレンドの検索キーワードの状況を調べるとRubyとPythonの比率は2:1となっており、Rubyが優位です。また、日本のAmazonで日本語書籍を検索すると482対287となっており、RubyのこちらもRubyのほうが優位です。新しく学習する場合は、Rubyのほうが情報量が豊富なので、Pythonとくらべて容易に学習することができるのではないでしょうか。ちなみにアメリカのAmazonでは、Programming + Ruby or Pythonを検索しましたが、比率は1:3となっておりPythonが圧倒的でした。

まとめ

RubyとPythonはどちらの言語も安定しており、ライブラリ、フレームワークとも充実しています。ブロック構造の表現がPython独自の方法となっていますが、可読性についてもどちらも問題がないと思います。
利用状況などを見ると、海外と日本国内では大きく違ってきます。海外、特に欧米ではPythonのほうが人気が高いと言えます。一方、国内に目を向けると、Rubyのほうが圧倒的に人気があり、情報も豊富です。もし、あなたが海外での活躍の場を求めているのであれば、Pythonを勉強したほうがいいかもしれません。国内で活躍の場を求めているのであれば、Rubyが有利ではないでしょうか。
いずれにしても、どちらの言語を学習するにしても「プログラミングを楽しむ」ことを忘れないのが大事なことだと思います。

Clip to Evernote

0 コメント:

コメントを投稿