この記事は私が完全なる独断と偏見により今まで触れてきたプログラミング言語の好みを語る記事である。
私が今まで触ったことがある(とりあえず何かしらの作業に使ったことがある)言語は、
- C言語
- C++
- Java
- JavaScript
- Python
- Processing
- R
- Haskell
くらいだろう。
機械語への近さという観点で並び替えようと思ったが概ね上にあげた順番くらいであることに気づいた。
C言語が最も機械語に近く、Haskellが最も遠い。
機械語に近いものほど人間の言語からは離れるが、機械の仕組みを知っている人間からすると処理の流れがわかりやすくなりやすい。しかし同時に、原始的な処理を1から書かねばならないため、高度な処理をしようとするとプログラムが複雑になりすぎたりする。
ちなみに、似ているもの同士をまとめると、
C++はC言語を拡張したものであるので完全上位互換である。
C++とJavaはどちらもオブジェクト指向である言語で、変数の宣言時に型の指定(その変数が数値であるとか、文字列であるとかを最初に決めておくこと)が必要な言語である。
少し前ならプログラミング言語といえばC++、Java、C#であったように、これらは結構似ているものである。
JavaScriptとPythonも結構似ているように思う。どちらもオブジェクト指向であり、その点ではJavaやC++と同じではあるのだが、こちらははるかに簡略化されている。変数宣言時の型の指定は必要ないし、何をするにもライブラリ(先人の知恵のようなもの)が用意されていて楽に(本当に楽かどうかはわからないが)実装できることが多い。しかし逆を言えば、何をやってるかわからないが結果が出る、みたいなことが頻発する。
RとProcessingは似ても似つかないが、ある特殊な目的に特化して使われる言語、という意味では似ている。
Rは統計などの計算に、ProcessingはCG制作に用いられる。
どちらの言語もそれ専用に非常に便利な関数などが用意されており、そのほかの言語なら複雑なプログラムが必要な処理を簡潔に書くことができる。逆に、それ以外のことは一切できないと言っても過言ではない。
最後にHaskellである。こいつが1番の曲者で、この記事であげた言語で分類するなら、HaskellとHaskell以外という分類ができるほどそれ以外とは違う。
その他の言語が手続き型(指示を羅列する)言語であるのに対し、Haskellは関数型(関数を主体としてプログラムを書く)言語である。
率直にいえば普通の人間には理解し難い言語である(個人の感想)。
さて、大まかにそれぞれがどんな言語であるかわかったところで、本題である私の好きなプログラミング言語ランキングの発表に移ろうと思う。
ランキングは以下の通りである。
- Java
- Processing
- R
- C
- Python
- C++
- JavaScript
- Haskell
ではそれぞれの言語の評価について述べていこうかと思う。
第8位 Haskell
Haskellはクソである。いや別にクソではないが、私は大嫌いである。なぜかというと死ぬほどわかりづらいからである。
序盤に機械語から遠い方が人間の言葉に近いなどと言ったが、あれは嘘である。Haskellは人間の言葉に近くなどない。Haskellは数学に近い。
あれは私の手に負えるものではない。
第7位 JavaScript
邪悪。
魔境といってもいい。
JavaScriptは主にWeb周りに使われる言語である。
Web周りは他の分野に比べて人口が多い。そして世の摂理として、程度の高い人間より低い人間の方が多い。必然的にWeb周りの検索結果はゴミである。
Web周りは環境の変化が著しい。そして皆がその時々のものの書き方を記事にして投稿する。必然的にいつのものとも知れぬ魑魅魍魎記事が無限に検索結果に現れる。しかもライブラリやフレームワークも無限にあるので検索結果は更に地獄の様相を呈する。
JavaScriptは初心者におすすめされることが多いが、学習難度はトップクラスであると思う。
私怨である。
第6位 C++
実を言うとC++はそこまで嫌いではない。
だがこの言語は言うなれば「改造を施されまくりにまくった結果めちゃくちゃに肥大化してしまった怪物」である。C言語にありとあらゆる多言語のエッセンスを加えまくった結果、全ての機能を把握することすら不可能な次元へ辿り着いてしまったのである。
「C++を完全に理解した」と言う人間は3種類である。
1、C++のことを全然わかってない人
2、C++に心折れ絶望した人
3、この世の真理を知りし者
である。
第5位 Python
昨今話題の言語であるように思う。それはAIや機械学習に多く用いられる言語であるからだろう。
正直特に欠点は無い。
唯一嫌いなところは他の言語では{}で括って深さを決めるところをインデントで決めることである。これが死ぬほど気持ち悪い。気持ち悪いが、全く使えないわけではないのでこの順位である。
第4位 C言語
シンプル イズ ベスト。
ポインタなどは全くの初学者からすると地獄のシステムであるが、意味と理屈さえわかってしまえばいこれ程卸しやすい言語もそうは無いだろう。
プログラミングをこれからしっかりと始めてみたい、その覚悟があると言う人にはC言語をお勧めする。(機械学習をやりたいとかならPythonを勧めるが)
唯一にして最大の欠点は機能がかなり少ないことである。
配列周りなどはかなり脆弱である。
この記事で挙げた言語の中で、配列の最後尾に新しい要素を追加する機能が存在しないのはCくらいなものである。
自作すれば作れないことはないが、それをするくらいならC++を使えばよい。
第3位 R
Rは統計処理特化の言語である。行列計算だとか、平均や分散を求めてみたり、回帰や分類を行ってみたり、データをプロットしたり、そういう処理がとても簡単に実行できる。
逆を言えばそれ以外のことは碌にできないのだが、出来る必要もないのがこの言語のいいところだと思う。
目的から手段が明瞭で、迷うことがないのが良い。
そして何より、Rを使うような人間は統計を学ぶ人間くらいであるので検索汚染がほぼ皆無であるという点も特筆に値する。
第2位 Processing
こちらはJavaベースのCG特化言語である。
こちらもCG以外に出来ることはないが、CGはかなり手軽に描ける。
もし、ちょっとプログラミングしてみたいな、という人にどれか一つ言語を進めるとしたら、私は一番これがオススメである。
というのも、どんな言語より手軽に目に見える見栄えの良い絵が描けるからである。
他の言語でウィンドウに画像を表示させようとすると結構苦労するのだが、Processingならちょちょいのちょいである。
超オススメ。
第1位 Java
無難。
大体のことはできるし、気持ち悪いところも特にないし、難しすぎないし、簡単すぎない。
どこでも動くのもいい。
初手でこれを学ぶのはヘビーだと思う。
プログラミングをガチでやりたい人が、C言語を学んだ後学ぶ言語である。多分。
Windowsで動くソフトさえ作れればいいやという人はC#の方がオススメである(ちなみにC#はC系とはあまり関係がなく、むしろJavaに近い)。
以上、好きなプログラミング言語ランキングである。
以下、余談。
どのプログラミング言語を学ぶべきかをフローチャート的に示す。
Q1.何か目的がある(例:機械学習がしたい、ゲームが作りたい)
Y→ Q3へ
N→ Q2へ
Q2.ガチでプログラミングをやる覚悟の準備ができているッ‼︎
Y→ C言語を勉強しましょう
N→ Processing楽しいよ
Q3.やってみたいのは
web周り→ JavaScript(+HTML,CSS)
機械学習・AI→ Python
スマホアプリ→ Java(Android) Swift(iOS)
PCゲーム→ Java, C#(Windows), C++
その他→ 頑張って自分で調べて
どれもちゃんとやれば面白いのでしょうが簡単にCGが作れるとおすすめもされているprocessingに惹かれました
あとRってプログラミング言語に入るんですね
Excelなんかの仲間だと思ってました
なのでRはプログラミング言語に含まれますね
実はExcelも最近LAMBDA関数が実装された(まだβ版のみですが)ことでチューリング完全となったのでプログラミング言語と呼べなくはないんです