概要: プログラミング言語は用途毎に使い分けるべし
今日はなんとなく思いついたコトまとめて見るというか記事にして見る。
さっさと結論から言うと、僕はプログラミング言語というものは、 自分たちが作り上げたいモノに対して、 最適なモノを使い分ければ良い、と思う。
例えば、
- 単機能な CGI カウンターなら PHP、
- 学術用途なプログラミングなら Python、
- 非同期処理メインとか、リアルタイム Web とかなら node.js、
- DRY 精神あふれる万能型プログラミングなら Ruby、
- テキスト処理や膨大なライブラリを必要とするなら Perl
と言った具合で。
まあこれ以外にも、アプリケーション構築する上で、 必要となるミドルウェアとの相性で選ぶ、とか、 色々あるけど、僕が思うに、プログラミング言語というのは、 自分たちの作りたい、あるいは、作らなければならない、 というもの実現する時に、 最も最適なモノ何か 、 という視点で選ぶ方がいいんじゃないか、と思う。
例えば僕はリアルタイム掲示板なるケッタイなモノ作る際、 色々紆余曲折あって node.js を選んだけど、 これは僕自身が使いたかった MongoDB と相性が良く、 リアルタイム処理に socket.io が気軽に使える、 というが二大理由だったりする。
まあ node.js だとこの言語を他の人が選ぶ理由には、 流行りだとかクライアントで JavaScript を書いてきた、 等々の理由がありそうだけど、僕自身としては、 作りたいものを作り上げる際に、流行っているから、 という理由で、流行りモノを取り込む、というのは、 よっぽど使い捨てなモノとか、あるいは実験的なモノでない限り、 避けた方が良い、と思う。
というのも、例えば JS だと昔 prototype.js とか流行ったけど、 アレは jQuery.js に流されたし、その他の諸々も、 やっぱり何時の間にか名前聞かなくなってたりする。
で、趣味的なプロジェクトであれば、ハヤリモノでもありだけど、 仕事とかあるいは個人的に大きなプロジェクト何かでは、 ハヤリモノを流行っているから、という理由で、 取り込んではならない、と思う。
例えば仕事に使うライブラリやミドルウェアで、 流行りもの取り込んだは良いものの、 流行り廃りで取り込んだモノが時代遅れになり、 おまけに作ってる元も飽きちゃって、 更新が止まった、とかなると、もう目も当てられない、 という状態になりうる。
ぶっちゃけハヤリモノなんて一時流行って廃れるから、 ハヤリモノって言うんだし、流行を過ぎてそれ普通になるのなら、 それは鉄板と呼ばれるモノなんだと思う。
まあそんな理由で僕は流行りものを流行だという理由で取り込む、 というのは、趣味以外では行うべきではない、と思っていたりする。
まあそれはそれでおいておくとして、僕はもう一つ、 流行り廃り以外に、プログラミング言語を選ぶ基準として、
作り上げたいものに、何が最適か 、という理由で、
言語を選ぶ、という風にした方が良いと思っている。
最初の方でも言ったけど、各種プログラミング言語には、 やっぱ向き不向きと言うものがあって、言語そのものや、 ライブラリの充実具合で、多少向いているものが違う。
例えば僕の愛用してる Perl は、最新鋭のライブラリ等を使う際、 微妙にバインディングがなかったりするし、 Ruby や Python と言った言語では、 バージョン間の後方互換性が微妙なかったり、 PHP に至ってはビルトイン関数がカオスだったりと、 やっぱり言語によって、弱点が違ったりする。
先の例として上げたケッタイなリアルタイム掲示板でいうと、 リアルタイムなスレッド更新、みたいな処理行う際、 socket.io native ではない他言語だど、 どうしても面倒な所があるし、特に僕がよく知っている Perl だと、 socket.io を使うに当たって、実績のある信用できるライブラリ、 というのがなかったりする。
逆にテキスト処理をメインに据える場合、やっぱりそれは、 その用途で歴史のある Perl が有利というかやりやすいし、 正規表現シンタックスが言語組み込みでない Python とかでは、 テキスト処理、というのは、ちょっと面倒だったりする。
まあそんな感じでプログラミング言語には向き不向きが有り、 用途によって向いている言語を選べば良い、と思ってる訳だけど、 その際重要なのは、プログラマーであるのなら、
メジャーなプログラミング言語は不自由なく使えなければならない
ということが言えるんじゃないかと思う。
というか、プログラマー名乗るなら、 複数の言語を使えて当然じゃね? と思う。
まあこれが言語習い始めた初心者ならいざ知らず、 高度なプログラミングができるのに、 他に言語扱えません>_<; じゃお話にならないし、 生き残れもしないと思う。
もっとこの点は僕は他の人のコトをとやかく言えないというか、 僕が使える言語って、いまの所、
- Perl
- Python
- JavaScript
ぐらいで、静的言語あたり扱ったことがないので、 本職にプログラミング据えるなると、 ちょっと生き残れないかなーと思ったりする。 まあ僕の場合、言語云々前に、病人かつ障碍者でもあるので、 この辺り改善しないとどうにもならんのですが>_<*;
ま、言語初心者とか、あるいは完全な趣味となら、 扱える言語が一つだけ、で問題ないと思いますが、 やっぱり自分の幅を広げる、という意味では、 他の言語もいくつか扱えるといいんじゃないかなーと思います。
まあ長くなったけど、言いたいコトをまとめると、
- プログラミング言語は用途に合わせた向き不向きで選べ
- 流行りものを仕事に流行り理由持ち込むべからず
- 生き残りたいなら、言語は複数扱うべし
と言ったところでしょうか。
今回の記事はまあ、なんとなく思いついたこときっかけに、 自分の考え深めるため書いてる感じで、なんとなく、 取りとめがなような気がしますが、僕の今日考えたコトは、 ざっこんな感じです。
まあ僕の考えが他の人にも通ずる所が有るのかはわかりませんが、 今日の所はこんな感じで、記事を終えたいと思います。
以上、今日の個人的思考でした。
#FIXME