現代言語とは(全体像)
現代言語は、2010年ごろから広まった、新しい考え方を持つプログラミング言語のこと。共通するねらいは、バグを減らす安全性、複数の処理を同時にこなす並行性、書きやすさ(開発者体験)だ。
身近にたとえると、自動車の進化だ。昔ながらの高性能だが扱いの難しい車(C/C++)に対し、Rustは「高性能+安全装備が充実した現代のスーパーカー」、Goは「実用的なハイブリッドSUV」、TypeScriptは「安全機能を足したセダン(JavaScriptの強化版)」というイメージ。
押さえるのは、3つの代表(Rust・Go・TypeScript)の得意分野だ。
詳しく:3言語の得意分野だけ覚えれば戦える
ここが記事の心臓部。代表3言語を比べましょう。
現代言語の代表3つ
| 言語 | 作った会社 | 得意なこと |
|---|---|---|
| Rust | Mozilla | メモリ安全+高性能(C/C++の代わり) |
| Go | 並行処理がかんたん・コンパイルが速い | |
| TypeScript | Microsoft | JavaScriptに型を足して大規模開発を安全に |
Rustは、メモリ安全と高性能を両立した言語です。「所有権」というしくみで、よくあるメモリのバグをコンパイルの段階で防ぎます。性能が必要でC/C++の代わりになり、Linuxの中核(カーネル)にも採用されました。
Goは、並行処理を簡単に書ける言語です。goroutineという軽い仕組みで、たくさんの処理を同時にこなせます。文法がシンプルでコンパイルも速く、DockerやKubernetesなどのインフラ系ソフトの実装に使われています。
TypeScriptは、JavaScriptに「型」を足した拡張です。型があるとミスに早く気づけるので、大規模なWeb開発で広く使われます。ここで取り違えやすいのが「TypeScript=JavaScript」という誤解。TypeScriptはJavaScriptの拡張で、最終的にJavaScriptに変換されて動きます。
もう1つの定番のひっかけが、RustとRuby。名前が似ていますが、まったく別の言語です。Rustは性能重視のシステム言語、Rubyはおもにウェブ開発に使うスクリプト言語です。
わかりやすく言い換えると
要するに、3つの得意分野で覚えるとラクです。
①Rust … メモリ安全+高性能(所有権で守る・C/C++の代わり)
②Go … 並行処理がかんたん(goroutine・Docker/Kubernetesで活躍)
③TypeScript … JavaScriptに型を足した拡張(別言語ではない)
つまり、「Rustは安全、Goは並行、TypeScriptはJSの型付き拡張」、これを押さえれば迷いません。
試験のツボ
🔴 一番出る:Rustはメモリ安全
①Rust = 所有権でメモリのバグを防ぐ・高性能(C/C++の代わり)
②Linuxの中核(カーネル)にも採用された
🔴 次に出る:Goは並行処理が得意
①Go = goroutineで多くの処理を同時にこなす・コンパイルが速い
②DockerやKubernetesなどインフラ系ソフトの実装に使われる
🟡 押さえると安定:TypeScript
①TypeScript = JavaScriptに型を足した拡張(最終的にJSに変換される)
②大規模なWeb開発で広く使われる
よくある間違い
①「TypeScriptはJavaScriptとまったく同じもの」→ ✗ TypeScriptはJavaScriptに型を加えた拡張。最終的にJavaScriptに変換されて動く。
②「RustとRubyは同じ言語」→ ✗ 名前が似ているだけの別言語。Rustは性能重視のシステム言語、Rubyはウェブ向けのスクリプト言語。
③「Goは並行処理が苦手な言語」→ ✗ Goはgoroutineで並行処理を簡単に書けるのが強み。DockerやKubernetesに使われる。
試験での出題パターン
実際の問題でたしかめてみよう。
オリジナル問題1(Rust)
Rustに関する次の記述のうち、正しいものはどれか。
- Rustは所有権でメモリのバグを防ぐ高性能な言語で、Linuxの中核にも採用されている
- Rustはメモリ安全をいっさい考えない言語で、性能も低く実用には向かないとされている
- RustはRubyのことを指す別名で、おもにウェブ開発に使うスクリプト言語とされているのだ
- Rustは紙に印刷する装置のことで、プログラミング言語とは無関係なものとされているのだ
解答は 1 ですよ。
Rustは所有権でメモリのバグを防ぐ高性能な言語で、Linuxの中核にも採用されていますね。C/C++の代わりになります。
選択肢2の「メモリ安全を考えない」、選択肢3の「Rubyの別名」、選択肢4の「印刷する装置」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✓ | 所有権でメモリ安全・高性能 |
| 2 | ✗ | メモリ安全と高性能が強み |
| 3 | ✗ | RustとRubyは別言語 |
| 4 | ✗ | 印刷する装置ではない |
オリジナル問題2(Go)
Goに関する次の記述のうち、正しいものはどれか。
- Goは並行処理がいっさいできない言語で、インフラ系のソフトには使われないものとされている
- Goは紙に印刷する手順のことで、プログラミング言語とはいっさい無関係なものとされている
- Goはgoroutineで並行処理を簡単に書ける言語で、DockerやKubernetesに使う
- GoはJavaScriptに型を足した拡張で、ウェブのフロントエンド専用の言語にすぎないとされる
解答は 3 ですよ。
Goはgoroutineで並行処理を簡単に書ける言語で、DockerやKubernetesに使われているんですね。文法がシンプルでコンパイルも速いです。
選択肢1の「並行処理できない」、選択肢2の「印刷する手順」、選択肢4の「JSの型付き拡張」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | 並行処理が強み |
| 2 | ✗ | 印刷する手順ではない |
| 3 | ✓ | goroutineで並行・インフラで活躍 |
| 4 | ✗ | それはTypeScript |
オリジナル問題3(TypeScript)
TypeScriptに関する次の記述のうち、正しいものはどれか。
- TypeScriptはJavaScriptとまったく別物で、JavaScriptに変換されることはないとされる
- TypeScriptはJavaScriptに型を足した拡張で、最後はJavaScriptに変換されて動く
- TypeScriptはメモリ安全を所有権で守るシステム言語で、C/C++の代わりとされているのだ
- TypeScriptは紙に印刷する装置のことで、ウェブ開発とはいっさい無関係なものとされている
解答は 2 ですよ。
TypeScriptはJavaScriptに型を足した拡張で、最終的にJavaScriptに変換されて動くんですね。型があるとミスに早く気づけます。
選択肢1の「変換されない別物」、選択肢3の「所有権のシステム言語」、選択肢4の「印刷する装置」はどれも誤りですよ。
| 選択肢 | 判定 | 理由 |
|---|---|---|
| 1 | ✗ | JSに変換されて動く |
| 2 | ✓ | JSに型を足した拡張 |
| 3 | ✗ | それはRust |
| 4 | ✗ | 印刷する装置ではない |
まとめ
押さえどころ
- 🔴 Rust = 所有権でメモリのバグを防ぐ高性能な言語。C/C++の代わり。Linuxの中核にも採用。
- 🔴 Go = goroutineで並行処理を簡単に書ける。DockerやKubernetesなどインフラ系で活躍。
- 🟡 TypeScript = JavaScriptに型を足した拡張。最終的にJavaScriptに変換されて動く(別言語ではない)。
次に学ぶ
- コンパイラのフェーズ ── これらの言語を機械語に変換する、コンパイラの6つの段階。
- コンテナ・Kubernetes ── Goで作られたDockerやKubernetesの、コンテナ運用のしくみ。
執筆: SikakuQuest編集部