先日少しだけ触れたようにプロジェクトを進めようと考えています。どのプログラミング言語が適切なのか悩んでいます。まぁ、どうもいろいろよわよわですので悩んでしまいます。プログラマや SE という職種に就いたことがないため、相変わらず とんちんかんなことばかりになってしまいそうです。
(1) ある程度一般的だったり作りやすくて、(2) ある程度インストールや環境構築が楽で、(3) そしてかっこいいやつがいいなぁと思います。最終的には、適材適所という言葉もあるし、一方どれでもいいや、とかも思ったりします。おそらくこのプロジェクトで使う言語が、今後の自分の母語のひとつになるだろうと思っています。
ちょっと子供な意見ですが、考えを整理したいと思って書きました。
Windows バッチでたいていのことはできますね。
現在、一番使っているプログラミング言語が「Windows バッチ」です。Windows のコマンドプロンプトで動くようなスクリプトです。 リソースキット、cygwin や SFU (Windows Services for UNIX)のコマンドたちを組み合わせると最強です。いわゆる データベースアクセスするための SQL や XML を書いて実行したり、HTML を吐き出してウェブサーバに掲載したり、Perl や Java 、Scheme などのプログラムもバッチから吐き出して実行させています。解析のようなパーサのような処理や Lisp のマクロやレキシカルクロージャのような使い方もしています。逆に SQL など言語からバッチファイルを吐き出したり、なんでもあり具合がいい感じです。
Windows Server でサーバ側で実行するような処理に向いているように感じます。Windows サーバであれば、実行可能なので悩まなくてすみます。さらに、サーバにさまざまなツールや言語などの実行環境を入れることはトラブルを引き起こす可能性を否定できません。もうひとつは、ごく限られた人たちに使ってもらったり、一回だけ実行する使い捨てだったりすることが多いためです。
もう少し難しいことをしたいときは WSH なんかも手を出しますけれど、Windows バッチだけでエラー処理もこなせますし、たいていのことはこれで満足です。
UNIX な場合は sh を使え、という話もどこかで聞いたことがあります。しかし、デフォルトでログインする bash だったり ksh だったりでやっちゃうお手抜きしています。
でも、アプリケーションとして配布するためには、バッチやシェルでいいのでしょうか*1。
やっぱり Java だよね。
1995年あたりの Java の 0.8 ぐらいから使っています。現在所属している会社で 1999年に立ち上げにかかわったサイトは すべて Java でした。言語も大きくなって、さまざまなライブラリもあるし便利になりました。書籍やサイトなどが多く方法論やパタンなどが整備されていて、比較的多くの人が使えるのがうれしいですよね。JVM も、さまざまな OS で動きますしそのあたりも安心です。
一方、いろいろな手続きを踏む必要があってちょっと書くのがめんどいなぁというのがあります。JDK 1.5 になって楽チンになってきたと聞いていますけれど、まだ 1.5 らしいものでちゃんと書いたことはありません。
ちょっとしたことも頭を使います。たとえば、TCP port 7 (echo) ではなく ICMP を出す方法を JDK 1.3 や 1.4 だけで出す方法はなかった(というか知らなかった)り、かっこよく Windows や OS などとお話をする方法があまりなかった(というか知らなかった)りします。 WebLogic の COM インターフェースを使うとか、java.system かなんかを使うらしいけれど…。
Perl もかっこいい。
そんなかゆいところに手が届く(と、私が信じている)のが Perl。Perl ってすごいですよね。CPAN で探すとたいていのことはできてしまう。ものにもよるけど、 Java や C でやりたいことを 100 行ぐらいかかるのを1行でできちゃったりします。これって難しい人にはいいのかどうかわからないけど、自分にとっては便利です。
けど、使い方が中途半端なためか Java でいうパタンをどのように Perl で書けばよいのか、いまいちわかっていなかったりします。このあたりは調べれば比較しながら理解できてしまうのかもしれません。
でもって、Lisp や Sheme。
ポールグレアムのハッカーと画家を読んでかっちょええー、って思ってしまいました。先日読んだのが、The Semicolon Wars (PDF)。こちらも最高の言語として Lisp があがっているんです。
自分にとっての一番のリスクは一年半ぐらいお勉強しているけど、手を動かしていないのでどこまでいけるかわからないところです。この言語を選ぶとちょっとチャレンジャブルかなと感じます。
もうひとつは、あまり人口がいないんじゃないかなということ。自分が宣教師になればいいんじゃないか、という論理はわかりますけど、現実的に少ないですよね。
忘れちゃいけない
C/C++。とりあえず、どんな環境でも動くし必須ですよね。
Smalltalk もすごいし、JavaScript もここまでできるのかと感動しました!
Huskel いいらしいね。
かぜさんからお借りしている本を読み出したところなので、そのうち。
結論
今のところ、一番硬いところで Java か Perl 。がんばれば Scheme かなというところです。JavaScript (Windows だったら JScript, OS X だったら JSOSA でいいんでしたっけ)も面白いかな、と。どれであれ、とりあえず練習あるのみです。
何かを作りたいとき、みなさんはどの言語を使ってます?
今日もたくさんバッチファイルを書きました……。
*1:案外、これで攻めてみるというのも面白いのかもしれないですね