当記事では、これまでに私が触った14の言語の所感についてまとめています。
1. C
Cは、おそらく最も社会的に認知度の高いプログラミング言語でしょう。
私が本腰を入れて真面目に勉強した言語がCだったので色々と思い入れがあります。苦しんで覚えるC言語には大変お世話になりました。
色々と批判があるのは知っていますが、そのスッキリとした文法は好きです。
2. C#
C#は、Mirosoftが開発したオブジェクト指向言語です。元々はCoolという名前だったようですが、商標の関係からC#という名前に改名されたようです。
既に何度も議論されている通り、確かにC#はJavaと似た言語です。そしてJavaと比べると緩い言語です。以上。
3. Command Prompt
Command Promptは、大抵のWindows系OSに標準搭載されているシェル(cmd.exe)であり、当該シェルで用いられる言語を指す言葉としても使われます。
この言語は、私の知るかぎり最も醜くおぞましい言語です。とにかく文法が混沌としているうえ、読みづらく、ちょっとした記述の違い(本当にちょっとした違い)からエラーを起こし、そのうえエラーの特定の時間がかかるという、プログラミング言語の皮を被った悪意の化身です。
世の中には「クソ言語」「オワコン」などと罵倒されるプログラミング言語がいくつか存在しますが、このCommand Promptと比べれば、いずれも大変に素晴らしい設計であることが魂の底から理解できることでしょう。
4. Common Lisp
Common Lispは、最も古い高級言語の1つであるLispの方言(らしい)です。
構文は前評判通り、とにかく括弧がたくさんでてきます。それはどこか表計算ソフトの計算式のように見えます。大変に単純で、明らかに読みにくいのですが、その異様に単純明快な文法には言い知れぬ魅力があります。まるでLEGOブロックのようです。
5. Fortran
Fortranは、世界初の高級言語です。
正直、触る前はどのようなゲテモノが出てくるか気が気でなかったのですが、意外と普通の書き心地に、良い意味で裏切られました。
確かに、コメントを表すキーワードが感嘆符であったり、文字連結演算子がスラッシュ記号2つであったり、関数に渡す引数を関数内で再定義する必要があったりと、色々と奇妙な仕様はあるのですが、思っていたよりは普通です。あと、標準で1行あたりの文字数制限があったり、どこかSQLを彷彿とさせる雰囲気を醸し出しているのは興味深いところです。
6. Haskell
Haskellは、モナドでお馴染みの純粋関数言語です。
この言語を触って、まず最初に気が付くのは、この言語の開発者は何が何でも副作用を起こしたくないのだろうということです。その姿勢はとにかく徹底しており、安易に標準入出力を取り扱ってきたエンジニアは叩き潰されること間違いありません。
また、Haskellには繰り返し制御文が無いため、嫌でも再帰呼び出しをせねばなりません。最初は違和感があった再帰呼び出しも、徐々にむしろこの形こそが正しいのだと思えてきます。どこか魔性の魅力というか、妖しい美しさがあります。
さらに、条件分岐周りの処理は美しく、とても優美で読みやすいです。
難易度は高いですが、一度使ってみることをおススメします。
7. Java
Javaは、Sun Microsystemsが開発したプログラミング言語であり、周辺技術も合わせた総称として使われることもあるでしょう。
私が最初に取得したプログラミング系資格がJava SE8 Silverでした。結局2回落ちて、3回目にギリギリ合格できましたが、そのためにJavaに対してはあまり良い感情を持っていません。
実際、言語仕様面で私の感性と合わない部分が多々あり、触りたくない言語の上位に食い込んでいます。良い言語だと頭では分かってはいるのですが、どうにも感情的に許容しがたいです。
8. JavaScript
JavaScriptは、主にWebコンテンツのフロントエンドで用いられる言語です。
プログラミング言語の系譜的から見ると、Fortran系(手続き系)が7割、Lisp系(関数系)が3割くらい混ざっているようです。かつてはクソ言語などと呼ばれる時期があったようですが(今でも言われている?)、ES2015以降かなり改善されました。
また、主要なプログラミング言語のなかでは唯一、プロトタイプベースのオブジェクト指向プログラミング言語でもあります。
個人的に最も好きな言語です。オブジェクトという概念を教わったのもJavaScriptからであり、かなり相性が良いのかもしれません。
9. JScript
JScriptは、WSHという実行環境上で動作可能なJavaScript系言語です。ES3をベースにMicrosoft側で独自拡張が行われているようです。
巷では、ほぼ完全にES2015以降の仕様で書くようになっていると思いますが(トランスパイルしてES5にするケースは除く)、ES5よりもさらに古いES3を使ってみると、古いネット記事で見かける「JavaScriptはオモチャみたいな言語」「JavaScriptはクソ言語」という批判に共感できるようになります。
歴史的価値はあると思うので、Web系エンジニアは、一度はJScriptで書いてみると何か得られるものがあるかもしれません。
10. Kotlin
Kotlinは、Javaと互換性のあるJVM系言語です。
Better Javaと評されることがあり、Javaの改良版のような立ち位置にあります。その書き心地はどこか、JavaとTypeScriptとPythonを混ぜた感じがします。
Javaよりも良いのは間違いないと思うのですが、Javaと比べて明確に良いかというと怪しいところもあり、何とも評価の難しい言語です。Javaを使い続けるなら使い続ける、Kotlinに移行するなら移行する、とハッキリ決断することが大事でしょう。
11. PHP
PHPは、Webコンテンツのバックエンドで使用される言語です。
CとPerlに影響を受けているらしく、比較的多くの開発者にとって書きやすい言語の1つではないでしょうか。ただ、いくつか変な仕様が存在しており、その点は厳しく批判の対象になっています。
12. PowerShell
PowerShellは、Windows 7以降のWindows系OSに標準搭載されているシェル(powershell.exe)であり、当該シェルで用いられる言語の名称でもあります。
前身たるCommand Promptと比較して全面的に優れており、Commad Promptはもちろんのこと、BashなどのLinux系シェルよりも優れているとさえ言えます。.NET Framework上で動作し、当該フレームワークのAPIを利用できるため、シェルの皮を被った.NET系言語と呼んで差し支えないでしょう。
ただし、さすがはCommand Promptと同じMicrosoft製のシェルというべきか、コマンドレットを始めとして「どうして、そんな仕様にしたんだ……」とガックリ肩を落とさざるをえない仕様が散見されます。進化したにはしたのですが、どうにも真っ直ぐ育たなかった感は否めません。
13. Python
Pythonは、オフサイドルールが特徴的な言語ですね。Pythonエンジニア認定試験はネット情報通り、本当に簡単でしたね。もうちょっと難しくしたほうが良い気はします。
スッキリとした文法は書いていて心地よいのですが、どこかPHP感のある単語遣いが気になります。
14. TypeScript
TypeScriptは、JavaScriptのスーパーセットとなるAltJSの一種です。
変数や関数にデータ型を指定できるので安全なプログラムを組むことができるようになっています。JavaScriptの弱点であるプログラムの規模が大きくなるほどに開発が難しくなるという部分を補完してくれます。
都度トランスパイルするのは面倒臭いので、ブラウザから.tsファイルを読み込めるようになってほしいですね。
15. VB 6.0
VB 6.0は、Microsoft社製IDEであるVisual Basicシリーズの第6のメジャーバージョンであり、また当該IDEに搭載されている言語の名称・バージョンでもあります。
まさか令和の時代にVB 6.0を触ることになろうとは思いませんでしたが、良くも悪くも面白い経験ができたと前向きに捉えることにしています。
後継のVB.NETと比較すると書きにくいところが多く、使っていて疲れる言語です。また、IDE自体の出来も、さすがに最近のIDEやテキストエディタと比較すると、使いにくいことこの上ないので本当に辛みが深かったです。
16. VBScript
VBScriptは、正式にはMicrosoft Visual Basic Scripting Edtionと言います。Visual Basic for Applicationsといい、どうしてVB系の言語は名前が長ったらしいのでしょうか。
一見するとVBAの亜種のように思わるかもしれませんが、その実態はかなり異なります。Wikiepdiaによれば、VBAはOffice製品に組み込まれたVBである――つまり、VBとVBAにはあまり違いがないようですが、VBScriptはVBから多くの機能を削って実現した、文字通りの軽量言語です。VBScriptとVBAとでは、明らかにVBAのほうが言語として優れています。
しかも、VB.NETに改良される前のVBの悪い仕様(引数が標準で参照渡しであることなど)は、きっちりと引き継いでおり、とにかく書いていて辛くなります。
17. VB.NET
VB.NETは、VB 6.0から進化したプログラミング言語です。進化前と比べると全面的に改良されて、かなり書きやすくなりました。また、それでいてVBらしさは残っているので、当時のVBエンジニアにとっては移行しやすかったのではないかと思います。