2008年1月19日土曜日

時は来たりて

いよいよ私の身辺のいろいろ変化しております。
詳しくはかけないのですが、もともと独立志向で自分の会社まで作っていましたが、なかなか本格運営にいたらなかったのですが、周りの環境からの圧力によって、独立せざるを得ないようになってきてます。

まあ、根本的に本来目指していた方向に運命が導いてくれていると考えるのがポジティブでしょう。
おそらくここ2年くらいは基礎作りの時期になるのではないでしょうか。つらいですけど、ここをがんばるしかないと思います。

さて、そんなこんなでここ一年間、Python言語を中心に開発してこられて、その他関数型言語(Haskell、Scheme等)の再学習によって非常にためになり得るものが多かった一年でしたが、これからのプロジェクトでまたPHPに触らなくてはならなくなりそうです。

ここ一年で結構Pythonや関数型言語の芸風?が身についてきているので、PHPに戻るということは少し不安を覚えます。もちろん以前はバリバリにPHP4を書いていたし、JavaやC++からオブジェクト指向に入った自分から言えば、今度やるであろうPHP5の拡張された構文もそう問題は無いのですが、いまいち関数型言語的視点から見ると、足りないものが多すぎるのです。

まずは関数が「ファーストクラス・オブジェクト」出ないということが一番の頭痛。
これは高階関数をうまく動かせないということで、特にクロージャがうまく機能させられないことは大問題です。いろいろググッて調べたんですが、やっぱりクロージャが使えないことで不満が書いてあるサイトが海外には結構多いようです。関数を引数に使うことができますが、あくまで関数の「名前」を引数に渡すという形になるようです。同様に関数を返す関数は作れるようですが、クロージャが機能しないんでどうしようもないでしょう。

後は無名関数の問題。
PHPでは匿名関数というみたいですが、一応、匿名関数を作る関数「create_function()」があるみたいですが、これが真の意味での無名関数ではなく、create_function()の戻値はPHPでランダムにつけた関数名が帰ってきます。要は名前という文字列ペースでしか関数を扱えないということです。カリー化もよってできないということですね。

少し救いなのがarray_mapとかarray_filterというおなじみのmap、filter系があるということ。
これがないと僕は話しにならなくなります。元Lisper系なので、プログラムのほとんどをこれで処理してしまいます。

あー、こんなことならいっそJavaScriptの方がいいなー。
サーバサイドでもJavaScriptが使いたいなー。と思い調べてみても、結構これは、という実装が無いようです。Java6ではJavaScriptがもれなくついてくるので、そのうちTomcatの実装でJavaScriptでアプリケーション記述とか出てこないでしょうか。これはもう少しの話だと思っています。
いくつかJavaベースのサーバでRhinoを動かすものがあり、Javaライブラリとの連携もよさそうなのだが
全部JavaScriptで記述できるわけではなく、やはりプレゼンテーション層だけJavaScriptであとのビジネスロジックとモデル部分はJavaBeansでって感じのものが多いです。僕としては複雑な処理にこそ記述力がシンプルで強力なJavaScriptが使いたいんですがね。結局、JavaでやりましょうっていってだましてJavaScriptで実際に記述することはできるかもしれないけど、相手会社にJavaをきちんとできない人が多いんで、結局はJavaのライブラリまで自分で作らなければならなくなるんでは本末転倒だしね。

結局、Python位記述力のある言語でしかもライブラリがそこそこ豊富で単一の言語でWebのMVCを全部記述できるものって探すと、結構数がかぎられてるんですよね。あとはRubyとPerlでしょ。Perlは俺が嫌いだし、Rubyもやってる人が相手方に少ないんで、結局はPHP5でって話に落ち着く。
でもPHP5だとダサい記述しかならない。

そう、PHPを書くときは単に仕事だと割り切るべきでしょう。
そしてなるべく自分の手間のかからない形でプログラムを書いていく。
いっそのことDelphi for PHPでも導入しようかな。。
もともと俺は実利主義だし「ツーラー(Tooler)」なんで、便利なソフト探して楽して仕事できることに、またそういう環境を作ることに最大の快感を覚えるタイプの人間です。そういった意味では本来はそういったコードの記述力なんてものより、それを機械的にソフトやIDEやツールがカバーするといった方向性もあるのでしょう。

Java書き始めた頃も、テキストエディタで書いていましたが、すぐにJbuilderとかつかってた記憶があります。今のJava書きの人たちはEclipseがないと仕事にならんでしょ。C#のひともVisualStudioつかってるでしょ。特にJavaは記述力うんぬんというか、冗長な記述にならざるを得ないんで、こういったプラットフォームで仕事する人はツール使いが必須なわけですな。

0 件のコメント: