ウェブに特化した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のほうが勝っているので、それが優位になっている理由でしょうか。
■この記事のトラックバックURL:
http://www.mapee.jp/mpe334/mt-tb.cgi/439