はじめに
出版社のページから作者のコメントを引用します
本書は,プログラミング言語の図鑑です。さまざまなプログラミング言語を簡潔に紹介しています。世界中には,星の数ほどプログラミング言語があると言われています。本書では,数あるプログラミング言語の中から,広く使われているもの,歴史上重要なものを厳選して収録しています。プログラミングの世界を楽しみながら読んでいただけたら幸いです。
ものすごく内容が充実した、最高の一冊なので、プログラミングをやっている人、やりたい人、興味がある人、全員に激しくおすすめします!
著者のクジラ飛行机さんは、日本語プログラミング言語「なでしこ」の開発者でもあり、プログラミングに関する書籍を多数出版されている方です。どの本も実用的で、わかりやすく、なによりも楽しい!文章も丁寧でわかりやすくて、なんだか優しいんですよね。自分もやってみたいな、使ってみたいなと思うような本で、大好きです。
この本も、読むといろいろなプログラミング言語を使ってみたくなりますよ。
1章にプログラミング言語についての基礎知識がまとまっています。
2章のプログラミング言語一つ一つの解説は簡潔にまとまっておりわかりやすいです。関連する技術についても説明があり理解が深まります。コードもあります。有名でよく使われている言語から、最近は使われていないが歴史的に重要な言語、そして最後の方で「おもしろ言語」についても記述があり楽しいです。全く読めないBrainfuckやWhitespaceは思考実験として作ってみるの楽しかっただろうなと思います。このへんは、「なでしこ」を作ったクジラ飛行机さんらしいポイントですね。
とにかくボリュームが多いのと、記述が簡潔で明快なので、一冊持っておいて損はないすごく良い本です。
1章「プログラミング言語を知る」
プログラミング言語とは何か
- プログラミング言語とはなにか
- なぜ複数のプログラミング言語が存在するのか
どのプログラミング言語を学ぶべきか
- プログラミング言語どれを学ぶ?どう選ぶ?
- 高速なプログラミング言語
- 書きやすい、生産性の高いプログラミング言語
- 学んでいる実感が得やすいプログラミング言語
- 資格に役立つプログラミング言語
- 仕事につながるプログラミング言語
- 人気があるプログラミング言語
- Stackoverflowの人気ランキング2023
- https://survey.stackoverflow.co/2023/
- https://survey.stackoverflow.co/2023/#section-most-popular-technologies-other-tools このページの下の方に言語ランキングがあります
- https://www.infoworld.com/article/3699788/rust-most-admired-language-stack-overflow-survey-says.html
- JavaScriptが一番使われていて、次がPythonだが、一番満足度が高いのはRust
- TIOBE Indexの人気言語ランキング2023
- https://www.tiobe.com/tiobe-index/
- Python, C, C++, Javaの順に人気
- GitHubの人気言語ランキング2023
- https://madnight.github.io/githut/#/pull_requests/2023/2
- Python, Java, Go
- Stackoverflowの人気ランキング2023
どの言語を学ぶべきか?について複数の観点で解説があり、YES/NOチャートもあるので、プログラミングを勉強してみたいけど、どの言語から学び始めるのがいいのか迷っている人の助けになります。人気ランキングを見てみるの面白いですね!stackoverflowのサイトは、言語以外にも、どんな人がstackoverflowを使っているか?どんな技術が人気か?などの分析があってためになります。
コンピューターとプログラミング言語の歴史
計算機の誕生から、プログラミング言語の歴史についてまとまっています。
プログラミング言語の歴史については、誕生した歴史的背景や特徴についても言及があり、なぜその言語が必要とされたのかもわかります。
もっと知りたかったので、wikipediaの「プログラミング言語年表」をもとに図にまとめてみました。
FORTRANやCOBOLは古い言語ですが、いまでも現役というのはすごいですね。

プログラミング言語の活躍するパターン
- Webアプリ
- スマートフォンアプリ
- パソコンアプリ
- 人工知能/機械学習
- システムプログラミングや高性能ソフトウェアの開発
- 組み込み機器
- ゲーム制作
- コマンドラインツール
- その他の用途
それぞれの目的に応じてよく使われる言語が紹介されています。この分野の仕事がしたいけど、どの言語を学んだらいいかな?と悩んでいる人の役に立ちます。
プログラミング言語を分類して考える
- 静的型付け/動的型付け
- 命令型/宣言型
- 構造化/非構造化
- 手続き型
- オブジェクト指向
- 関数型
- 論理型
- マルチパラダイム
- メタプログラミング
- ビジュアルプログラミング
- コンパイル/インタプリタ
いろいろな分類の仕方があり、その言語の特徴を表現できますが、たとえば動的型付け言語でも静的型付けの要素を取り込んでいることもあり、はっきりと分類できるものではないようです。このへんあまりよくわかっておらず、「Pythonって動的型付け言語だよね」と言われて意味がわからなかったことがあったので、この節を読んですこし賢くなりました。
プログラミング言語を動かすには
実行環境についての説明です。
2章「プログラミング言語大全」
各言語の説明
基本的にどの言語も次の項目の説明があります。
- 言語の特徴
- 言語の歴史
- 活躍するシーン
- FizzBuzz(1〜100までの数値を画面に表示させ、3の倍数の時は「Fizz」を、5の倍数の時は「Buzz」を、15の倍数の時は「FizzBuzz」の文字列を表示させる、プログラミングスキルを試すための問題)
各言語に対してFizzBuzzのコードが載っているため、言語の違いや特徴がわかりやすくてとても良いです。言語の特徴もわかりやすく簡潔にまとまっていて理解しやすいです。
また、関係が深い言語が近くに載っているのもいいですね。
たとえばCはこんな感じです。
C:高速・省リソースで現在も活躍する言語
- よみかた:シー
- 言語の特徴
- 言語の歴史
- 活躍するシーン
- FizzBuzz
- コンパイラ
- ヘッダファイル
- C言語ファミリー
- ポインタ
- Cと仕様
- 代表的なCコンパイラ
- なぜCはいまだに人気なのか
- システムプログラミング
- マクロを使ったCのプログラム
かなり詳しく書かれているでしょう?これを読むとその言語についての周辺知識まで知ることができます。
掲載されている言語を列挙しておきます。気になる言語があったらぜひ購入して読んでみてください。
- Go:Google発!高速な現代的言語
- アセンブリ:最も低水準な言語
- C++:Cにオブジェクト指向を載せてパワーアップ
- FORTRAN:科学技術計算に特化した最初期の高水準言語
- D:C/C++の影響を受けて書きやすくした言語
- Rust:高速・安全・並行 新世代の言語
- Python:入門から機械学習まで大人気のプログラミング言語
- PyPy:Pythonの処理系の1つ
- Cython:Python高速化のための言語
- MicroPython:組み込み向けのPython
- Ruby:日本が世界に誇るスクリプト言語
- mruby:組み込み向けのRuby
- Crystal:もしもRubyが静的型付けを重視したら?
- JRuby:JVMで動くRuby
- Opal:RubyをJavaScriptにする
- Streem:Matzの新言語
- PHP:最もWebで使われるWebアプリ開発に特化したプログラミング言語
- Hack/HHVM:Facebook (現meta)製のPHPライクな言語
- Lua:高速動作と高い移植性を持つ組み込みスクリプト言語
- LuaJIT:JITでLuaを速くする
- MoonScript:Luaを書きやすくしたいなら
- Perl:強力な文字列処理機能を持つ軽量スクリプト言語
- Raku:幻のPerl 6
- JavaScript:Webブラウザ/サーバーで活躍する言語
- Node.js:Webサーバーで動作するJavaScript実行エンジン
- Deno:新しい安全志向のJavaScript実行環境
- TypeScript:JavaScriptのスーパーセットで大規模アプリの開発向け
- CoffeeScript:短く手軽に記述できるJavaScript代替
- Dart:JavaScriptの置き換えからモバイルアプリ開発まで幅広く
- WebAssembly:Webブラウザ用のアセンブリ言語
- Java:スマートフォンやWebなど幅広く利用されるオブジェクト指向言語
- Vim Script:Bill JoyのViから生まれたVim
- Kotlin:簡潔にかけて汎用的なAndroidの公式開発言語
- Xtend:Javaをより使いやすくするというモチベーション
- Scala:オブジェクト指向と関数型言語の特徴を持つJVM言語
- Scala.js:ScalaのパワーをJavaScriptに
- Groovy:JVM上で動作するスクリプト言語
- Processing:デジタルアートとデザインのためのビジュアル表現言語
- Swift:AppleによるiOS/macOS向けプログラミング言語
- Objective-C:macOC/iPhoneアプリ開発で活躍したCの亜種
- Simula:C++とJavaの先祖?
- C#:Windowsの定番言語 UnityやXamarinで人気がさらに加速
- F#:.NetとML系言語の出会い
- Visual Basic:Windows開発で定番の初心者向け言語
- VBA:仕事を強力にサポートするExcel/Word等のマクロ言語
- Excel関数:プログラミングの入口になる便利な機能
- Google Apps Script:GoogleのVBA
- Object Pascal/Delphi:かつてはWindowsアプリケーション開発で人気 近年も地道に改良
- ALGOL:構造化プログラミングの初期の言語
- Pascal:人気の教育用言語
- Ada:国防プロジェクトから生まれた安全重視の言語
- Eiffel:Rubyにも影響を与えたオブジェクト指向の一つの姿
- Free Pascal:オープンなPascal処理系
- AWK:効率的に使えるテキスト処理専用の言語
- sed:テキストファイルを加工するUNIX出身言語
- PowerShell:Windows標準のシェルとスクリプト言語
- バッチファイル(コマンドプロンプト/cmd.exe):Windowsの古くからの定番
- Windows Script Host (WSH):かつてのWindowsの人気スクリプト実行環境
- Bash/Shell Script:Linux標準のシェルBashは一通り言語の機能を持っている
- Z Shell (zsh):Bashと並ぶ人気のシェル
- C Shell (csh):Cの影響を受けたシェル
- KornShell (ksh):高機能シェルのさきがけ
- Bourne Shellや互換シェル
- Friendly Interactive shell (fish):ユーザーフレンドリーなシェル
- AppleScript:macOSのスクリプト言語
- Haskell:最も有名な関数型プログラミング言語
- Elm:Webフロントエンド×Haskell
- OCaml:関数型にオブジェクト指向の強みをプラス
- ML:OCamlにも影響大のML系言語の始祖
- Standard ML:ML系言語の二大巨頭
- Reason:JavaScriptとOCamlが出会ったら
- Erlang:高負荷サービスで人気のスケールする並行処理指向の言語
- Elixir:並行処理が得意で耐障害性・高可用性のある言語
- Common Lisp:ANSIで標準化されている代表的なLisp
- Arc/Anarki:Common Lispの成功者Paul Grahamによる新Lisp
- Clojure/Clojure Script:JVMとLisp
- Emacs Lisp:強力な設定言語
- Scheme:古くから人気のあるLisp方言の1つ
- Racket:Scheme派生の新言語
- Prolog:歴史ある論理プログラミング言語
- Scratch:楽しく始めるビジュアルプログラミング言語
- Viscuit:日本発のビジュアルプログラミング言語
- Smalltalk:オブジェクト指向プログラミングに多大な影響を与えた言語
- BASIC:初心者からプロまで幅広く人気の言語
- F-BASIC:FMシリーズのBASIC
- MSX-BASIC:MSXシリーズのBASIC
- N88-BASIC:PC-8800で有名なBASIC
- ActiveBasic:Windowsでも動くBASIC
- COBOL:1959年に開発された事務処理用の言語
- PL/I:メインフレーム向けのパワフルな言語
- なでしこ:日本語プログラミング言語
- HSP (Hot Soup Processor):日本発 ゲームやツールが手軽に作れる
- R:統計解析向けの言語と実行環境
- Julia:平易さと速度を両立した科学技術計算向け言語
- MATLAB:数値計算の王道的ソフトウェア
- Octave (GNU Octave):MATLAB代替として知られる言語
- ActionScript:Flashのスクリプト言語はJavaScriptの消された足跡
- Haxe:ゲーム開発に便利 複数の環境で動かせるユニークな言語
- Nim:Pythonのようなトランスパイル言語
- Mint:ゲーム会社の内製プログラミング言語
- Brainfuck:チューリング完全な極小のコンパイラ
- Unlambda/Lazy K:関数型の難解プログラミング言語
- Piet:プログラミング画像?
- Whitespace:目に見えない不思議なプログラミング言語
Appendix プログラミング言語とその周辺の知識をより深める
App.A プログラミング言語と関連する言語や記述形式
- HTML
- CSS
- XML
- JSON
- Markdown
- LaTeX
- SQL
- 正規表現
- make
- PostScript
- ini
- YAML
このあたりは、プログラミング言語ではないですが、プログラミングをしているとよく出てくるところなので、補足があってとてもいいと思いました。
App.B プログラミング言語と道具
エディタ、ビルドツールについてなど記載があります。
App.C プログラミング言語の作り方
ここが「なでしこ」作者のクジラ飛行机さんらしいポイントですね!字句解析や構文解析を行なってプログラミング言語を作るらしいです。
クジラ飛行机さんのサイトもおもしろいのでぜひチェックしてみてください。

おわりに
プログラミング言語についてググっても、公式ドキュメントかWikipediaが上位に来てしまって、概要を調べるのは意外と大変だったりします。この本やポイントがよくまとまっていて調べやすいです。
なかなか、いろいろな言語の特徴が一冊にまとまった本って多くないと思うので、持っておくとささっと調べられて便利です。とくに、Kindle版を購入すれば索引もありますし、スマホに入れておけばいつでも調べられるのでとてもおすすめです。
一つ一つの言語について調べて、簡単なコードも書いてあって、この本を書くのめちゃくちゃ大変だっただろうなと思います…クジラ飛行机さんはPythonでの自動化からWebアプリケーション開発、機械学習まで幅広く本を書かれていて、ものすごい知識量とアウトプットで尊敬します。これからも新刊がKindleで出たら購入しようと思っていますので、読み終わったら順次書評を書きます。
この本は持っておいて損することはないと断言できますので、ぜひ手に取ってください!
コメント