ウェブに特化した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