プログラミング言語は適材適所があって、やりたいことが増えるほど、色々な言語を使いこなす必要がある。
個人的には、実行速度が求められるときは C++、それ以外はすべて Ruby を使いたいけど、Excel の中でスクリプトを書こうと思ったら VBA(Visual Vasic 6.0 相当) を使わざるを得ないし、ブラウザ上で実行させるなら JavaScript を、リレーショナルデータベース(RDB)を操作するには SQL を書く必要がある。あとは欲しいライブラリの関係で、Perl が必要になったり。(さすがに Lisp や Scheme、Haskell など関数型言語が必要になったことはまだない(笑) )
生まれて始めて使った言語は FBASIC とかいうもので、当時はそれが大好きだったが、同じ系統の Visual Basic の仕様はどう間違ったのかかなり腐っていて、大嫌いだ。なので、未だに構文が覚えられないし、覚える気もない。Visual Basic は Micr○soft の製品と親和性が高いので使いこなしたいんだけど、スクリプト言語なのに色々不便で、使う気が起こらないんだよなあ。
JavaScript は、やってみたら意外に良い言語だった。ブラウザ上に限らず、普通に使うスクリプト言語として覚えるのも悪くないんじゃないだろうか。プロトタイプベースという、他の言語とは違うパラダイムであるところも良い。C言語の次に何かスクリプト言語を習得しようとしてる人は、JavaScript を覚えるのもいいかもしれない。
個人的に JavaScript の言語仕様はとてもしっくりきたのだけれど、これは間違いなく Scheme を知っていたおかげだと思う。色々な言語のバックグラウンドがあると、他の言語を理解するのも楽。JavaScript は Java はほとんど関係なくて、 C + Scheme という感じがしました。感覚的に。
SQL自体は悪くないが、RDBの実装依存の機能が多くて少し嫌になる。今仕事で Micr○soft製のSQLServer 2005を使っているけれど、Micros○ft は標準規格にしたがわずに独自路線を進む傾向があるので、あまり深入りしたくない。まあ無料版を使わせてもらってるし、なかなか高機能なので、文句が言える立場ではないけれど。
深入りしたくない気持ちから、SQL Server の本を買っていなかったけれど、5000円の良さげな本を会社で買ってもらったら、これがかなりの良書で大分理解が進んだ(それにしても、プログラミング関係の良書は洋書が圧倒的に多い)。Web上にドキュメントは大量にあるといっても、やはり本の形で体系的にまとめられたものは強い。本によって数時間以上の節約ができるなら、迷わずに買ったほうがいい。自分の時間を浪費するのも会社のお金を使っていることと同じことだからね。ただし、2、3000円の安い入門書は買わないこと。全く未知の分野を勉強するならそういう入門書も買ってもいいけど、会社の金は使いづらいので買うなら自分の金で。
Windows のシステムに近いことをやろうとすると、やはり C 言語が一番。会社で1万円近くする Windows プログラミングの本(Advanced Windows だったか)を買ってもらったが、内容がものすごく濃くてちょっと読みきれていない。Windows 自体はビジネスシーンでは圧倒的なシェアを誇っていて、「Micr○s○t 嫌だなあ」とかわがまま言ってられない。「こういうのってプログラムでできる?」って言われたときに、瞬時にできるかどうかを判断し、適切な手段を選んでさくっと実装できるレベルになりたい。
昔は「いちいち新しい言語覚えるの億劫だし、将来使わないかもしれないので手を出したくないなあ」とか思ってたけれど、今は色々な言語があるのは面白いし、扱える言語が増えるとできることが広がるので、最近はどんどん手を出してる。
今の会社では、仕事を与えられる時に使う言語や環境の指定がなくて、「要件を満たすもの」だけが求められる(要件自体も曖昧だったりする)。だから VB でやるのが楽だったら (嫌々)VB 使うし、無理矢理 Ruby でやる方法を調べて Ruby でやってみたり、これからも使いそうな処理だったら C++ でライブラリの形にしたり。選択の自由がある時は、まず環境を選択するところから始めなくてはいけなくて、それは結構難しいけれど、適切な選択をするために、コンピュータの上で動いているものは全て理解しようというモチベーションにもなる。(学生のときにこういうモチベーションがあったら、計算機アーキテクチャとかOSとかもっと真面目に勉強したんだけど。まあそのうちヘネシー&パターソンや、タネンバウムなど有名どころの本を買ってちゃんと勉強しなおすつもり。やっぱり洋書がいい。もちろん読むのは訳書だがw)
色々な言語を覚えるのもそうだけど、プログラマに必要なこと くらいはやっぱり必要だと思う今日この頃。そして全然足りていない自分がいるorz
プログラマとして、というよりエンジニアとしての具体的な将来像はまだないけれど、とりあえず技術に精通していればそうそう食いっぱぐれることはない(というよりは、技術に精通していないエンジニアなんて無価値)だろうから、今のうちに色々勉強しておきたい。
どんな分野をやっていても、足を止めなければきっと大丈夫だと思うから、頑張ろうと思う。
P.S
なんか色々なプログラミング言語のことを書こうと思ったら、 ちょっと違う方向に。できることを増やしていきたいと言う意味では同じことか。
いつものことだけど、何か書いているうちに派生して別のことを書きたくなるので、全体の構成に一貫性を持たせようとすると、最初から書き直さなければならなくなることが多いような(だが面倒なのでやらない)。そもそも思考は決して一次元ではないのに、文章は一次元なので、考えていることを、情報を失わずに文章に変換することは難しいと思ったり。
明日も仕事なのに、なぜ今日こんなに書いているかというと、明日の朝提出の課題があって、その現実逃避なのです > <