「C++の設計と進化」を読んでる(読み終わった)

今週家で安静にする必要あって、ずっと大学図書館で借りた本読んでるか艦これやってる。

C++の設計と進化

C++の設計と進化

C++の設計と進化」はC++の作者であるビャーネ・ストロヴストルップさんの本。有名で、時間つぶせそうだし、ちょっと読んでみて面白そうだから借りた。

第1部

本書は2部構成になってる。第1部はC++のRelease 1.0までの話で、C++を作り始めた経緯とか、ビョーンさんの主張とか書いてある。1980年くらいから作ってて、Simulaから影響を受けて作ったとかそんな感じ。

歴史的なことは江添さんのスライドで読んだ通りだった。

  • C++STLとかのイメージだったけど、1.0の時はライブラリ全然なくてスマンカッタ、とか書いてある。テンプレート的な機能、最初はマクロでやってたらしくて、男気がある。

  • Javaが出てきた時にめっちゃDISられてムカついた、みたいな事書いてある。

  • GC、使える時は使おうぜ、みたいな事書いてある。

第2部

第2部はRelease 1.0以降に追加された機能を細かく見ていく。

C++、基礎を勉強してないから、わかんない所で都度調べてるけど、難しい。本も難しいしC++も難しい。

  • 「~~を実現する方法が~~」って記述が何度も出てくる。言語に機能追加するの、便利さだけじゃなくて、実現できるかどうかが問題になるって事しらなかった。

  • 所々激しい。
    純粋仮想関数を導入するのに、「新しいキーワードを選ぶと、騒々しい論争が起きて必ず遅れが生じる」から

    virtual void f() = 0;

    という構文使ったとか言ってて、どう考えても激しい。

  • 継承、全然わかってなくて、JavaとかPythonだとどうなるの?って一々調べながら読んでた。同じOOP言語でも言語ごとに全然違うんだなーって思った。

  • 「protected導入しようぜ」って提案されたって所で、かっこいい文章あった。

彼の主張はもっともだったから、私もprotectedメンバを導入しようという気になった。しかし、プログラミングについて議論するときには、"良い主張"ほど疑いの目で見るべきである。だから、データが必要だ。データと、正しく評価された経験がなければ、私たちは数世紀にわたって優れた議論を戦わせた古代ギリシアの哲学者と同じだ。彼らは結局、宇宙のすべての物質を構成している四大元素(五大の場合もある)を、特定できなかったのだ。

この後、protected導入しようぜって言った人、自分のライブラリでprotected禁止にして「ないほうがいいね。ほかに誰か使ってる?」って言ったっぽくて、かっこいい。

ほか

  • 面白いし、色々学んだつもりになってるけど、僕は普段C++全然書かないから、しばらくしたら忘れちゃいそう。気軽に読める分量じゃないから、ちょっと後悔してる。せめて普段からC++ガンガン書いてますって人とか、C++の基本は押さえてますって人が読むと良さそう。

  • 監修さんの解説がわかりやすい。この人、C++の記事とかでたまに名前見るけど、「昔の国産C++コンパイラFDD保存してます!Cに変換した後のコード読めて楽しいです」みたいな事かいてて、古参のハッカーすごい。

  • 言語自体の機能とか勉強不足なのすごい感じてる。少なくとも、今使ってる言語のクラスシステムちゃんと勉強しないと。

(追記)読み終わった

  • テンプレート難し過ぎでは?????

  • 「新しいキーワードを追加しない為に~」みたいなの度々出てくるけど、諸悪の根源では?と思う。

  • 訳者あとがき、本の概要紹介になってる。読むかどうか迷ってる人は、まずあとがきを読むと良さそう。