今日からPython触る

まさかPythonで開発することになるとは、去年は全く想像もしてなかった。そういう意味で、今年の抱負は予想外にしておいたのだが・・・。また素のPythonだけでなくDjango付き、とは言え仕事なのでしばらくはフレームワークバカ(とりあえずその場凌ぎで使い方だけ覚えて応用が利かないレベル)を続けて余裕がある時に深追いすることになります。

 ちなみにPythonは蛇の事だと思っていましたがモンティ・パイソンが由来だったのですか、いやぁ知らなかった。Djangoはジャズギタリストのジャンゴ・ラインハルトからだそうです。
Python – Wikipedia
Django – Wikipedia

PHPをC++に変換して高速化する「HipHop for PHP」

PHPもC++も使うプログラマーにとっては凄い興味が沸きます。確かにPHPはスクリプト言語という宿命がある限り、キャッシュしようが限界がありますよね。だからといってC++で再コーディングするにも時間的なコストを考えると手段から外される事も多い。

FacebookがPHPをC++に変換し高速化する「HipHop for PHP」を公開したようです | ke-tai.org

http://ke-tai.org/blog/2010/02/05/hiphopphp/

PHPをC++に変換して高速化する「HipHop for PHP」をFacebookが公開 : candycane development blog
 PHPがウェブアプリ作る言語としてオリジナルで便利な関数が揃っている為プログラマーを教育しやすい初心者にも敷居が低いのは良く分かりますが、元々HTMLにSSIの代わりに埋め込んで使うような言語でJavaScriptとの違いはサーバーで動作させるか、クライアントで動作させるかといったものなのに、Smartyのようなテンプレートエンジンやその他多機能なフレームワークなど、折角Apacheモジュールとして高速動作させているのにパフォーマンスに対して本末転倒なライブラリを実装する開発のほうが標準的になっている事がとても嘆かわしいですね。
 そういったPHPを遅くするライブラリどもを全てエクステンションに追い出せるならサーバーコスト(特にCPU周り)の節約に貢献できそうです。あとバッチ処理とか単体で変換できるとバッチ付き抜け防止に役立ちそうですね。(そもそもPHPでバッチ組むなというのもありますがシェルプログラミングスキルがあまり無いのでほんのちょっとでも複雑になると他のスクリプト言語に逃げてしまいます。。。Perl使ってもOKならPHP選ぶ前に使ってます。)
 RubyはPerlの文字化けに苦しんでいた10年前は興味ありましたが未だに手を出してないなぁ。。。Pythonはあまり興味なし。(多分仕事で使うことがなさそうだから)。Javaはどうなんでしょう?アプレットは遊びで作ってましたが、サーブレットはコンパイル済みプログラムをシステムに反映するのにApache、tomcatを再起動なんて仕様がデバッグコストを上げる原因にもなるし、無停止サービスを目指すシステムから見れば「ナンセンス」なのでまずサービス稼動したままリロードできるようにしないと大変ですよね。

 

各言語のtrue/false

これは興味深いです。C言語は単純なので分かりやすいですが、PHPでは微妙に独自ルールがあるなぁ~と思っていたのでこういう表があるとわかりやすいですね。この結果から言えることは「真偽の判定式は面倒でも明示的にtrue/falseに収束するように書くように」ってところかな。今までもPHP等でif($obj)みたいなコードがバグの原因となっていたケースをよく発見していたので、変数が定義済かどうか真偽の二値に収束しているかしっかり書くように勧めたいと思います。

特にPHPは変数宣言を用意してない癖に値の型はC言語以上に細かいので条件に利用するときは面倒なこともあります。0(数値)とfalse(偽)とNULLとEMPTY(空文字列)とUndefined(未定義)のどれがやってくるかわからない場合の判別とか。

各言語におけるtrue/falseまとめ – 床のトルストイ、ゲイとするとのこと
http://d.hatena.ne.jp/mirakui/20090604/truefalse