誰にでも好き嫌いはある
その人の経験とか、単純に思想とマッチするか?みたいな基本的なことでプログラミング言語に好き嫌いが生じることはままある。かくいう自分も好き嫌いというかそれぞれの言語に思い入れはある。
BASIC
BASIC を語らずして自分のエンジニア人生は語れないといっていいほどBASICには感謝している。BASIC言語って昨今のプログラミング言語と態様が大きく異なっていて、同じBASICでも様々な方言が存在していた。近年で言うとJavascript がブラウザによってサポートしているメソッドやAPIが異なるのに似ている様な気もするが、大体そんな感じでコンパイラとか実行環境とかが方言を採用していてBASICのソースコードだからといって必ずしも動くとも限らないという場合があったりとかで結構苦労した(それが楽しかったけど)。当時はGOTO文使うのに何ら抵抗なかったなあ・・・。
.net
.net をプログラミング言語として取り上げるのはいかがなものかと思うが、個人的な歴史としてはBASICの次に触れたプログラミング言語は.net のいろいろだった。C#, VB, Fとか触ってた気がするが、一番記憶に残っているのはVBで間違いない。デスクトップアプリケーションを作るのが楽しかったし、VisualStudioというIDEに初めて出会った言語でもあった。 Microsoft のVisualHogeには今もプロとしてVisualStudioCodeでお世話になっていて感慨深い。当時は中学生だったか小学生だったかよく覚えてはいないけど、VBのバージョンと .net 版VBのバージョンに苦労した覚えがある。古本と書くと .net
版じゃなくて VB
だったりして参考にならないときもあった。
perl と php
perl と php には高校時代に出会った。すごく楽しかった。やっぱりインターネットで動いてるページを自分でも構築できることの楽しさがすごかった。でも最近流行ってるフルスタックフレームワークとかと違ってミドルウェアを別に用意する必要があったりで、大変なこともあった。でも、今自分がミドルウェア層のことをある程度理解出来るのはこれらの言語のおかげでもあるんだよなあ。
ちょっと脱線するけど、当時サーバー用LinuxディストリといえばRedHut系列だった。もちろんお金のない学生の自分とかフリーウェアを使いたい企業とかはCentOSにめちゃくちゃお世話になってたと思う。でも今考えるとあえてRedHut系を使うご時世でもなくなっていて、時代だなあと感じる。実は当時自分はクライアントOSとしてVineLinuxを使ってて、あんまりその辺の動向に関心が無かったのはまた別の話。
CとJava
あえてまぜこぜに語るけど、CとJavaには大学時代に出会った。正確には、C++とかC#にはもっと前に出会っていたけど、純粋なCを学んだのは大学だった。ここで始めてオブジェクト指向とはなにかとか手続き型とは何かとかをちゃんと学んだ。プログラミング言語にパラダイムがあることを明確に理解した。CもJavaも嫌いじゃないけど、書きたいと思える言語ではなかったなあと正直思う。これは正直自分の思い出補正が大きいのかもとおもっていて、今更漢字ドリルやりたくないよね?みたいな感覚に近いのかも知れない。もちろん現役でCとかJavaが本番で動いている現状は知っているし、それらのプロダクトを卑下するつもりはないけど、どちらかというと伝統的なソフトウェアと思う。
Python
個人的にスクリプト言語を真面目に書いた初めての言語。これまでにphp とかperlとかやってても出番限られるし、汎用的に使う感じじゃなかった。でも研究室でPythonに出会ってから考えが変わった。これまでCとかで書いてたスクリプトをPythonで書くようになった。実は恥ずかしい話でしかないんだけど、Pythonを学ぶまでインデントがプログラミング言語に与える影響ってあんまり考えた事が無くて、当たり前に入れるものだと思っていた。BASIC時代のソースコードはインデントがないものが殆どで(たまにラベル毎に振ってあったものもあったような無かったような)、VBとかから使ってたけどIDEがいい感じにしてくれちゃってたので全く細かく気にしたことなかった。そういう意味ではPython特に違和感なかったけど、正直インデントでブロックを形成する思想は興味深いよね。
Ruby
これは明確に書いておこうと思うけど、一番嫌いで一番好きで、一番僕をエンジニアにしてくれた言語。初めて僕をプロのエンジニアとしてお金を稼がせてくれた言語だし、そのことに関してすごく感謝してるし、パラダイムに対しても共感できることが多い。でも、一番親しみやすすぎて、困ったなあと思うこともある両面を持つ言語でもある。自分が書くだけだったら正直これまでのあらゆる言語よりも楽だと思う。人が書いたコードも非常に読みやすい。自然言語の流れをコードに落とし込もうという雰囲気も感じるし、これまでに出てきたあらゆる言語のいいとこ取りを目指した言語のように感じる。でも、だからこそ、困ったこともあって。Rubyだけになれると他の言語をたまに書いたときに動揺することがあったり、新人エンジニアと話す時にRubyエンジニアだと前提の欠如を感じたりすることがある。便利さを当たり前に享受しすぎてる感があるんだよなあ。まだ自分自身はそれがいいか悪いかは断定できるほど経験は無いんだけど、そういう意味で一番好きで、一番嫌い。でも感謝している度合いはVBと同じくらい感謝していて、僕をエンジニアにしてくれた言語として僕の歴史から語らずにはいられないかなあと思う。
ソフトウェアエンジニアのみんなと共有したいこと
結構エンジニアだと、自分が採用している技術が最高と思う傾向があると思う。自分が使っている言語に誇りを持つことは重要で、それが言語自身を成長させるし、言語の良さを引き出していくと思うけど、だからといって他の言語を卑下してはいけない。嫌いと思う言語があるのは結構。僕もJavaとかperl, C#とかは正直好きじゃない。でも、嫌いな言語から学べることは多いし、将来嫌いな言語が採用しているパラダイムが主流になることもあり得る。そんなとき、かつてのライバルだったけど仲良くできるな~と思えるか、いつまでも決別してガラパゴスエンジニアになるかはその人次第だけど、少なくとも自分はそうなりたくないと思ってるから、自分と同じ考えを持ってる人には食わず嫌いとか嫌いなものを卑下するのは避けていった方が未来につながるんではないかなあと思っているので伝えたい。
古くさくない?
正直自分の経験って古くさいんだけど、年齢の割にじゃない?って言われてて、その辺は生まれ育った田舎とISDN公衆電話、フリープロバイダらへんの話と一緒にまた別のエントリにしたいな。