プログラミング言語は数百種類あります。全部を知る必要はありませんが、地図のどこに自分がいるかは知っておくと得です。
機械に近い言葉から、人間に近い言葉へ
- 機械語 — 0と1そのもの。CPUが直接読める唯一の言葉
- アセンブリ言語 — 機械語の命令に
MOVADDのような短い名前を付けたもの。ほぼ機械語と1対1 - 高級言語 — 人間の考え方に寄せた言葉。C、Java、Python、JavaScriptなど
「高級/低級」は値段や偉さの話ではありません。機械からの距離を表すだけの言葉です。低級=機械に近い、高級=人間に近い、それだけの意味です。
翻訳方式による2つの流派
- コンパイル型 — 実行前に全部翻訳しておく(C、C++、Rust、Go)。動作が速い
- インタプリタ型 — 実行しながら1行ずつ翻訳する(Python、JavaScript、Ruby)。手軽に試せる
JavaやC#はその中間の方式をとります。速さと手軽さのどちらを取るか、という設計思想の違いです。
Cの居場所
C言語は1972年、UNIXというOSを書くために生まれました。半世紀以上前の言語ですが、いまも現役です。位置づけを一言でいえば、高級言語の中で、いちばん機械に近い場所です。
- メモリをどう使うかを自分で決められる(他の多くの言語は隠されている)
- 実行速度が非常に速く、機械のサイズが小さくても動く
- OS、組込み機器、ゲームエンジン、データベース、AIの計算基盤で今も使われている
どれが最強か、という問い
「どの言語がいちばん優れているか」という議論は昔からありますが、答えは「用途による」です。データ分析や機械学習ならPython、Webの画面ならJavaScript、業務システムならJavaやC#、機器の制御やOSならC。工具箱の中のドライバーとハンマーに優劣がないのと同じで、向き不向きの違いにすぎません。そして、どの言語で書いてもソースコードは最後には機械語になって動く、という点だけは全部に共通しています。
もうひとつの利点: 文法の親戚が多い
Java、C++、C#、JavaScript、Go、PHP……これらは書き方の作法をCから受け継いでいます。{} でまとまりを作る、文の終わりに ; を打つ、if for while で流れを操る。この形はCが広めたものです。
ですからCを1つ身につけると、他の言語の見た目が急に読めるようになります。地図の縮尺を覚えるようなもので、初めての土地でも道の見当がつくようになるのです。2つ目の言語を学ぶ時間は、1つ目の半分以下で済むとよく言われます。最初の1つに時間をかける価値は、そこにあります。