PHPとRubyのコードの書き方を比較

スポンサーリンク
スポンサーリンク
ライフスタイル関連のコンテンツ
お金 | 仕事 | 勉強 | プライベート | 健康 |
プログラミング関連のコンテンツ
C言語/C++入門 | Ruby入門 | Python入門 | プログラミング全般

ウェブに特化したPHPは、軽いしとっつきやすいし、資料も多いしライブラリ豊富で、個人的には好きです。
3~4年ほど前にプログラムの勉強をはじめ、最初はPerlに挫折したけど、PHPならなんとか動くものを書くことができた。
でも、PHPはよく叩かれる言語みたいだ・・・
PHPのどこがどう決定的に悪いのか、私にはいまいちよく分かりませんが。

スポンサーリンク

さてと・・・最近お休みしていたRubyのお勉強を再開しました。→Ruby入門勉強ルーム
Rubyを一通り学んでみて分かったことは、PHPよりRubyのほうが気持ちよく書けるということ。(ここが大事なのかもしれないけどw)

簡単な例題で、両者のコードを比較してみます。
5要素からなる値段の配列の各要素に、消費税をかけて新たな配列を作る場合。

PHPの場合

<?php
    // foreachで回す
    $prices = array(200, 150, 36, 1280, 640);
    $taxin_prices = array();
    foreach ($prices as $price) {
        array_push($taxin_prices, floor($price * 1.05));
    }
    echo "<pre>"; var_dump($taxin_prices); echo "</pre>";
    
    // phpのmap(array_map)を使う
    $prices = array(200, 150, 36, 1280, 640);
    function taxin($price) {    // コールバック関数定義が面倒!
        return floor($price * 1.05);
    }
    // コールバック関数を呼んでmap
    $taxin_prices = array_map("taxin", $prices);
    echo "<pre>"; var_dump($taxin_prices); echo "</pre>";
?>

PHPの場合、foreachで回しながら新たな配列にpushする、またはarray_mapを使う例を書いてみました。
PHPのmap(array_map)は、簡単な処理でもコールバック関数を定義しなきゃいけないのが、ちょっと面倒に感じます。
どちらの例も実行結果は同じで、以下のようになります。

array(5) {
  [0]=>
  float(210)
  [1]=>
  float(157)
  [2]=>
  float(37)
  [3]=>
  float(1344)
  [4]=>
  float(672)
}

Rubyの場合

# mapにブロック(イテレータ)を渡せる
prices = [200, 150, 36, 1280, 640]
taxin_prices = prices.map{|price|
  (price * 1.05).floor
}
p taxin_prices
 
# 出力だけなら1行でも書ける
p [200, 150, 36, 1280, 640].map{|price| (price * 1.05).floor}

Rubyの上記コードも出力結果は同じで、以下の通りとなります。

[210, 157, 37, 1344, 672]

メソッドに特定の処理を書いたブロックを渡せるので、コールバック関数の定義が必要ありません。
結果、PHPよりも短いコードで済むし、なにより気持ちよく書けます。

言語仕様としては、Rubyのほうがエレガントだと思いますけど、とっつきやすさやレンタルサーバーでの動かしやすさ、ライブラリ・ドキュメント、キラーアプリケーションの豊富さなんかでは、PHPのほうが勝っているので、それが優位になっている理由でしょうか。

参考:Rubyの魅力 – Ruby入門勉強ルーム

スポンサーリンク
 
スポンサーリンク