コラム: 1つの言語 を深く学ぶ価値
「Javaを学んでいるけど、Pythonも流行っているし、Goも気になる...」
そんな気持ちになることがあるかもしれません。でも、1つの言語を深く学べば、他の言語を学ぶのは驚くほど楽になります。
プログラミング言語は「方言」のようなもの
┌─────────────────────────────────────────────────────────────┐
│ 言語が違っても、やりたいことは同じ │
├─────────────────────────────────────────────────────────────┤
│ │
│ どの言語でも必要なこと: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ ・データを保存したい → 変数 │ │
│ │ ・処理をまとめたい → 関数/メソッド │ │
│ │ ・条件で分岐したい → if文 │ │
│ │ ・繰り返したい → ループ │ │
│ │ ・データをまとめたい → 配列/リスト/マップ │ │
│ │ ・エラーを扱いたい → 例外/Result型 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 言語が違うのは「書き方」だけ │
│ 概念は同じ │
│ │
└─────────────────────────────────────────────────────────────┘
同じ概念、違う書き方
┌─────────────────────────────────────────────────────────────┐
│ 「リストの各要素を2倍にする」 │
├─────────────────────────────────────────────────────────────┤
│ │
│ Java: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ list.stream().map(x -> x * 2).toList(); │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Python: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ [x * 2 for x in list] │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ JavaScript: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ list.map(x => x * 2) │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Go: │
│ ┌────────────────────────────────── ───────────────────┐ │
│ │ for i, v := range list { result[i] = v * 2 } │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ Rust: │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ list.iter().map(|x| x * 2).collect() │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ 書き方は違うけど、やっていることは全部同じ │
│ 「mapという概念」を知っていれば、構文を調べるだけ │
│ │
└─────────────────────────────────────────────────────────────┘
「深く学ぶ」とは何か
┌─────────────────────────────────────────────────────────────┐