だるろぐ

明日できることは、今日しない。

文系のおっさんが主要なプログラミング言語8種をざっくり解説

f:id:daruyanagi:20160701180036p:plain*1

経済学部だからプログラミングはまったくわかんないんだけど、なんか流行っているみたいなので。所詮うぇーぃな文系だから、内容の正しさは保証しないよ。っていうか、読んでる君らの方がよっぽど知ってるよな。

C

宗教で言えばユダヤ教。世界三大宗教のうちの二つの祖先にあたる。ついでにいうとその一つは C++ で、これはキリスト教に相当。もう一つは Java でこれはイスラム教に当たる。別にラマダーンとかハラールとかジハードとか関係ないけど。

旧約聖書を読まずに十字を切っても構わないけど、読んだ方がより理解は深まるよね、みたいな位置付けの言語(アセンブラは死海文書か?)。組み込み機器にひっそり使われていることもある。神が細部に宿るようにね。

ちなみに A 言語や B 言語、D 言語もある。E 言語がないのは“いい言語”と呼べるものは決して存在しえないことを表してのことだという。理系にしてはシャレがきいている。

あと関係ないけど、ググラビリティが低いのなんとかならんかな。後発なのにそのあたりを考えなかった Go とかなに考えているのかさっぱりわからん(golang でいいのか)。

C++

オブジェクト指向”というプログラミング言語で“モノ”(とくにボタンなんかの UI 部品を表すのにピッタリ)を表現するための技法が導入されたことにより、“バベルの塔”レベルの複雑なソフトウェアが記述できるようになった。複雑怪奇な進化を遂げており、そのうち神の怒りに触れて意思の疎通ができなくなる予定は未定。

ちなみにおじさんは昔 BeOS という OS が好きだったのだけど、API が(当時はまだ)分かりやすいシンプルな C++ になってて感動した(コアは C 言語だったらしいけど)。

// BeOS はクラス名がみんな B から始まる
BButton*  button = new BButton(); 

今でこそ当たり前だけど、HWND CreateWindowEx(DWORD dwExStyle, LPCTSTR lpClassName, LPCTSTR lpWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam); とかやってた時代よりは幸せになった。

ちなみに、C++ と同じようなコンセプトの言語に Objective-C というものがある。Smalltalk っぽくてオブジェクト指向的にはこっちの方が正統派っぽい(?)けど、なにせ文法が気持ち悪すぎたので、そういうのが好きそうな Mac に採用された。最近は反省して Swift という言語の採用を進めているという。

Java

初めて触ったときは「いちいちクラス書くのだるい」と思った。ただ、C/C++ のようにいちいちメモリ管理のことを考えなくてもよいのはいいところ。これは使わないメモリを片付けてくれるルンバのような機能(ガベージコレクション、通称ガベコレ)を言語が搭載しているから。ルンバの挙動を把握していれば、Java はもっとうまく扱えるようになる、らしい。ルンバのために床をきれいにするようになって、べつにルンバを使わなくても部屋が快適になるみたいなあれかな。

また、中間言語へコンパイル+仮想マシンで実行というスタイルをとっており、この仮想マシンで動作する言語がいっぱい量産されている。一時期 Java の進化が停滞していたみたいだから多少はね? 最近 C# の LINQ みたいなのが使えるようになったらしい。

C#

かつて Delphi という神 IDE があった。IDE とは統合開発環境のことで、プログラマーが念じると、代わりにソースコードを書いてくれる。「い……い……いんなんとかさん……」
「ほいほい、Integer な。書いといたで」
Delphi は古代ギリシャにおける託宣の地だから、とてもいいネーミングだと思う。IDE よ、我にあのメソッドの名前を授けたまえ……。

ただし、この Delphi を使いこなすには Object Pascal(今は Delphi 言語というのかな?)というあまり使われていない言語*2を習得する必要があるうえ、Windows でまともにプログラミングをしようと思えば C 言語の API を Pascal に脳内変換しなければならないという大問題があった。ローマ人がわざわざギリシア語の言い回しを取り入れながらラテン語の本を書く感じやね。

というわけで、「Object Pascal を C 言語風に書けるように」したのが C# 言語。生みの親(名前読めへん、へるすばーぐ?)がとても賢い人なので、年齢を重ねるにつれてとても使いやすい言語になっていった。「with 文導入しないのはクソ」とか失礼なことを言っていた昔の自分をぶん殴りたい。

あと、昔は Java のマネだと言われたこともあったけど、今でも言ってるヒトはだいぶヤバいから敬して遠ざけた方がいい。

JavaScript

Web ブラウザーで使えるので大人気だけど(最近はサーバーでも使えるぜ!)、なんだかフニャフニャしてて僕は苦手*3。プロトタイプってのはちょっとわかった気がするけど、「この this はなに?」って聞かれても絶対間違う自信ある。

でも、なんかいろいろ進化して使いやすくなってるみたいなので、いずれがんばって覚えたいな。TypeScript とかも使えるようになりたいよねー。CoffeeScript はよくわかんないな。いいらしいけど。

なお、うっかり“Java”と略して呼ぶと、ドラム缶にぶち込まれたうえで大阪湾に沈められる。そもそも、そんなに似ていない。

Ruby

これもフニャフニャしているけれど、使っていてなんか楽しい。謎の黒魔術を使うことが可能で、これを駆使したフレームワーク“Ruby on Rails”の大ヒットで一躍メジャーになった。今でも熱狂的なファンが多いような気がする。おっちゃんも昔少しだけやった。

あと、Ruby の創造神は日本の出雲の方(おおざっぱ)におわす。神だから当然だね。

PHP

PHP: Hypertext Preprocessor の名前の通り、HTML をごにょごにょするための言語。これを操る人をペチパーと呼ぶ。で、結局最初の P ってなんやねん。

実質 WordPress のために存在する言語。あ、石を投げないで! 

組み込み関数の名前のセンスがすごく悪いと思うのは僕だけかな? なんちゃらすぺしゃるチャー!ってやつ。

Python

世界的には Ruby よりも使われている言語。きっと“おっぱい”と響きが似ているからだと思う。ぱいぱい。

自分は使ったことないけど、インデントでほげほげするのは知ってる。あと 2.x と 3.x で割と違うんだっけ、勉強するなら新しいほうなのかな。人工知能とかで使うっぽいね。

番外編

Prolog

大学の時に計算機工学基礎論みたいなのと履修したらやらされて面食らった。当時は「これが何の役に立つんだろう?」と思っていたのだけれど……ソクラテスが人間であることを知るのにとても役に立つ。

Lisp

カッコ()の使い過ぎで滅びたとされる。

Perl

ラリー・ウォールによって開発され、とほほ氏によって日本に広められた言語。一周回って文法がカッコいいなーって最近思ってる。ただ、今更覚えたくはない。

COBOL

金融業界では割と使われているらしい古代魔法語<ルーン>。絶滅危惧種だという人もいるけれど、実際に遣い手に会って言葉を交わしたことがあるので、まだ生き残っている人がいることはこの僕が保証する。今から覚えておくと、有名な企業に宮廷魔術師として迎え入れられることがあるかも。

あと、科学技術計算の分野では FORTRAN というのもある。COBOL とは僕の中で「顔良と文醜」みたいなペア。

BASIC

数学の教科書の最後の方に載ってるヤツ(少なくとも自分の時代はそうだった)。

今時あんなのを書く人はいないが、VBA や Visual Basic をやっている人はまだまだたくさんいるし、こいつらは Windows 10 でもちゃんと動作するらしい。中の人に(`・ω・´)ゞケイレイ

あと、Microsoft Small Basic はカメが歩くプログラムを最速で書けて便利。

関数型言語

いろいろあるっぽいけど、変なこと言うと殺されるので割愛。ほっといてもそのうちエッセンスだけ C# に取り込まれるから、鼻でもほじりながら待てばいいや(ぁ

*1:無料の写真: コード, データ, プログラミング コード - Pixabayの無料画像 - 944504

*2:と言ったら石が飛んできそうだけど。Pascal そのものは偉大な言語だ

*3:フニャフニャっていうのは静的型付けじゃないときに感じるもにょもにょ感を表したもの