主要なプログラミング言語5つでのろける
最近、主要なプログラミング言語について語るのがはやっているというウワサをきいて、たまには流行に乗っかってみることにしました。まあ、とうに廃れているような気もしますが、そこらへんはお気になさらず。
しかし、「主要」ってどういう基準で選べばいいのかわからないので、とりあえず、「この子、好き~」と思った、という基準で選んでみました。オタクにとって、好き嫌い以上に重要な基準なんてないのです。
1.C言語
わたしが最初に習ったプログラミング言語はFORTRANで、次はBASICで、3番目がC言語なんですが、これには本当に苦労しました。
「FORTRANの仕事がないからCをやってよ」と言われて、本を買って読んでもわけがわからず、先輩に言われたお題でコードを書いては、「おまえはまだわかってないな」とたいしたアドバイスもなく突っ返され、毎日毎日「何がわかってないんだ」と考え続け、ある日、突然するっと何かが頭の中でつながって、「そういうことか!」とコードを書き直して先輩のところに持っていったら「ようやくわかったか」と言ってもらえました。
その時に「なんかプログラマでやっていけそうな気がする」と思うと同時に、「わたしは何もわかってなかったんだな」としみじみと思いました。
ポインタとかアドレスとかビット操作とかが理解できたら、「プログラムがどう動いているのか」をビットのON/OFFの流れという形でイメージできるようになって、そういう一番底辺なところが納得できるようになってようやく、それまでごちゃごちゃだったものがきれいに整理整頓できた気がしました。
わかってないのに、なんとなくできたからこれでいいんだろ、と思ってたけど、「なんとなく」でたどりつける場所は意外とつまらなくて、わかったうえでたどりついた時の方が断然おもしろいものです。そういう意味で、C言語はわたしにとって、プログラミングの楽しさを教えてくれた言語です。
そのような経験があるので、一番、最初に習う言語としてC言語を推したいところなんですが、いきなり挫折しかねないのでちょっと悩みます。
2.C++
C言語の仕事ときいてたのにC++のプロジェクトに放り込まれて、「これ貸してあげるから、なんとか覚えて」とStroustrupのぶ厚い本を渡されて、結局、その本を10周くらいしてなんとか使えるようになりました(←後で、なんであんな一番むずかしい本から入ったの、と言われた)。
最初は大混乱でした。そもそも「オブジェクト指向」って意味がわからない。プログラミングに「指向」ってなんなんだ、とぶつくさ言ってた記憶があります。
今、プログラマやってる人たちは、オブジェクト指向言語から入ることが多いようなので、最初っからそういうものだと思っていればどうということはないのかもしれませんが、10年以上、C言語でたいして困ることなくやってきたわたしにとって、継承とか仮想関数とか、何がそんなに便利なのかが納得いかなくて首をかしげていました。
納得いかないままでプロジェクトがいったん収束して、ちょっと暇になった時期に当時のリーダーさんが「これを読むといいと思うよ」と、とあるツールライブラリのソースコードをみせてくださいまして、それを読みながら、自分なりにUMLもどきを書いてみることで、全体像がみえた時、その構造のムダのない美しさに、わたしは本当に感動しました。
ああ、オブジェクト指向というのはコードを美しくするためにあるのだな、と納得できて、それは、わたしをプログラマという仕事にのめりこませることになりました。
そんなわけで、今、わたしがうきうきとコードを書いているのは、C++のおかげなのです。だから、「最愛」の言語なのです。
習得難易度が高いわりに求人があまりない(難易度が高いから人を集めにくくて採用されないのかも)ので、若いプログラマたちにおすすめしにくいんですけど、わたしが今やってる仕事をいただけてるのは「C++ができるから」というのが最初の理由だったんで、希少価値があるという点で有利に働くこともあると思います。
3.Excel VBA
去年、Excel VBAをがしがし書く機会があったんですけど、これが意外にテンションあがるんですよ。なんというか、図画工作的な楽しさがあります。
たまに不思議な動作をして、「この書き方でこの動作はおかしいだろ!」とわめきたくなるようなこともありますけど、そこをうまくまるめこんで思い通りに動いた時の楽しさときたら!
あと、Excelマクロを依頼してくるユーザさんは、たいていはExcelユーザなので、注文内容が最初から具体的で、無理なことを言ってこないので、仕様定義が楽な印象があります。これは他の言語にはない利点だと思います。それに、環境構築が楽だし(笑)。
10年以上前に「ずっとプログラマを続けていきたいんなら、意外とExcel VBAはおすすめだよ。長く小銭が稼げる」と言われたことがあるんですが、今になって、なるほどそうかもしれないな、と思います。
年金がもらえる年になったら、Excel VBAで小銭稼ぎしながら暮らしたい!
4.Transact-SQL
長いことわたしにとってプログラミングとは「流れ」で考えるものでした。AをBにたどりつかせるためには、何をどういう手順で流していけばよいのか、という。
しかし、SQLは違ったのです。
わたしが思うに、SQLは「塊」で考えるものです。データという塊をくっつけてちぎってひきのばしてけずって「はい! 一丁あがり!」みたいな、粘土を整形する感じです。
まあ、これはわたしのイメージなので、読んでる方にとっては「おまえは何を言っている」でしょうけど、なんとなくそういうイメージができあがってみたら、SQLを書くのがめっちゃ楽しくなりました。特にチューニングと称してSQLをこねくりまわしている時の楽しさときたら!
本音を言えば、DBを使うシステムなら半分くらいはストアドプロシージャで組みたいです。かなり本気で。
ちなみに、SQLの悲しいところは、SQLだけの求人がほぼない、ということです。たいてい他言語との抱き合わせです。SQLだけで食べていくのは相当、厳しいと思います。
5.Visual Basic .NET
Excel VBAを挙げた後にVisual Basicとか、おまえはMicrosoftの回し者か! と言われそうですな。
いろんなことがとっても楽です。気安いです。その割にかなりいろんなことができる子です。でも、どういうわけか人気がない......。
でも、わたしは単純にVisual Basicが好きだなあ、と感じるのです。そういう「なんか好き」という感覚は、わたしがもっとも大事にしているものです。
VBの難点は、プログラマ内でdisられやすいということですかね。悲しいです。
以上、5言語をあげてみました。ちなみに、並び順は、習得した年齢の順になってます。
「言語は思考を規定するか」という議論がありますが、新しい言語との出会いで思考の枠が広がることはあると思っています。わたしは、C言語、C++、SQLと出会った時に、見えていなかったものが見えたような、わたしの中の世界が広がったような、そんな気がしました。
気がしただけで何も変わってないのかもしれないけど、変わったような気がした時の高揚感というものは、半世紀のわたしの人生の中でも格別に幸せな体験です。
「ありがとう♪ ありがとう♪ プログラマになってよかったよ~♪」と歌いながら踊りたいくらいのテンションになります(←歌わないし、踊れないけど)。
今回あげた言語を習得した年代別で分けてみると、20代⇒C言語、30代⇒C++、Excel VBA、40代⇒SQL、Visual Basic .NETなので、50代でも1言語ぐらいは素敵な出会いがあるんじゃないかな......あるといいなあ......。
コメント
仲澤@失業者
おつかれ様です。老人プログラマの仲澤です。
6809、Z80のニーモニックやCASIOのfx電卓を除けば最初の言語はN88BASICでしね。それも(86)の方。
でも、処理速度が間に合わなくてすぐに8086のアセンブラを勉強しなければなりませんでした。
それが済むと今度はUIが間に合わなくなってBASICで書いた部分を全てLattice-Cで書き直し(vv;)。
それをMS-C(多分ver4くらい)にポーティング。当然DOS(16bit)ベース。
さらにそれをWindows 2.1上にポーティングってのを20代でやりました(ハァハァ)。
30~40代はWindows一辺倒。そしてVisual Studio登場。
C++言語に対応してくれました(テンプレートは使えんけど我慢しなってな仕様(しくしく))。
でも、へ~なにこれ、むっちゃらくちんじゃん。 ってことで、非常に助かりました。
50代直前にJavaを勉強しなおして、Androidプログラム(BoatNAVIをよろしく)。
最近はObjective-Cと、Swift使ってiOSとOS-X勉強中。
え~と、これで5こくらいかな。まぁ足りなきゃまだいくらでもあるぞ(大昔のやつだけどね・・笑)。
elcaminoreal255
Z80ニーモニックは言語じゃないんですか!ショック..0x76...
ath
SQLの操作対象が塊、というの、いい説明ですね。新人教育に使わせていただきます。なお、言語を語るはやりだったたスクリプト言語の方面じゃないんですかね。RubyとかPythonとかJSも、語りたがる人が多いから。
Buzzsaw
VB6でそこそこ仕事できるようになったころVC++をインストールしてみたんですが、メッセージボックス出すだけなのにいくつかのファイルが必要で、怖くなってあきらめたことがあります。いまだに恐怖ですね。
VB.NETは私も大好きです。ご無沙汰ですけどJavaも好きかな。コレクション系のAPI充実している昨今、プログラミングがより楽しくなりましたね。
一方、PHPはもう御免こうむりたいです。なんかいやです。
50半ばのおじさん
ハンドアセンブルを言語と言わなくて何を言語と言うんだ。
ってぐらい私は古いです。
ひでみ
こんばんわです。ひでみです。
コメント欄がにぎやかなことになってておもしろいです。
皆さん、それぞれの言語に、思い出や思い入れがあるもんなんですね、やっぱり。
言語の話というと、どの言語が優れているのか、みたいな話が多いんですが、それは情報としてはありがたいけど、単純に、「こう感じてる」とか「こういう思い出がある」という話もききたいよなあ、と常々思っていて、こんなコラムを書いてみたんですが、そのかいがありました。
匿名
世の中の大半のシステムはどの言語で作ってもできるものが多いので、
はっきり言って、開発言語の選択は、現行システムからの移行コストが安いか、
稀に全くの新規の場合、発注側の趣味や主観で決まってしまう。
これはDBの選択に関しても同じ。
VB6のシステム
→言語体系似てるからVB.netにしよう。
C#に変えるのはリスク高いからやめておこう。Javaはもってのほか
VB6のシステムのつくりが悪ければVB.netでもかなりの工数はかかるが
イメージで決めてしまうのがほとんど。
Webシステム
→Webサーバーはセキュリティーホールが気になるからWindowsはやめておこう。
→必然的に開発言語はJavaだよな。
実際は、.Net=Windowsで動かないではないのだが先入観で決めてしまう。
DBの選択
→扱うレコードが多いから、SQLServerよりOracleの方がいいでしょ。
パフォーマンスが心配だし。
いつの時代のSQLServerと比較してんだ?
今ほとんど変わんないぞ。
ということで、需要が多い=優れた言語、技術ということはほぼあり得ない。
世の中の情勢に合わせて、仕事がある言語をやっとくしかない。
そして、ピークの時にあわてて習得してももう遅い。
一時JAVA一色くらいに言われた時もあったが、現状はそうでもない。
案外、ASP.netが盛り返したり、Webを必要としてない個所はいまだにVB6が動いてたりする。
もともとJAVAから入った人はそのままJAVAで、
VB6から入った人はVB.netで、
すみわけすりゃいいだけ。
互いにdisって宗教論争してもほとんど意味はない。