酔っ払った勢いで書くおすすめ言語
MS-MASM
マイクロソフトのマクロアセンブラ。マクロ機能があまりにも強力で、アセンブラでありながら高級言語を使っているかと錯覚するような使い方が出来る。今であればVisualStudioでVC++をインストールすると、ステルス的に勝手にインストールされる。アセンブルするのに必要なコマンドはml.exeだ。
私の記憶だとMASMはもっと昔だとMS-DOSの拡張機能セットに付いてきた気がする。30年ぐらい前の話で記憶が曖昧になっているので、そのあたりの突っ込みを歓迎したい。あの頃はMS-DOS上で動くFM音源ドライバとかMIDIドライバとかを作っていた気がする。その手のネタはIOとかComputerFanとかいう雑誌に記事を投稿したが今となってはそんな雑誌、誰も知らないかもしれない。
Windows時代では一般の開発者がMASMに触ることは稀である。しかしC/C++開発者であれば、アセンブラを触ることによって得られるメリットは大きい。
例えばコード領域に変数を用意して、そこに書き込んだらどうなるかというような実験が気軽に出来る。もちろん書き込みに対する保護がかかっているので定数しかおけないという事実に気づかされる。割り算をするときに、商と余りが同時に返ってくることに驚愕するかもしれない。C/C++から引数を渡すときにスタックにどう積まれて、どうやって引っ張り出せば良いのか理解したときには感動を覚えることだろう。いやMASMにはそのあたりを隠蔽してしまう高級機能が付いているので気がつかずに終わる可能性もある。あまりにも強力な言語だ。
Webシステムを開発するような用途にははっきり言って実用性は皆無だが、知識に飢えている面々には絶対にお勧めする。
C/C++
高級言語の元祖であり、その存在がなくなったら、その他の言語も一緒に心中するしかなくなるという恐るべき言語である。OSがC/C++で組まれ、様々なコンパイラがC/C++で組まれ、様々なインタプリタやスクリプトの実行プログラムがC/C++で作られている。その存在が消失したら、IT系の業界は地上に止まることは出来ず、天界にその住居を移すしかなくなるだろう。
C/C++は何をしたらヤバいのか、リソースの管理を怠ったらどうなるのか、そういったものを全てを分からせてくれる。さらにアセンブラと併用することによってCPUが何をやっているのか、ある程度は理解できる。そしてメモリの確保を自分でやることによって、リソース資源の有り難みを実感できるのだ。その神髄に填まると「ガベージコレクション?何その気持ち悪いの」という気分にさせられる。
COBOL(おまけ)
まあ、未だ使われているところでは使われている。しかし新たなプロジェクトで選択されることなど皆無だ。なぜこれをお勧めするか?理由は簡単だ。古き設計による冗長さを体験して欲しいからだ。あいでんでぃふけいしょんでぃびじょん、えんばいろんめんとでぃびじょん、でぇたでぃぶじょん、ぷろせじゃぁでぃびじょん。「何を言っているのか わからねーと思うが」、是非、これらを記述して欲しい。出来れば汎用機にジョブを投入するところまで体験してもらいたいが、汎用機は今となっては絶滅していることだろう。絶滅してるよね?え、ある?
cmd:MS-DOSコマンド&BATファイル
恐ろしいことにWindows時代になってからも使われている。MSはPowerShellを推奨しているが、未だに使われている。無くなったら色々なシステムが窮地に立たされる、そんな存在だ。文法はわかりやすいとは言いがたく、ループとか分岐が必要になってくると記述するのに気が重い。最大の欠点はUNCパスの扱いに問題があり、カレントディレクトリがドライブ上にマウントされていないとBATで組んだコマンドは誤作動する。最近困ったのはWindows版Node.jsのnpmがBATで組まれていて見事誤作動した。一応解決方法が無くもないのだが、そういったものに遭遇するたびに対処するのは面倒くさい。しばらく書かないとループなどの文法を忘れ、思い出すのに苦労する。しかしWindowsがらみのシステムでは、なんだかんだで必要になってしまうのだ。
PowerShell
この野郎と思うしか無い。なんでこっちの方向に進化した?求めていたのはそれじゃ無いんだ。cmdをもっと使いやすくして欲しかったと色々思うことがある。しかしWindowsやMSのサービスがらみの機能をいじるのに、PowerShellでしかコマンドが提供されていないものが多々あり、他に選択肢は無い。ビジネス版のOffice365で、あるユーザのOneDriveの不具合を解決するのに、MSのサポートからPowerShellでコマンドによるリカバリを要求された。目的の場所へたどり着くためのモジュールと認証手順はどこかにメモっておかないと、どんどん時間を吸い取られていく。恐怖としか言い様がない。
sh/bash
ほとんどのUNIX系で標準採用されているshellスクリプト。UNIX系のコマンドとともに、システムを立ち上げる部分は最低限記述できるようになっておくことが無難だ。大勢を占めているので、俺はCShell派だから必要ないとも言っていられない。昔はFreeBSD&CShell派だったが、Linux&bashという時代の波にのまれたのは責めないで欲しい。
まとめ
猜疑心を抱いてはいけない。お勧めはお勧めなのだ。