Exceptional C++ Style

最近C++にかぶれてたので読んだ。

C++関連の本は役に立つかどうかはともかく、読んで面白い本が多いのでよいですな。
しかし、うちにあるC++本は偏りすぎじゃないかとおもう。

  • Exceptional C++ Style (Exceptional C++は無い)
  • More Effective C++ (Effective C++は無い)
  • C++設計と進化 (PLC++とかは無い)
  • Effecitive STLSTL本はこれだけ)
  • Modern C++ Design (おもにネタ)

いや、うん、ネタ的に面白そうなやつばっかり読んでたら、なんか…
(More…は More じゃないほうがおもしろいかも。あれは図書館で借りて読んだと思う)


それはともかく、Exceptional C++ Styleなんだけど、

他の言語と比較してC++が持つ最大の強みは、メモリーとリソースに対する制御と管理の権限がプログラマに委ねられているところだ。

とか、そういうのが書いてある。(これがそこらのスクリプターと本物のC++プログラマの違いである!!…C++プログラマの頭がおかしいだけ)


それと、3ページにわたって、Alexandrescuのキチ○イぶりを誉めたたえてたりするところがおもしろかった。


あとは…あんまり覚えてない。

プログラム仕様記述論

http://www.amazon.co.jp/exec/obidos/ASIN/4274132633
これ。


前半がプログラムの正当性の証明のしかたについて書いてあって、面白かった、けど、色々しんどかったのであんまりちゃんと読んでない。後半は、VDM-SLの書きかたがひたすら書いてあって、よくわからんかったのでちゃんと読んでない。


まとめ: ちゃんと読んでない。

データベース実践講義

今読んでる途中。


組み込みばっかやってたら、将来食いっぱぐれそうな気がしたのでデータベースでも勉強してみようと思ったのだった。(いや、SQLなんか見ないでも生きていけるほうが幸せかもしれんが)

いかにSQLがクソかという話を交えつつ、リレーショナルデータベースというのはなんなのかを説明する、というような話。
かなり面白い。
SQLに私怨とかがある人はぜひ。(僕はSQL全然知らない)


「リレーショナル」データベースがリレーショナルなのは、リレーショナルのデータベースだからなんだ…!

というのはここに書いてあった。(最近、調査したあとにリンクを発見する傾向が)
http://www.geocities.jp/mickindex/database/db_whyname.html

Binary Hacks

感想なのか!
いや、ちょっとだけ書かしていただいた(例外のあたり)んだけど、なんか、ほとんど一読者でしかないというか。


http://0xcc.net/binhacks/toc.html 目次を見ていただければわかるとおり、いやーみんな好き勝手書いたよなーって感じが。
いや、でも、こういうのは、バラバラに見えて、バラバラじゃないんだ…そう、伝わらないと思うけど…!!
たとえば、わかりやすい例を持ってくるならば、君は char * と char [] の違いだけで、いっこのエントリを書くことができるか!?というような話なんだ!(http://d.hatena.ne.jp/yupo5656/20060907)
yupo5656さんのネタを見れば、このネタだけで、

  • nm
  • objdump
  • gdb
  • C言語仕様
  • PIC
  • x86
  • オブジェクトファイル
  • GCC拡張の__attribute__

という知識が駆使されているというのが読み取れるかと!バラバラの知識に見えるのだけど、そういうのが組み合わさることによって、char *とchar []の違いを深追いする能力が身につくというわけなんである…!あなたは、char const *とchar const [ ]の違いを説明できるか!?という話なのだ。
このレベルにまで到達するためには、常日頃から、オブジェクトファイルについて考え、コンパイラの気持ちになって、色々とネタ探しをすることが必要なのである!
例えば、僕の場合だと、http://d.hatena.ne.jp/w_o/20060808#p2 こういうネタは、常日頃からスタックフレームについて考えてたおかげで生まれたと言えるし、常日頃からスタックフレームについて考えてるってどんなんだよ。
まあ、そんな感じで、そういった知識習得のための、第一歩として、Binary Hacksはいいんじゃないでしょうか。たとえば、これを期に、/usr/include/elf.hを眺めてみるとか、binutilsのソースを頂戴して、libbfdを漁ってみるとか、ひたすらgcc -Sしてみるとか!!


既にそういうレベルに到達してる人は…適度に各人の判断で。


あと、四章のセキュアプログラミングあたりは普通に勉強になるんです…