推薦図書/必読書のためのスレッド PART 5
■ このスレッドは過去ログ倉庫に格納されています
PART 4 http://pc3.2ch.net/test/read.cgi/tech/1022961238/
プログラム技術板倉庫
http://tito.fc2web.com/2ch/tech/index.html
シンプルな構成
C/C++の分類では入門書の紹介もしているので、これからというあなたは一度目を通しましょう
推薦書籍集
http://bookshelves.tripod.co.jp/
一冊毎にコメントがあったりなかったり、なかなか親切
本スレでまとめられてない書籍の紹介などもある
リンクは>>2-3
0175139
NGNG>>164
「説明の王道」はわかりませんが、説明の順番は人それぞれでは?
実際の開発と説明の順番が一致している必要はないと思いますし、
少なくも俺には、コバケンの「引数なしのコンストラクタ」の説明は、よくわかるものでした。
ロケットの例をご覧になりましたか?
>>165
これが>>154さんとは信じたくないですが、コバケンは「望ましい」ではなく「付けるべき」と
言ってるのでは?また、p227です。
>>166
すでに初心者の話ではないですよね。
C++の文法自体が例外中の例外・・・って言われても。
>>168
「基本型」は「きほんがた」ではなく「きほんの形」と言ってるだけでは?
この辺になると、揚げ足取りのように・・・
>>173
私もそう思います。あくまで、個人的な感想ですが。
なんだか、もう、消えます。
0176デフォルトの名無しさん
NGNGこばけん信者の方が完全に論破されたように見える。
>>168基本型、>>165デストラクタをvirtualにしてない。>>145継承と
派生は同じ意味の言葉。
ざっと見ただけでまだ、これだけの問題がある。
0177デフォルトの名無しさん
NGNG>「基本型」は「きほんがた」ではなく「きほんの形」と言ってるだけでは?
これはなぁ…かなりまずい誤植でしょう…
0178デフォルトの名無しさん
NGNG0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG初心者相手の本だったら、むしろ「デストラクタはおろか、メンバ関数は
なんでもかんでも仮想関数にすべし」と書くべきだと思うよ。
仮想関数にしない方法こそ、レベルが上がってから習得すればいい。
>>174で「継承時の危険性が怖い」とか「この原則」って何のことを
言ってるのかわからないけど、初心者相手にデストラクタを仮想関数に
しない方法を教えても、はっきりいって無意味。使い分けろというのは
もっと無理。
>パフォーマンス云々とか例外事項を扱う必要があるとはおもわない
のであれば、コバケンの記述こそおかしい。
0181デフォルトの名無しさん
NGNG通じないよ。最初にそれが正しいと刷り込まれちゃってるんだから。
>「基本型」は「きほんがた」ではなく「きほんの形」と言ってるだけでは?
>この辺になると、揚げ足取りのように・・・
これが揚げ足取りと感じるんだから、もう救いようがない。
基本型がなんであるかということを教わっていないからこういう風に
感じてしまう。
0182デフォルトの名無しさん
NGNG/ ´_ゝ`) 望洋で、解決
| /
| /| |
// | |
U .U
0183デフォルトの名無しさん
NGNG0184デフォルトの名無しさん
NGNG0185173
NGNG君は初心者に説明するとき、
「デストラクタはおろか、メンバ関数は なんでもかんでも仮想関数にすべし」
こんなこと言うの?こんな本あったら、それこそ問題だと思うけど。
「仮想関数を持つクラスには仮想デストラクタを用意すべき」
ということについて議論しているんだよ?これに対する反論は
「仮想関数を持つクラスであっても、デストラクタを非仮想にす
ることもある」っていうことでしょ?
君の言ってることは反論を正当化する理由にもなってないし、ナンセンス
だよ。
そもそも仮想関数にするってことは、そのクラスを基底クラスとして
使うってことを暗に示してるわけじゃない。つまり仮想関数の説明は
クラス継承の仮想機構のところで言及する事項だよ。
「デストラクタはおろか、メンバ関数は なんでもかんでも仮想関数にすべし」
仮にこんなこと言うくらいなら、いっそのこと仮想機構の説明自体しない方が
いいよ。
0186173
NGNG続き
「継承時の危険性が怖い」って書いたのは、「仮想関数を持つクラスに
仮想デストラクタを定義しなかった場合の危険性」についてのこと。
この原則っていうのは、「仮想関数を持つクラスには仮想デス
トラクタを用意すべき」という原則のこと。
因みに、いろんな本というのはhttp://www.accu.orgで推奨されてる本のことね。
あと、オレはこばけん育ちじゃないからね。
この話はこれで辞めるよ。
0187デフォルトの名無しさん
NGNGC++の知識なしでVC++をいじる為に最適な本を教えてくだされ
0188デフォルトの名無しさん
NGNGコンソールアプリ作るだけなのと、窓を出すプログラムつくるので
かわってくるとおもうが。
0189173
NGNG「継承時の危険性が怖い」って書いたのは、「仮想関数を持つクラスに
仮想デストラクタを定義しなかった場合の危険性」についてのこと。
この原則っていうのは、「仮想関数を持つクラスには仮想デス
トラクタを用意すべき」という原則のこと。
いろんな本読んできて感じることだけど、まずセオリーとして
「仮想関数を持つクラスには仮想デストラクタを用意すべき」
というのは全く正しい。
ただし、「仮想関数を持たない場合でも、仮想デストラクタが必要な場合もあ
る」ってことだよ。オレはね、パフォーマンス改善のために「仮想関数を持つ
クラスに仮想デストラクタを付けない」っていうのは、クラス設計の見直しが
必要だと考えるけどね。
因みに、いろんな本というのはhttp://www.accu.orgで推奨されてる本のことね。
この話はこれで辞めるよ。
0190187
NGNG書き方が悪かったですね
Windowsプログラミングが目的です
MFCを使わなければC++の知識なしでも一応出来ると聞いたのですが
0191デフォルトの名無しさん
NGNG>なんでもかんでも仮想関数にすべし」と書くべきだと思うよ。
>仮想関数にしない方法こそ、レベルが上がってから習得すればいい。
そりゃ、最低の本だな。どこにあるか教えてくれ。(w
0192デフォルトの名無しさん
NGNG読んでないからわからんけど。
0193デフォルトの名無しさん
NGNGで、あんたのお勧め本はなんなんだよ。
0194デフォルトの名無しさん
NGNG ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( )
|望洋|
(__)_)
0195デフォルトの名無しさん
NGNG ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( )
|望洋|
(__)_)
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNGえ?どうして?
0198デフォルトの名無しさん
NGNGあと、柏原ってのもイマイチだった。
0199デフォルトの名無しさん
NGNG望洋のC++本読んで例外やSTL他ISO標準化以降のC++について何か得られるところがあるか?
0200デフォルトの名無しさん
NGNG望洋はプログラム入門書ということで
0201デフォルトの名無しさん
NGNGC++でデフォルトがそうなってるからそうするべきだと思ってる
ヤシが世の中には多すぎるでな。
俺はSmalltalk→C++→Javaだが、いまだにC++のメンバ関数の
デフォルトが仮想じゃないのが不思議でたまらん。どういうときに
仮想にしないと便利なのか知りたい。
普段は全部仮想関数にしているが、仮想にしない方がいいときと言う
のはあるんだろうか?
0202デフォルトの名無しさん
NGNG0203デフォルトの名無しさん
NGNGハナから考えてないし、派生クラスを作るときに基底を
ゴチャゴチャ書き換えることになんの抵抗も感じないんだろ。
0204デフォルトの名無しさん
NGNG「メンバ関数を仮想にしないと、クラスは再利用性できない」ということ?
0205デフォルトの名無しさん
NGNGメンバ関数が仮想になっていないと基底クラスとして再利用
できないという局面は多い。かといって、そこで基底側を
書き換えるのはタブー。既に他のクラスの基底として使われている
こともあるし、そうすると、過去そのクラスを使っていたアプリケーションの
挙動が変わる可能性がある。基本的には全部最初からテストし直しだな。
0206デフォルトの名無しさん
NGNGあの本は入門と比べればかなり高度な域まで解説してるので秘伝で良いと思う。
前橋より深い部分が多々あるし。
あと俺は、こばけん読んでないしこばけん擁護するつもりはないが、
憂鬱本やJava、Smalltalkの思想を始めとした「なんでもかんでも仮想にすべし」
って思想はどうかと思う。
オーバーライドしちゃいけない関数ってのもやっぱり存在する。
自分の作ったコードを赤の他人が勝手にオーバーライドすることを考えてみろよ?
バグにならないかどうか不安だろ?
ただ、デストラクタは仮想ってのは同意。これは鉄則で良いと思う。
基底クラスのデストラクタは必ず呼ばれるし、デストラクタがあるのに
呼ばれないなんて状況は普通はあってはならない。
ただし、メモリの関係上好ましくないこともある。これは入門者の域を
やや越えた知識だろう。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNGなんか外れてるぞ。
仮想関数を持つクラスには仮想デストラクタをつけるべし
でよいかどうかってことが問題なんでしょ?
こばけん支持派も反対派も
”メンバ関数は仮想関数にすべきではない”
なんて主張していないと思うけど。
0209デフォルトの名無しさん
NGNG初版の方だけど、ちっとも高度じゃなかったよ。
今の版は読んだことないからわかんないけど。
今度見てみる。
0210デフォルトの名無しさん
NGNG>オーバーライドしちゃいけない関数ってのもやっぱり存在する。
C++には「オーバーライドさせない」っていう仕組みはないよ。
Javaのfinalと、C++の非仮想関数をごっちゃにしてるヤツは
多いけど、C++の非仮想関数は「オーバーライドさせない」という
仕組みではなく、「オーバーライドしちゃいけない関数でも
オーバーライドできちゃって、しかもポインタ経由で呼んだときと
インスタンスを直接読んだときでは挙動が変わってしまう」だけ。
こんなもん初心者に使わせたら絶対ダメだと思うけどね。
0211デフォルトの名無しさん
NGNG>”メンバ関数は仮想関数にすべきではない”
>なんて主張していないと思うけど
ちゃんとスレ読め。みんなして言いまくってるよ。
0212デフォルトの名無しさん
NGNG支持派「別に仮想にしなくたって良い。入門書でそんなこと言わなくても良い。」
やっぱり反対派の方がまともなこと言ってるかと…
0213デフォルトの名無しさん
NGNGん?非仮想の場合は、「オーバーライドした」とは言わなくないか?
それとも、仮想基底クラスにした場合のことか?
まあどちらにせよ、C++の厳密なことを議論しても意味無いと思う。
どちらにしても、なんでもvirtualにしろってことにはならない。
0214デフォルトの名無しさん
NGNG亡羊の「秘伝C言語問答」って名前だけで読む気しないんだけど。
なんで、「秘伝」なの?C言語って一子相伝とか?
で、亡羊君は、なんでその秘伝を知ってるの?
題名だけで、トンデモな気持ちになるけど。
0215デフォルトの名無しさん
NGNGその題名でそういう気持ちになる君がトンデモ。
0216デフォルトの名無しさん
NGNG>望洋はプログラム入門書ということで
俺も講義とかいうの買ったけど、3ページ読んで捨てた。
0217デフォルトの名無しさん
NGNG誰に秘密なの?(クスクス
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG俺も、ちょっと見たけど、何が高度なんだかわかんない。
著者の思い込みは感じたけど。
ま、それでいいのかもね。
0220デフォルトの名無しさん
NGNG高度ってのは例えば、配列の表記がシンタックスシュガーであるだとか、
配列名がどういうプロセスを経て最終的にポインタと解釈されるのか、
あるいは値渡しのメカニズムなど、正確で細かいことをきっちりと
言ってること。普通の入門書には書いてないことが多い。
そういう意味で高度だってこと。
前橋の本も同様に高度ではある。が、こっちは後発の望洋に反論されている。
0221デフォルトの名無しさん
NGNGだが具体例がまったく出てないので無意味だ。
哀れな・・・(・∀・)ニヤニヤ
0222デフォルトの名無しさん
NGNG「コードの再利用のために継承を使う」って書いてたのがだめぽ。
0223デフォルトの名無しさん
NGNGおまえが一番だめだろ(核爆
0224デフォルトの名無しさん
NGNG>>反対派「普通は仮想デストラクタにした方が良い。これは重要なので書くべき。」
>>支持派「別に仮想にしなくたって良い。入門書でそんなこと言わなくても良い。」
>>やっぱり反対派の方がまともなこと言ってるかと…
日本語読める??
こばけん支持派「仮想関数を持つクラスには仮想デストラクタをつけるべし」
こばけん反対派「仮想関数を持つクラスでも、デストラクタを非仮想にするこ
ともある」
だろ?
だから、チミの判断では支持派がまともなこと言ってるとなるが、どうよ?
0225デフォルトの名無しさん
NGNG確かにそういう側面もあるじゃない。別にいいんでないの。
0226デフォルトの名無しさん
NGNG>こばけん支持派「仮想関数を持つクラスには仮想デストラクタをつけるべし」
>こばけん反対派「仮想関数を持つクラスでも、デストラクタを非仮想にするこ
>ともある」
>だろ?
わざとじゃないかと思うくらい全然違うこといってますな。
0227デフォルトの名無しさん
NGNG前橋「コードの再利用のための継承は最近ではすっかり悪者にされています。」
でも、これ結構正しいかもよ。
継承しすぎると何がなんだかわけわからなくなるし。
0228デフォルトの名無しさん
NGNG本人はわかって逝ってるんだろうけど、それを極端に
なにから何まで当てはめようとするヤツが出てくるから。
0229デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/4774111864/ref=sr_aps_b_3/250-4044361-5925843
が良書でしょうか?
前ログで見たような気がするんだけどDAT落ちしてて見れない。。。
0230not229
NGNG俺は知らないんで何とも言えないが、ちょっとスレの流れを
変えたく思う。
0231デフォルトの名無しさん
NGNGいや、おれも読んでて、212の支持派と反対派が逆
だと思ったが。
0233デフォルトの名無しさん
NGNGそれは大きな誤解だと思うぞ。でも関係ない議論にずれてって、いつのまにか
226のように支持派が勘違いしてるような雰囲気はあるな。
0234デフォルトの名無しさん
NGNGでも継承で実現してるポリモフィズムは、コードの再利用をしてるって
言わないかな?一つのコードをいろんな動作に使えてるんだから。
0235デフォルトの名無しさん
NGNGプログラム言語である以上はコードは再利用されるんだから。
問題はコードのみの再利用か、概念も再利用しているか、
というあたりじゃないのかな。
0236デフォルトの名無しさん
NGNG良書というか辞書みたいなもんだね
とりあえず上・下買っとけば参照するときに困ることはないと思う
入門書といった類のものではない
0237デフォルトの名無しさん
NGNG確かに前スレで薦められています。
私も前スレとAmazonnレビューとでこの上下を買いました。
まだ読み始めたばかりなのですが、悪くないと思います。
ただ、上下で結構な厚さ(と金額)になるので
移動中に読むのには向きませんし
家でも開くのが億劫になる時があります。
薄目のものでさらりと流しておいて
もっと詳しく、と思ってからでも良いかもしれません。
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG凄く嬉しかったらしく、毎晩いじってた。
そして、先週母親が、『カメラ写らなくなったから直してよ。』っと
俺に言ってきた。俺は、めんどくさかったので、説明書良く読め!!
っと少し怒鳴り口調で言った。。。。。
次の日、母親が事故で他界した。
遺品を整理してて、何気なく母親のデジタルカメラを見てみたら
写真記録枚数が、容量オーバーしていた。
そして、デジカメには、俺の寝顔が、写っていた。涙が止まらなかった。
0240デフォルトの名無しさん
NGNG/ ´_ゝ`) 航海してます、、、
| / お母さん五面
| /| |
// | |
U .U
0241231
NGNGいや、すべては>>145の
>参考までにききたいんだけど、139はやっぱり、「仮想関数が
>あるときにデストラクタを仮想にするんだ」
から始まったんよ。こばけんは「仮想関数を持つクラスには仮想関数
をつけるべきだ」と言ってて支持派はこれを支持しているわけで、
>>212の
>支持派「別に仮想にしなくたって良い。。」
なんて一言も言ってないよ。180度曲解ですぞ。
仮想デストラクタについては、こばけんの説明は正しいと思うけどな。
ちっとも批判の対象にすべき部分ではないと思うんよ。
もちろん仮想関数がなくても仮想デストラクタが必要なときも
あるけどね。
0242デフォルトの名無しさん
NGNGん〜、買おうか迷う。これのHTMLのやつが昔わかりやすかった記憶がある
入門書となるとどんなのが良いの?
0243デフォルトの名無しさん
NGNGでも、反対派はどうして文句を言ってるかというと、
「仮想関数がなくても仮想デストラクタが必要なときもある」
のはもちろん、「殆どの場合は仮想にしたほうが良い」から。
だから、反対派は「デストラクタを非仮想にすることもある」
なんて主張する意味はないし、実際してないんだよ。
これこそ180度曲解だね。
きっと>>145も、「デストラクタは殆どの場合は仮想にしたほうが良い」に
対する反論を聞きたかったんだよ。
でも、賛成派がこの意図を180度曲解したまま議論が続いちゃったんだろうな。
0244デフォルトの名無しさん
NGNG>>145以前の議論を踏まえて考えれば誤解されないとは思うけど、>>145
だけ見ると問題があるな。
0245デフォルトの名無しさん
NGNGストラウストラップのp381の「アドバイス」に反対してるわけだろ。
反対派の人たち(実は1人か2人だろ)は、実は、ストラを読んだことはなくて、
Javaを勉強してC++がわかった気になっている、に一票だな。
C++の文法自体例外中の例外とか言うくらいだから。
これ以上続けたいなら、別スレ立てろよ。
0246デフォルトの名無しさん
NGNGスレ違いじゃないし。列挙するだけならこのスレに存在価値はない。
別スレ誘導は却下だ。
0247デフォルトの名無しさん
NGNGいや、全く違う。いい加減にしてくれ。
0248デフォルトの名無しさん
NGNGこれには誰も反対していない。
だがこれだけしか書いてないと、入門者にはまずいということが
問題になってるだけ。
それに、デストラクタが仮想が良いってのはJavaの思想は関係なくて
C++の「常識」。
どちらの本か忘れたけど、ストラウストラップの本にも書いてあったと思う。
EffectiveC++にも書いてあった。
0249見習い戦士
NGNG0250デフォルトの名無しさん
NGNGぱっと見て、「アルゴスの戦士」かとおもたーよ。
0251名無し募集中。。。
NGNG柴田望洋の「C言語によるアルゴリズムとデータ構造」がおすすめだ。
アルゴリズムとデータ構造の基礎について、
豊富な図表やC言語のプログラムを使って明解に解説してあるし、
付録CD-ROMにはアルゴリズムゴリズムの動きが手に取るようにわかる
『アルゴリズム体験学習ソフトウェア』を収録されてある。
アルゴリズム入門書の決定版と言っていいだろう。
0252デフォルトの名無しさん
NGNGこの手の本の需要も高いのかな。
過去スレだと奥村のアルゴリズム事典や近藤の定本アルゴリズムも
良いらしいね。でも見たこと無い。
過去スレは参考になるな。
>>186のhttp://www.accu.orgも良い。
0253デフォルトの名無しさん
NGNG0254デフォルトの名無しさん
NGNGどうせ全然知らないんだろうけど。
0255デフォルトの名無しさん
NGNG奥村晴彦だーよ。書き間違えたか?
>どうせ全然知らないんだろうけど。
うん。奥村と近藤以外の人のは知らない。
どちらも、まじにお勧めです。
0256デフォルトの名無しさん
NGNGだな。
柴田望洋?(プ
0257デフォルトの名無しさん
NGNGC++が例外じゃないって言うなら
メンバ関数が仮想じゃない言語をC++以外に上げてみてくれ。
さぞやたくさんご存じなんだろうが。
0258デフォルトの名無しさん
NGNG>>245じゃないがC#。まあ確かに珍しいが。
でも最新の言語でそうなってるということは、やっぱり
なにか理由あるんだろう。
それから、この話題はデストラクタとは関係なくないか?
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG単にC++からの移行しやすさ最優先だからじゃないか?
GCはサーバープログラムには必須だからつけたみたいな。
0261デフォルトの名無しさん
NGNGいきなり、逆ギレってヤツ?
やめなよ。
それより、奥村せんせーって偉いな。
>>256のページに見入ってしまったよ。
こういう文化的な話がしたいな。
って、これはスレ違いだったな。スマ。
0262デフォルトの名無しさん
NGNGまあデストラクタを仮想にする条件の話から
普通のメンバ関数を仮想にするかどうかに話が発展
したんだろ。そもそもはコバケン信者が、初心者にはC++の
デフォルトだけ教えておけばいい的な発言に端を発して
るじゃないか?
0263デフォルトの名無しさん
NGNGまじに>>251の本なんてあるの?
見つかんねーぞ。
これは、何かの罠?
0264デフォルトの名無しさん
NGNGC#はC++よりもJavaのパクリだって言われてる言語だぜ?
それに、これだけ重要そうな事項で、移行しやすさを
優先するとは考えにくいな。
overrideってキーワード使わなくちゃいけない時点でC++
と違うし。
0265デフォルトの名無しさん
NGNGいや、今検索したらかなりマイナーだけどあるくさい。
俺も知らなかったな。今度一応買ってみようかな。
アルゴリズムの本ってそんなに必要な気はしないが。
0266デフォルトの名無しさん
NGNG> 2002年7月30日 発行
ってあるが・・・
0267デフォルトの名無しさん
NGNGまあいいけどさ。
0268デフォルトの名無しさん
NGNG不正解。これは、カルトクイズでした。
0269デフォルトの名無しさん
NGNG望洋先生の勇み足でしたね。
でも、見ないフリ、見ないフリ。
0270デフォルトの名無しさん
NGNGいや、数日前に手に入ってもおかしくは無いよ。
0271デフォルトの名無しさん
NGNG ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧ ニヤニヤ
( ・∀・)
( )
| 亡|
(__)_)
0272デフォルトの名無しさん
NGNG0273デフォルトの名無しさん
NGNGhttp://tsutsui.gfc.shotoku.ac.jp/~tsutsui/study/3zen/thu11.html
0274デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています