言語
プログラムを書くための「言葉」そのもの
すべての土台。他の種別はどれも、いずれかの言語の上に成り立っている。
いつこの種別を選ぶか
最初の1つは「やりたいこと」で選ぶ。データ処理・自動化なら Python、画面なら TypeScript。2つ目以降は、1つ目で足りなくなった理由(速度、配布、並列)で選ぶ
他の種別との関係
| 種別 | どういう関係か |
|---|---|
| 実行環境 | 言語は書き方の決まりで、それを実際に動かすのが実行環境。多くの言語は標準の実行環境とセットで配布されるが、JavaScript のように実行環境を別に選ぶ言語もある |
| フレームワーク | フレームワークは言語の上に載る。言語を決めると、使えるフレームワークの範囲が決まる |
| ツール | ツールの多くは特定の言語で書かれているが、使う側は言語を意識しなくてよい |
| 実行環境 (から見ると) | 言語が「書き方」、実行環境が「動かし方」。Python は CPython、JavaScript はブラウザや Node.js が動かす |
| フレームワーク (から見ると) | 必ずどれかの言語に属する。React は TypeScript、FastAPI と pandas は Python |
この種別を理解する
種別の中でいちばん下にあるもの。 画面も、サーバーも、データ処理も、どれかの言語で書かれている。言語を1つ覚えると、その言語で書かれたフレームワークやツールがすべて視野に入る。だから最初の言語は、その後に触れる分野を決める。
言語の「制約」は数字ではないことが多い。 実行速度、並列処理の得意不得意、配布のしやすさ、型検査の有無。どれも「上限が何件」という形ではなく、仕組み上の性質として現れる。このサイトでは、そうした性質も制約として出典つきで載せている。
言語とライブラリは別。 React は言語ではなく TypeScript のフレームワーク、pandas は Python のライブラリ。言語そのものは少数で、その上の道具が無数にある。言語のページを読むときは「この言語で何が書けるか」ではなく「この言語で書かれた道具がどれだけあるか」を見る。
次に読む種別。 言語を動かすのが「実行環境」、言語の上で決まった作り方を提供するのが「フレームワーク」。
この種別のツール(4件)
分野ごとに並べている。「主要制約」は各ツールで最も先に当たる限界。
言語・実行環境 プログラムを書くための「言葉」と、それを動かす仕組み
| ツール | 学習 | 料金 | 成熟 | 主要制約 | 検証 |
|---|---|---|---|---|---|
| Python 読みやすさを優先した動的型付け言語。データ処理・自動化・AI分野の共通語 | 低 | 無料 | 安定 | スレッド並列の上限(GIL): CPython では同時に1スレッドしか Python バイトコードを実行しない。I/O 中は解放される | |
| Go 単一バイナリに固めて配布できる静的型付け言語。並行処理と配布が軽い | 中 | 無料 | 安定 | 旧バージョンのサポート期間: 各メジャー版は、その後2つ新しいメジャー版が出るまでサポート。メジャー版は2月と8月の半年ごと(実質約1年) | |
| TypeScript JavaScriptに静的型を足した言語。Node.jsでブラウザとサーバーを同じ言語で書く | 中 | 無料 | 安定 | 型の実行時消失: 型注釈は JavaScript の一部ではなく、コンパイル時に完全に削除される。型が実行時の動作を変えることはない | |
| Rust メモリ安全性をコンパイル時に保証する、GCを持たない静的型付け言語 | 高 | 無料 | 安定 | 安定版のリリース周期: 6週間ごと(nightly→beta→stableのトレインモデル)。バージョンごとの長期サポート(LTS)はない |