とぴやまのブログ(アーカイブ)

元はてなダイアリー

C++の設計と進化

C++の設計と進化 (asin:4797328541) 何とか読了した。時間がかかった。濃過ぎて一気に読めなかった。

ソフトウェアのソースコードを理解するには、そのソースコードの設計思想を知ることが大事だというが、その言語を使うなら、その言語の設計思想を知ることが大事だということだろう。この本には C++の設計思想と何故そう作られたのかが書かれている。

第4章「C++言語の設計ルール」から引用。C++のコードを書く前に暗唱したい(笑)。

目標

一般的ルール

  • C++の進化は現実の問題をその動因とする
  • 完全主義にこだわらない
  • C++は今現在役に立つ言語でなければならない
  • どの機能もわかりやすい実装を持たなければいけない
  • ユーザサイトにおける移行の円滑性
  • C++は言語であり、完全なシステムでない
  • どのようなプログラミングスタイルでも総合的なサポートを提供する
  • 人に何かを強制しない

アプリケーションの設計をサポートするためのルール

  • 健全な設計方針をサポートする
  • プログラミングを組織化するための機能を提供する
  • やりたいことを書く
  • 経済的可用性
  • 誤用を恐れない
  • 別々に開発された部品からのソフトウェアの構築をサポート

言語技術的なルール

  • 静的タイプチェックに対する暗黙の侵犯がない
  • ユーザ定義タイプにも内蔵タイプと同格の良質なサポートを提供する
  • ローカリティの尊重
  • 順序依存性を避ける
  • 同じ機能なら人に教えやすい方を選べ
  • シンタクスは重要だ(ときには悪い意味で)
  • Cのプリプロセッサを使わないようにする

低レベルプログラミングをサポートするためのルール

  • 従来からあるリンカ(ダムリンカ)を使う
  • Cと正当でない非互換性がない
  • C++以外にそのほかの低レベル言語は不要(アセンブラを除く)
  • 使わない機能はコストを発生させない(ゼロオーバヘッドルール)
  • 無理をせず手動制御を提供する

C言語とは別ではなく、あくまでインクリメント、ベターな C。既存のCに対して、オブジェクト指向っぽいこと・データ抽象化らしいことを実現した言語。現実解。諦めが肝心。

しかし、完全じゃないから、悩んで泥沼に陥るんだろうな…。

「誤用をおそれない」なんかはシビレル。甘美な誘惑だ…。汚い実装を、どうしようもない時の最後の手段として認めているのは、心強い。(それによる副作用を知った上で)


http://japan.cnet.com/news/ent/story/0,2000047623,20083118,00.htm
■「C++の重要性は高まっている」:同言語の生みの親が主張
なんて記事があるが、最重要な(そして恐らく永久不滅な)低レベルプログラミング言語 C と寄り添っている限り、 C++の必要性は変わらないだろう。低レベルなソフトウェアを開発する必要性はどんどん減っていくだろうけど、低レベルなソフトは決して無くなる訳ではない。

ユーザが増えるかどうかはまた別問題。(低レベルなソフトを書く必要が無くなっているので、割合としては減るだろう)