プログラミングと言語
ページ一覧
このセクションで扱うこと
プログラミングと言語は、コードを書く行為そのものを理解するためのセクションです。文法を覚えるだけではなく、型、抽象化、処理系、メモリ、安全性、並行性を通じて、なぜ言語ごとに書き味や設計の向き不向きが変わるのかを扱います。
言語を比較するときは、人気や好みだけでは足りません。静的型付けか動的型付けか、所有権を持つかGCに任せるか、並行処理をどう表すか、標準ライブラリやエコシステムが何を重視するかを見ることで、技術選定の理由を説明しやすくなります。
flowchart LR
A["ソースコード"] --> B["構文と型"]
B --> C["実行モデル"]
C --> D["メモリ管理"]
C --> E["並行性"]
B --> F["抽象化"]
F --> G["言語ごとの設計思想"]
D --> H["安全性"]
E --> H
読み進め方
最初は プログラミング言語概論 で全体像をつかみ、次に オブジェクト指向プログラミング、関数型プログラミング、型システムとプログラミング原則 を読むと、設計の言葉が増えます。
処理系に関心がある場合は、コンパイラ、アセンブラ、メモリ安全性 へ進むと、ソースコードが実行されるまでの流れを追えます。
言語の考え方を起点に読む
- プログラミング言語概論: 言語の分類、抽象化、実行方式、エコシステムを俯瞰します。
- オブジェクト指向プログラミング: オブジェクト、責務、継承、ポリモーフィズムを扱います。
- 関数型プログラミング: 関数、イミュータビリティ、副作用、合成を理解します。
- 型システムとプログラミング原則: 型、設計原則、抽象化の境界を整理します。
処理系を中心に読む
実装技術を中心に読む
- 並行プログラミング: スレッド、非同期、ロック、メッセージパッシングを扱います。
- メモリ安全性: バッファ、ライフタイム、所有権、GC、安全なAPI設計を理解します。
- プログラミング言語別ページ: C、C++、Rust、Go、Java、Python、JavaScript、TypeScript、Swift、SQLなどを、言語仕様と実務の両面から比較します。
まとめ
プログラミング言語を学ぶ目的は、構文を増やすことだけではありません。言語がどの抽象化を助け、どの失敗を防ぎ、どの制約を受け入れているかを読むことで、コード設計と技術選定の解像度が上がります。