参考文献


C++関連

プログラミング言語 C++ 第3版

Bjarne Stroustrup, アジソン・ウェスレイ・パブリッシャーズ・ジャパン株式会社, 1998

C++の最高権威書(だと思います)。困った時は、これを開いてみよう。

単に、言語の仕様が延々と書かれている本かと思っていたけど、 各章のはじめに名言みたいなのがあるし、 サンプルも豊富、練習問題まであったりとサービス満点です。 入門書とは言えませんが、上を目指すのなら持っていて損はない本だと思います。

Effective C++ 改訂2版

Scott Meyers, 株式会社アスキー, 1998

C++初心者脱出のための1冊。

自分が宣言したクラスで、代入演算子、コピーコンストラクタを定義しない、もしくは必要ない、と思うときはprivateにしておこう。理由が分からなければ、この本を読んでください。

More Effective C++

Scott Meyers, アジソン・ウェスレイ・パブリッシャーズ・ジャパン株式会社, 1998

上の本の続編みたいなの。書いてある事が難しいのもありますが、 僕が思うに和訳がひどい性で、とても読みにくくなっている気がします。 内容は、すばらしい。

++演算子を++i、i++と書いた場合の違いを知ってますか?知りたければ、 この本をどうぞ。

Effective STL

STLを効果的に使いこなす50の鉄則

Scott Meyers, アジソン・ウェスレイ・パブリッシャーズ・ジャパン株式会社, 2002

vectorとstringはCのライブラリと互換性がある事を知っていますか?

vectorがCのライブラリと互換性があると言うことは意味するところは?

連想コンテナにfindアルゴリズムを使うと予期しない値が返る可能性があることを知っていますか?

分からないことがあったら、Effective STL!

Efficient C++

パフォーマンスプログラミングテクニック

ダブ・ブルカ+デビット・メイヒュ, 浜田 真理、浜田 光之訳、 株式会社ピアソン・エデュケーション, 2000

戻り値の最適化と言うのを知っていますか。

メモリプールを使うとどのくらいパフォーマンスの違いが出るか知っていますか。

インライン化は何をしますか。どんなメリットがありますか。どんな関数をインラインかすべきですか。

list、vector、mapの得意な操作、不得意な操作を知っていますか。

マルチスレッドにするとパフォーマンスが低下する可能性があるのを知っていますか。

分からないことがあったらこの本を読みましょう。

Exceptional C++

47のクイズ形式によるプログラム問題と解法

ハーブ・サッター著、浜田 光之訳、 株式会社ピアソン・エデュケーション, 2000

「Effective C++」、「More Effective C++」を読んだ後にどうぞ。

例外安全なコンテナには何が必要ですか。

以下のコードはどの関数が呼ばれるでしょう。また、何故そうなっているのでしょう。

namespace A
{
    struct X;
    struct Y;
    void f(int);
    void g(X);
}

namespace B
{
    void f(int i)
    {
        void (i); // どのf() ?
    }
    
    void g(A::X x)
    {
        g(x); // どのg() ?
    }
    
    void h(A::Y y)
    {
        h(y);    // どのh()?
    }
}

答えは、この本の中に。

大規模C++ ソフトウエアデザイン

ジョン・ラコス, 滝沢 徹・牧野 祐子訳, ピアソン, 1999

同じような内容が繰り返し出てきて読んでいて疲れます。本当にあれだけのページ数が必要なのか、というのは微妙です。

それでも、大規模プロジェクトを作るまたは、大規模プロジェクトに携わる機会のある人は読んでみると良いと思います。

private static メンバ変数は本当にそこに宣言する必要がありますか?

関連のあるクラスはどうファイルに分割はどうしますか?どのようなディレクトリに配置しますか?

includeは何処に書くのが正しい?

これらの答えを知りたい時はこの本を。

Modern C++ Design

ジェネリック・プログラミングおよびデザイン・パターンを

利用するための究極のテンプレート活用術

アンドレイ・アレキサンドレスク, 村上 雅章訳, ピアソン・エデュケーション, 2002

More Effective C++ の次はこれ!

一歩上を目指すなら読むべし。

テンプレートの意外で、とても便利な使い方指南本。

これを読めばBoostの目指すところが見える。

Standard Template Libjrary プログラミング

επιστημη(えぴすてーめー), 秀和システム, 1999

STLについて書かれた本。内容が結構マニアックで、 いきなりこの本でSTLを学び始めようとした、僕は挫折しました。 STLの勉強というよりは、リファランス的な使い方が良い本だと思います。

Essential C++

スタンリーB. リップマン、鈴木茂哉 訳、ピアソン・エデュケーション、2000

「C++ Primer」の著者がC++の入門者のために書いた本らしいのですが・・・、とても入門書とは思えません。内容はヘビーだし、簡単なリファレンスのような扱い。至る所に参考文献への参照がかかれていたり。

Accelerated C++

効率的なプログラミングのための新しい定跡

アンドリュー・コーニグ/バーバラ・E・ムー、小林 健一郎 訳、ピアソン・エデュケーション、2001

C++以外で精通しているプログラミング言語がある。オブジェクト指向プログラミング言語の経験がある。とにかく短期間でC++プログラムを書く必要がある。以上の人は、C++の入門書としてこの本の13章までは使えるのではないかと思います。

14~15章は入門書なのに、参照カウンタ付きのメモリ管理クラスの設計の話になって、それは・・・、という気がします。

Visual C++関連

Visual C++ 5.0プログラミング

柏原正三, 翔泳社, 1998

Viaual C++の入門書。今は、これのVC6版が出ているはずです。

入門書として最高の1冊ではないかと思います。

さらに、入門書にとどまらない、幅広い内容が良いです。

長く、愛用できる1冊。

Visual C++ 5 パワフルテクニック大全集

Scott Stanfield, Ralph Arvesen, インプレス, 1998

Visual C++で、ちょっと変わったテクニックを使いたい時に、読むと、 かなりの確率で問題が解決出来る1冊。

四角形でないウインドウを出すには?

他のアプリケーションの終了待ちをするには?

などなど、内容は盛りだくさん。

MFC プログラミング

Alan R. Feuer, アジソン・ウェスレイ・パブリッシャーズ・ジャパン, 1998

MFCに深く精通したいと願うなら、手始めにこの1冊を読んでみるのも 良いかと思います。それなりに満足のいく答えが得られると思います。

他、ダイアログバーを使いたいと思ったときもここにヒントがあります。

PHP

PHPプログラミング入門

レオン・アトキンソン, 玉川竜司 訳,
株式会社ピアソン・エデュケーション, 2000

PHP3の基本機能を一通り説明してあります。サンプルが豊富 なので、サンプルの多い参考書が好きな人にはお勧めです。

一度関数一覧を全部眺めてみると良いと思います。標準関数があるの にそれを知らないで、自分で実相するのは馬鹿らしですから。ただ、 個人的にはアルファベット順ではなく、機能別に関数が並んでいて 欲しい気はしますが。

例解PHP

Sterling Hughes, Andrei Zmievski, 武藤健志 訳,
翔泳社, 2001

PHP4を使った問題解決例が載っています。入門書ではないので 言語の基礎的な説明はありません。

PHPを使った問題の解決方法が載っています。目次を見て知りたい 項目があれば買うという形が良いかと思います。

オブジェクト指向

憂鬱なプログラマのための オブジェクト指向開発講座

Tucker!, 翔泳社, 1998

伝説の雑誌DDJの連載から出来た本。

オブジェクト思考とは何か。それによって、プログラマの得られる メリットは、デメリットは。

オブジェクト指向に乗っ取った、開発方法とはどんなものか。

そんな、疑問に分かりやすく答えた1冊。これを1冊読めば、あなたも オブジェクト指向の基礎を理解できるはず!

DDJが懐かしい。復活しないかな、DDJ。

デザインパターン

デザインパターン プログラミング

W・プリー, 佐藤 啓太・金澤 典子 訳, 株式会社トッパン,1999

デザインパターンとは何か、と言うことについて書かれているのですが ・・・、いかんせん読みにくい。

内容も少し古い気がします。

デザインパターン 改訂版

Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,
本位田 真一・吉田 和樹 訳,
ソフトバンク パブリッシング, 2000

デザインパターンカタログですね。

Composite, Decorator, Proxy, Command, Iterator, Observer, Strategy,Visitor(他にもあります)などの各パターンについて、 どんな時に使うのか、どんなメリットがあるのか、どんなデメリット があるのか、が書いてあります。また、各パターの説明にクラス図、 C++のサンプルソース、Javaのソース(CD-ROMにのみ付いている)が あります。僕個人としては、サンプルがないとどう実相して良いのか 分からないのでその良い勉強になります。クラス図の表記法は少し 古いですが。

長々と書きましたが、とにかくお勧めの1冊。これを見れば、 プログラムを作る時の大雑把な方針を立てられます。また、人のソース、 ライブラリ(MFC, JFCなど)を使う時に、どんな目的で作られ、 どのように利用して欲しいのかが分かると思います。

ツール

入門Make & RCS

伊藤和人, 秀和システム,1999

Makefileの書き方が書いてあります。

VCなどの統合開発環境しか使ったこと人も勉強してみましょう。 makeが分かるとプログラムの出来上がる過程を理解する手助けになる と思います。

後半はバージョン管理ツールのRCSの説明です。RCSは、CVSが利用 しているコマンドなのでRCSのリファレンスとして持っておくのも良いかな と思います。

csh & tcsh

安田絹子, 秀和システム,1998

Cシェルのマニュアルです。

設定ファイルの書き方から、シェルスクリプトの書き方まで載って ます。

シェルは奥が深いですね、まだ全機能を使いこなしてはいません。

入門CVS

大月美佳, 秀和システム,2001

バージョン管理ツールCVSのマニュアルです。

インストール、基本的な使い方、サーバーとしての設定まで必要な 項目全てを満たしていると思います。windowsユーザの事も考慮した解説 も豊富なのでwindowsユーザの人にもお勧めです。

読み物

UNIXという考え方

Mike Gancarz, 芳尾 桂 監訳, オーマ社, 2001

UNIXがなぜあそこまで不親切なのか。コマンドのエラーを表示しないのか。 その理由を語ってくれます。

なるほど、納得できる理由です。しかし、やはり初心者を拒んでいるし、 パソコンオタクのおもちゃという感じがします。それ故、使えば使うほど 手に馴染む訳ですが。

プログラムはなぜ動くのか

矢沢 久雄, 日経BP,2001

CPUで命令が実行される仕組み、メモリの意味、ソースファイルから実行形式 ができるまでの流れ、OSとアプリケーションの関係、2進数について、データの 圧縮について書かれています。

内容はヘビーなのですが、とても分かりやすく書かれています。 CPUでプログラムが実行される方法やメモリ管理について知っていると プログラムを作るときの考え方が違ってくると思います。本格的にプログラム を作りたい人は一度読むことをお勧めします。

ただUNIXについての記述は納得できないな・・・。

オブジェクト指向開発の落とし穴

Bruce F. Webster, 細井 拓史 訳, ピアソン・エデュケーション, 1999

以下、「はじめに」から引用。

それぞれの、陥りやすい間違いが見開き2ページで説明されています。 それがなぜ起きるのかという理由や原因から始まり次のような項目が 続いています。

  • 前兆
  • 結果
  • 結果
  • 検地方法
  • 回復方法
  • 予防法

要するに、こんな事するとこんな惨憺たる結果になる。その場合の対応策と、 そうならないための予防策が書いてあるのです。この本は、だから オブジェクト指向は使えないというのではなく、こんな事に気を付けながら オブジェクト指向開発をしましょうというほんでした。

読み物としても、かなり面白いです。

επιστημηのオブジェクト指向的日常

επιστημη(えぴすてーめー), 翔泳社, 2000

C++の歴史、オブジェクト指向、STL、Javaの話題にふれながら、 επιστημη(えぴすてーめー)さんが、僕は普段こんな風にプログラム 作ってるよ、という本です。

プログラム作るのが好きなんですね、というほが伝わってきてそれはそれで 面白い。

達人プログラマー

システム開発の職人から名匠への道
アンドリュー・ハント, デビッド・トーマス,
村上 雅章 訳,
ピアソン・エデュケーション, 2000

職業プログラマのトップを目指すための心構えが書かれています。

なんだか、難しそうな印象を受けるかもしれませんが、書いてある内容 は優しいです。実践していくのは、大変なんですが。仕事でプログラムを 作る機会がある人は、この本を読むことをお勧めします

Javaのプログラムも作れるようになった、MFCも使える、DBへのアクセス もできる、クライアント・サーバープログラムも作った。ひょっとして結構 プログラム作れるんじゃないの?と慢心していた僕をこれでもか!と言う くらい叩きのめしてくれた本。いや、いろいろ勉強になりました。

プロジェクト管理など

人月の神話

狼人間を撃つ銀の弾はない
フレデリック・P・ブルックス, Jr,
滝沢徹・牧野祐子・富澤昇一 訳,
ピアソン・エデュケーション, 2001

ソフトウエア開発プロジェクトをこんな風に管理すると上手くいく、こんなのは駄目、という話。仕事でプログラムを作る人は呼んでみると良いと思います。趣味で作る人には関係ない話かもしれません。

バイト先の上の人には「是非」呼んで欲しいです。特にブルックスの法則だけでも知って欲しい。

「遅れているソフトウェアプロジェクトへの要員追加はさらに遅らせるだけ」

ピープルウエア 第2版

ヤル気こそプロジェクト成功の鍵
トム・デマルコ,ティモシー・リスター,
松原友夫・山浦恒央 訳,
日経BP社, 2001

サブタイトルにありますが、プロジェクトに関わる人のやる気がプロジェクトを左右するという話。

どんな環境がプログラマに取って働きやすいのか悩んでいる人は読んでみると良いでしょう。

ただ訳者あとがきにある、「受身のプログラマが多い日本の産業構造では仕事の楽しさを享受するにはほど遠い」と言うのは事実だろう。この本で言っている「楽しさ」は難しいプログラムを作り上げていく喜びの事を言っているのです。

まずは、難しいプログラムを作り上げる事に喜びを感じる人材を集めてからだね。

デッドライン

ソフト開発を精巧に導く101の法則
トム・デマルコ,
伊豆原弓 訳,
日経BP社, 2002

ビル君が「一度専制君主をやってみたかったんだ」なんて言いながら某小国を買い取り、その国をソフトウエア生産国にしようとするなんて小ネタで始まる、理想のソフトウエア開発とは何かを考える本。

管理はは何をする人?

残業を増やすと残業時間分は生産量が増える?

プロジェクトへの人数のかけ方は?

それらの問題への答えの1つを提供してくれる本です。管理者と呼ばれる立場の人には是非読んでおいてもらいたいものです。

ゆとりの法則

誰も書かなかったプロジェクト管理の誤解
トム・デマルコ,
伊豆原弓 訳,
日経BP社, 2002

プロジェクトを運営するときに、やってはいけない事、やるべき事が分かりやすく書いてある本。デッドラインに書いてあるポイントをピックアップして説明を書いてあると言った感じかな。

ワインバーグのシステム思考法

G.M.ワインバーグ, 大野 zq郎 訳, 共立出版株式会社, 1994

まず最初に言わせていただきたい。日本語がおかしい。英語の単語の並びそのまま、日本語になっている気がする。英語特有の指示語満載の部分も「それ」「あれ」となっていて日本語が難解。

ソフトウエアを開発する組織を3つの主要パターンと2つのさらに発展したパターンに分類。

とある組織がどのパターンであるかの見分け方。上位の組織への移行が必要になった場合(大規模なプロジェクトが多くなったとか、顧客が増えたとか)の上位のパターンへの移行方法などが書いてあります。

たのむ、誰か和訳し直してくれ。内容はよいのに、日本語を理解するのにとても時間がかかる。