プログラム言語による書き方の違い

2021年1月26日

変数 i について、0から9まで繰り返し、奇数・偶数の判断をします。
同じ処理を、Python、Java、C#、Ruby、JavaScriptで書くとどうなるかを示します。

Python

i = 0
while i < 10:
    if i % 2 == 1:    #iを2で割った余りが1
        print(str(i) + "は奇数です")
    else:
        print(str(i) + "は偶数です")
    i += 1
print("end")

Java

public class Sample{
	public static void main(String[] args) {
	    int i = 0;
	    while (i &lt; 10) {
	    	if (i % 2 == 1)    //iを2で割った余りが1
	    	{
	      		System.out.println(i + "は奇数です");
	        }
	    	else
	    	{
	    		System.out.println(i + "は偶数です");
	    	}
	        i++;
	    }
	    System.out.println("end");
	}
}

C#

namespace Sample
{
	class Program
	{
		int i = 0;
		while (i < 10) {
			if (i % 2 == 1)    //iを2で割った余りが1
			{
				Console.WriteLine(i + "は奇数です");
			}
			else
			{
				Console.WriteLine(i + "は偶数です");
			}
			i++; 
		}
		Console.WriteLine("end");
	}
}

Ruby

i = 0
while i < 10 do
  if i % 2 == 1    #iを2で割った余りが1
    puts i.to_s + "は奇数です"
  else
    puts i.to_s + "は偶数です"
  end
  i += 1
end
puts "end"

JavaScript

var i = 0;
while (i < 10) 
{
  if (i % 2 == 1)    //iを2で割った余りが1
  {
    console.log(i+ "は奇数です");
  }
  else
  {
    console.log(i+ "は偶数です");
  }
  i++;
}
console.log("end");

各言語での違い

ごく単純なプログラムですが、

  • Python:8行
  • Ruby:10行
  • JavaScript:14行
  • Java:17行
  • C#:19行

となります。

考察

私自身はRubyのみ開発経験がありません。今回比較するにあたり、本(たのしいRuby)で学習しました。

  • JavaとC#はクラスが必須ですが、Python・Ruby・JavaScriptは必須ではありません。
  • While文やIF文など制御ブロックを表すのに、Java・C#・JavaScriptは{}(中括弧)を用います。
    Rubyは end でブロックの終了を表します。
    Pythonはインデント(字下げ)でブロックを表します。
  • Java、C#、JavaScriptは行末に ;(セミコロン)が必要です。
  • Python、Ruby、JavaScriptは変数の型指定が不要です。
    代わりにPython、Rubyでは出力時に数値から文字に変換する必要があります。

 こうしてみるとJavaScriptも悪くないように思いますが、JavaScriptでSeleniumを使う場合はNode.jsという、実行環境をインストールする必要があり、そちらの学習も必要になります。非同期処理やコールバック関数といった概念を理解する必要があり、初心者にはハードルが高いです。

 PythonとRubyの比較は悩むところです。メジャー度合いではPythonですが、Rubyは愛好家も多く、かなり使いやすそうです。私も普通にWebアプリを作るならPytonよりRubyを採用する気がします。
ただSeleniumに限れば、メジャーで情報量も多いPythonの方が取り掛かりやすいのではないでしょうか?

2021年1月26日

Posted by sj