K.Maebashi's BBS

ご自由に書き込んでください。雑談も可。
テスト書き込みの類はテスト用掲示板にどうぞ

[日付順表示] [日付順インデックス] [スレッド順インデックス]

新規投稿 | 開設者ホームページへ戻る | ヘルプ

[1150] Re:makeファイル中のリダイレクト
投稿者:tos
2008/08/28 10:00:12

cygwin をインストールして確認しましたが、 やはり、Borlandのmakeと同じ結果でした。 確認方法は、下記のようなmakefile及び バッチファイルを用意して、 (ダミーの"source.dat"と"app.exe"も用意して) --- makefile -------------------- target.dat : source.dat test.bat --------------------------------- --- test.bat -------------------- app.exe target.dat < source.dat --------------------------------- cygwin上?でmakeを実行しました。 すると、やはり'<'の前に'0'が付加されます。 --------------------------------- $ make test.bat app.exe target.dat 0<source.dat ~ --------------------------------- 何故でしょうか? 環境は、下記です。 GNU make 3.81 Windows XP Professional Version 2002 Service Pack 2
[この投稿を含むスレッドを表示] [この投稿を削除]
[1149] Re:makeファイル中のリダイレクト
投稿者:tos
2008/08/26 14:25:45

>file1.hoge ではなく hoge1.txt みたいに8文字ドット3文字以下の >過去互換性重視なファイル名に変えてみると良いかもしれん、ということぢゃ >直るかもしれんし、直らんかもしれん。どっとはらい。 理解できました。ありがとうございました。 引き続き試してみます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1148] Re:makeファイル中のリダイレクト
投稿者:774RR
2008/08/26 13:51:52

ちなみに GNU make はソースコード提供なので開発環境がないと作れない make 自体は開発環境の一部であり、これがうまく動かないのではコンパイルできない という自己矛盾の状況に陥るわけだ。 cygwin 開発環境一式持ってくるほうが結局面倒が無いかも知れんっす。 そーすると gcc コンパイラ自体も入手できちゃうので某の出番は無い可能性が・・・ 掲示板のスペースで cygwin の解説など不可能っぽいので http://journal.mycom.co.jp/special/2002/cygwin/index.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[1147] Re:makeファイル中のリダイレクト
投稿者:774RR
2008/08/26 13:42:30

むかしむかし、あるところに MS-DOS というものがあってのぉ MS-DOS ではファイル名に「8文字以下 ドット 3文字以下」しか使えなかったのぢゃ その関係でなぁ、 Win95 以後のソフトでも8文字ドット3文字のファイル名しか 扱えないような、そーいう過去互換性重視なモノもあったのぢゃよ # 某の make がそういう過去互換重視なものかどうかは知らんがのぉ hoge.exe は4文字ドット3文字だから問題ない file1.txt は5文字ドット3文字だから問題ない のぢゃが file1.hoge や file2.piyo は5文字ドット4文字なのでな、 過去互換性重視なソフトに取っては非互換なファイル名なのぢゃよ file1.hoge ではなく hoge1.txt みたいに8文字ドット3文字以下の 過去互換性重視なファイル名に変えてみると良いかもしれん、ということぢゃ 直るかもしれんし、直らんかもしれん。どっとはらい。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1146] Re:makeファイル中のリダイレクト
投稿者:tos
2008/08/26 12:45:39

返信ありがとうございます。 GNU makeで試してみます。 ただ、 >俺の Makefile のように 8.3 コンパチなファイル名で試してみること推奨 この意味がわかりませんので、よろしければ教えてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1145] Re:makeファイル中のリダイレクト
投稿者:774RR
2008/08/26 12:26:34

cat > Makefile <<EOF file1.txt: file2.txt hoge <tab>./hoge file1.txt < file2.txt hoge: hoge.c EOF ということで GNU make で試したけど無問題っす (HPUX11.11 と cygwin) borland の make ではなく GNU make で試してみませう 某の make がどうしてもいい、ってことなら 俺の Makefile のように 8.3 コンパチなファイル名で試してみること推奨
[この投稿を含むスレッドを表示] [この投稿を削除]
[1144] makeファイル中のリダイレクト
投稿者:tos
2008/08/26 10:27:15

皆さんこんにちは、tosです。 makeファイル中で以下のように リダイレクトを要求するexeを実行したいのですが、 正常に実行できません。 ------------------------------------------- FILE1.HOGE : FILE2.PIYO Hoge.exe FILE1.HOGE < FILE2.PIYO ------------------------------------------- 「正常に実行できません」の内容は、最初エラー メッセージのみでわからなかったんですが、 ためしに、上記の2行目をBAT呼び出しにしたところ、 下記のように何故かリダイレクト起動に前に'0'が 付加されていました。 ------------------------------------------- Hoge.exe FILE1.HOGE 0<FILE2.PIYO ------------------------------------------- この'0'は何故付加されるのでしょうか? ちなみに、makeは「BorlandのVersion 5.2」 を使用しています。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1143] Re:テストBBSが
投稿者:(ぱ)こと管理人
2008/08/02 14:09:00

どうもです。遅くなりましてすみません。 774RRさん: >テストBBSが広告だらけですが、どうせテストだし管理しない方針でしょうか? >ほげほげ認証だけでもつければまた違いそうですが すみません、面倒なので放置しています。 表掲示板とテスト掲示板は同じプログラムで、GETパラメタで動きを変えている だけなので、ほげほげ認証はテスト掲示板にも付いています。 ほげほげ認証導入以後、日本語以外のspamはまったくないようなので、 人力で書いているんですかね。 yuyaさん: >というわけでテスト板見ようとしたんですが、Firefoxでは >>「テスト書き込みの類はテスト用掲示板にどうぞ。」 >のリンクが効いておらず見に行けませんでした。 このメッセージははD/Bに入っていて、掲示板作成用のWeb画面は作ったものの 更新画面がなくて、放置してしまっていました。すみません。 今、手でSQLを書いて更新したのですが… センタリングを忘れました。 これから出かけるのですみませんがひとまずこの状態で。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1142] Re:テストBBSが
投稿者:yuya
2008/08/01 12:17:14

>テストBBSが広告だらけですが、どうせテストだし管理しない方針でしょうか? >ほげほげ認証だけでもつければまた違いそうですが というわけでテスト板見ようとしたんですが、Firefoxでは >「テスト書き込みの類はテスト用掲示板にどうぞ。」 のリンクが効いておらず見に行けませんでした。 ソース見ると、<a>タグに文法ミスがありますね。 IEだと善意に解釈されてリンクしてるんですが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1141] テストBBSが
投稿者:774RR
2008/08/01 11:37:38

テストBBSが広告だらけですが、どうせテストだし管理しない方針でしょうか? ほげほげ認証だけでもつければまた違いそうですが
[この投稿を含むスレッドを表示] [この投稿を削除]
[1139] Re:電卓:コンパイル出来ません:MacOSX
投稿者:つんつん
2008/07/15 00:00:45

前橋さま コンパイル通りました。 $ ./mycalc >9; >>9 >1+2+3+4+5+6+7+8+9+10; >>55 > mycalc も実行できます。行編集もできます。 ありがとうございます。感謝感謝!!です。 言われますように次ぎの通り修正しました。 $ cat -n Makefile <略> 14 INCLUDES = -I/opt/local/include 15 16 $(TARGET):$(OBJS) 17 $(CC) $(OBJS) -o $@ -L/opt/local/lib -lreadline -lfl -lm <略>
[この投稿を含むスレッドを表示] [この投稿を削除]
[1138] Re:電卓:コンパイル出来ません:MacOSX
投稿者:(ぱ)こと管理人
2008/07/14 23:42:14

>13: CFLAGS = -c -g -Wall -I/opt/local/include >14: INCLUDES = \ >15: >16: $(TARGET):$(OBJS) >17: $(CC) $(OBJS) -o -L/opt/local/include $@ -lreadline -lfl -lm まず、-Lの指定は間違っています。 ・-oオプションはできあがる実行形式の名前を指定するオプションですし、  makeでは、$@がターゲットの名前を指します。よって「-o $@」で組なので  その間に-Lを入れてはいけません。 ・/opt/local/includeは、その名のとおり#includeするファイルを置くところだと  思うので、ライブラリは別のところにあるはずです。  MacOSのディレクトリ構造は知りませんが、おそらく/opt/local/libあたりに、  libreadline.aとかlibreadline.soなんとかというファイルがありませんか?  だとすれば、 >17: $(CC) $(OBJS) -o $@ -L/opt/local/lib -lreadline -lfl -lm でいいと思います。 ただ、エラーメッセージが今でも >cc -c -g lex.yy.c >calc.l:6:31: readline/readline.h: No such file or directory こうだというのなら、-Iも失敗しているようです。 …そう思ってMakefileを見直して気付きました。 CFLAGSはlex.yy.cの規則のところでは使っていませんでした。すみませんこちらのミスです (_o_) 14行目の INCLUDES = \ を、 INCLUDES = -I/opt/local/include としてみてください。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1137] Re:電卓:コンパイル出来ません:MacOSX
投稿者:つんつん
2008/07/14 19:54:56

すいません 忙しく今bbsを見ました。 積極的にアプローチしてませんが、 電卓を勉強したい人が、スムーズに電卓に入っていけるようになったらなーとも思います。 >とのことなので、もうreadlineを動かしたいとは強くは思っていないように思いますし、 >それなら外野がとやかく言うこともないかな、とも思いますし。 13: CFLAGS = -c -g -Wall -I/opt/local/include 14: INCLUDES = \ 15: 16: $(TARGET):$(OBJS) 17: $(CC) $(OBJS) -o -L/opt/local/include $@ -lreadline -lfl -lm 13: と 17: を変更しました。 ./memory/ と ./debug/ で make は成功します。 mycalc/ で make すると $ make bison --yacc -dv calc.y flex calc.l cc -c -g lex.yy.c calc.l:6:31: readline/readline.h: No such file or directory calc.l: In function `tty_input': calc.l:87: warning: assignment makes pointer from integer without a cast make: *** [lex.yy.o] Error 1 $ お願いします。-Ldir の記述例もお教えください。僕の-Ldirは的を外していると思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1136] Re:電卓:コンパイル出来ません:MacOSX
投稿者:(ぱ)こと管理人
2008/07/13 20:17:03

>まず、どういう指定をしたか、具体的に書きましょう。 一般的にはそうですけど、今回について言えば、つんつんさんは >readline 使っていない方のサイトで 勉強したいと思います。 とのことなので、もうreadlineを動かしたいとは強くは思っていないように思いますし、 それなら外野がとやかく言うこともないかな、とも思いますし。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1135] Re:電卓:コンパイル出来ません:MacOSX
投稿者:kit
2008/07/13 19:41:31

>現状:: >readline.h は  /opt/local/include/readline/readline.h です。 >-L も指定したつもりですが、あっているか分かりません。 まず、どういう指定をしたか、具体的に書きましょう。 エスパーじゃないんですから、「-L も指定したつもり」とだけ書かれても、 実際に何をどう指定したのか、つんつんさん以外にはさっぱり分かりません。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1134] Re:電卓:コンパイル出来ません:MacOSX
投稿者:つんつん
2008/07/13 09:55:41

前橋さま まだエラーになります。 現状:: readline.h は  /opt/local/include/readline/readline.h です。 -L も指定したつもりですが、あっているか分かりません。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー EasyPackage というパーケージ管理でreafline をインストールすると 標準 /usr/local にインストールされます。 その状態では、mycalcのコンパイル成功します。 しかし、複数のパッケージ管理を使いたくないので EasyPackage の readline は、アンインストールしました。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー パッケージ管理 MacPorts で /opt/local/include/readline/readline.h に インストールした状態で、mycalcをコンパイルすることは、難しいです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1133] Re:電卓:コンパイル出来ません:MacOSX
投稿者:(ぱ)こと管理人
2008/07/13 00:23:25

>readline は、/opt/local/include/readline/ にインストールされていました。 … >「コンパイラの-Iオプション」に加えるということが分かりませんので >readline 使っていない方のサイトで 勉強したいと思います。 了解です。 まあ一応書いておくと、今回の例ならトップディレクトリのMakefileに CFLAGS = -c -g -Wall という行がありますが(13行目)、ここに CFLAGS = -c -g -Wall -I/opt/local/include のように-Iを追加すればコンパイルは通るようになると思います。 インクルードのパスが通ってない以上、リンクのパスも通っていない可能性が ありますが、その場合は17行目の $(CC) $(OBJS) -o $@ -lreadline -lfl -lm ここに-Lオプションを加えるとかします。 詳細はこのへんを参照してください。 http://www.asahi-net.or.jp/~wg5k-ickw/html/online/gcc-2.95.2/gcc_2.html#SEC14
[この投稿を含むスレッドを表示] [この投稿を削除]
[1132] Re:リンク切れ
投稿者:(ぱ)こと管理人
2008/07/13 00:12:50

>「C言語 体当たり学習徹底入門」正誤表に載っている「ほげを考えるページ」へのリンクがniftyのURLのままです。 ご指摘ありがとうございます。 ポインタ完全制覇、体当たり学習、Java謎+落とし穴すべてについて 新URLへのリンクを付けておきました。 どの本も移転前だったんだなあ… (遠い目)
[この投稿を含むスレッドを表示] [この投稿を削除]
[1131] Re:電卓:コンパイル出来ません:MacOSX
投稿者:つんつん
2008/07/12 23:56:17

>もし入っているのであれば、コンパイラの-Iオプションにそこを加えれば >よいですし、入っていないのであれば拾ってきて入れることになります。 前橋さま ありがとうございます。 readline は、/opt/local/include/readline/ にインストールされていました。 MacOSX では、readline : いろいろなインストール方法により /opt/local や /sw/local ? や /usr/local にインストールされるみたいです。 「コンパイラの-Iオプション」に加えるということが分かりませんので readline 使っていない方のサイトで 勉強したいと思います。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1130] リンク切れ
投稿者:piyo
2008/07/12 23:19:19

「C言語 体当たり学習徹底入門」正誤表に載っている「ほげを考えるページ」へのリンクがniftyのURLのままです。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1129] Re:電卓:コンパイル出来ません:MacOSX
投稿者:(ぱ)こと管理人
2008/07/12 13:27:01

こんにちは。 >MacOSX で電卓使いたいとコンパイルしたのですが、エラーになります。 … >cc -c -g lex.yy.c >calc.l:6:31: readline/readline.h: No such file or directory このエラーメッセージは、readline.hというファイルが見つからないと言っている わけですから、GNU readlineがインストールされていないのでしょう。 MacOSはよく知りませんが、デフォルトでは入ってなくても無理ない気がします。 実は入っていて、#includeのパスが通ってないだけかもしれませんが。 もし入っているのであれば、コンパイラの-Iオプションにそこを加えれば よいですし、入っていないのであれば拾ってきて入れることになります。 このページからダウンロードできるようです。 http://tiswww.case.edu/php/chet/readline/rltop.html インストールの方法はここにありました。 http://tiswww.case.edu/php/chet/readline/INSTALL GNUのソフトらしく、 ./configure make make install でインストールできるようです。 ただ、電卓を作るための勉強用なら、こちらの方が簡単でよいかと思います。 GNU readlineも使っていませんし。 http://kmaebashi.com/programmer/devlang/yacclex.html
[この投稿を含むスレッドを表示] [この投稿を削除]
[1128] 電卓:コンパイル出来ません:MacOSX
投稿者:つんつん
2008/07/12 05:40:50

その4 「電卓を作ってみよう」 MacOSX で電卓使いたいとコンパイルしたのですが、エラーになります。 前橋さまの電卓試したいのですが、ご教授よろしくお願いします。 $ tar zxvf mycalc.tgz $ cd mycalc $ cd memory/ $ make cc -c -g -Wall memory.c cc -c -g -Wall storage.c ld -r -o mem.o memory.o storage.o $ cd ../debug/ $ make cc -c -g -Wall -I../ debug.c ld -r -o dbg.o debug.o $ cd .. ーーーーーーーーーーーーーーーーここまでは、エラーでませんが $ make bison --yacc -dv calc.y flex calc.l cc -c -g lex.yy.c calc.l:6:31: readline/readline.h: No such file or directory calc.l: In function `tty_input': calc.l:87: warning: assignment makes pointer from integer without a cast make: *** [lex.yy.o] Error 1 $ ーーーーーーーーーーーーーーーーここで、エラーになりました。どうして???
[この投稿を含むスレッドを表示] [この投稿を削除]
[1127] Re:メンバーズホームページ
投稿者:(ぱ)こと管理人
2008/07/11 01:15:43

>以前から告知されていましたが、niftyのメンバーズホームページはリンクのサービスも停止してしまいましたね。 ありがとうございます。まったく気付いていませんでした。変更しておきました。 ずいぶん長いこと転送してくれていましたから、まあ文句は言えませんね。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1126] メンバーズホームページ
投稿者:yuya
2008/07/10 13:47:23

トップページ > kmaebashi.comに直接飛ぶように設定できるようになっていたことが判明。今はそのように設定しています。 以前から告知されていましたが、niftyのメンバーズホームページはリンクのサービスも停止してしまいましたね。 トップページの口上が現状と合致しなくなったので、(おせっかいながら)指摘しておきます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1122] Re:なぜわからなくなってしまうのか?の本質(笑)
投稿者:774RR
2008/06/24 08:33:37

もいちど駄レスしておくと オブジェクト指向な設計、というものはあっても 非オブジェクト指向な設計の元にオブジェクト指向なプログラム、ってのはありえない わけで、「基礎設計したことがないプログラマ」ではOOがわからなくて当然。 メタ度が違うっちぅことで。 俺も、基礎設計が気に入らなくなったという理由で、50%くらい作ったプログラムを 全部捨てて最初から再設計したなんて経験が何度もある。 ただ「実装するだけ」のOOでは意味が無いと思うのココロ そーいう人に限って「スーパークラスがごみ置き場」になるわけだ。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1121] Re:なぜわからなくなってしまうのか?の本質(笑)
投稿者:sumim
2008/06/22 14:19:36

>リスコフというと「え、ええと置換原則の人?」程度の私はまだまだ勉強が >必要のようです。 リスコフは「抽象データ型」とか「カプセル化」を考えた(言い出した)人です。 >新しいほうの3系統 >http://d.hatena.ne.jp/sumim/20080415/p1 > >は大変腑に落ちます。 それはよかった。ご紹介痛み入ります。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1120] Re:なぜわからなくなってしまうのか?の本質(笑)
投稿者:(ぱ)こと管理人
2008/06/22 13:43:45

>新人はさしたる仕事もなく、昨日もオブジェクト指向のサイトを転々としておりました。 ああ、それはうらやましい。 戦力として配置されるとだんだん勉強の時間も削られてくるものですし、 さらに年を食うとろくにコードも書かせてもらえなくなるのがこの業界ですので。 > 継承:共通処理(親)をベースとして差分を子に付け加える。ライブラリを > includeするのと逆の発想。 うーん、これはまさに(最近評判があまりよろしくない)実装継承ですよね。 以前、この辺のスレッドで議論したことがあります。 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&thread=270 この中で出ているoo-squareのリンクは、現在切れていますがこっちです。 http://www.ogis-ri.co.jp/otc/hiroba/oosquare-ml/Archive/200501.month/thread.html よく使うメソッドをスーパークラスに置いて、なんてことをやっていると、 http://www.ogis-ri.co.jp/otc/hiroba/oosquare-ml/Archive/200501.month/4468.html | 継承は確たる「設計思想」が無い場合、スーパークラスが単なる「ごみ置き場」 | と化していることが多いようです。 なんてことになってしまう。それよりはむしろ、 http://kmaebashi.com/bbs/list.php?boardid=kmaebashibbs&from=276&range=1 | 「ほらほら、『使うほう』はその実体が具体的に何であるか気にしなくていいんだよ」 のほうが実際の使いどころに合っていると思いますが、こうなるとインタフェースと 一緒になっちゃうんですよね。実際、「継承なんかどうでもよくてインタフェースこそが 本質なのだ」と言う人もいますし。 じゃあ継承なんかなくていいのかというとそうでもなくて、実際私も使うというのが ややこしいところ。「継承とインタフェースのどっちを使えばいいんですか?」というのは FAQですが、私はこれはもう単純に ・データメンバがメインの構造体的なクラスにフィールドを追加するなら継承を、 ・それ以外はインタフェース でいいんじゃないかな、と思っています。 > 隠蔽:見せたくない処理はlocal変数、local関数にて実装する。 これは実態としてまさにそうだと思います。 よく「その『オブジェクト』だけが知っていればよいことはprivateにするんだ」と オブジェクトごとに丸を描いたりして「カプセル化」としている説明がありますが、 言いたいことはよくわかるものの、C++でもJavaでも実はprivateは 「別のクラスから見えない」だけで「別のオブジェクトから見えない」のでは ないんですよね。 これを、単にC++(およびその派生言語)が腐っているとか実用上の妥協だとか 言うことも可能ですが、私はこれを「privateというのは他の『プログラマ』に 対する隠蔽なのだ」と考えてしまってよいと思っています。 > 多態性:引数に基づき、サブルーチン側でif~elseで処理分岐する。 > またはincludeを変える。 「またはincludeを変える」のほうは良くわかりませんが、1行目は、用途としては そのとおりです。よくある図形(Shape)の描画ルーチンの例のように、 ポリモルフィズムを使うことで、プログラムからswitch caseを排除できます。 Cにはそれがないばかりに巨大なswitch caseを書いてる例: http://kmaebashi.com/programmer/devlang/diksam_src_0_2/S/7.html#693 ポリモルフィズムにおいて、一見単なる実装詳細に見えるけど実は結構重要なのは、 サブクラスを追加しても、呼び出し素(switch caseに相当する部分)再コンパイルの 必要がない、ということですね。だからAppletを継承したクラスを作れば すぐにブラウザで実行できるわけで。 > マルチプルインスタンス:サブルーチンをメインの実行状況によって任意に > (動的に)増やせる。 うーん、これはどうなんでしょう。オセロの例で言えば、Boardをいくつnewしても、 put()というルーチンは増えないと思うのですが… 「メソッドはインスタンスに付属している」というイメージからすると、 一緒に増えると考えることもできるのかもしれませんが。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1119] Re:なぜわからなくなってしまうのか?の本質(笑)
投稿者:(ぱ)こと管理人
2008/06/22 13:12:16

こんにちは、sumimさん。(いろいろなところで)いつもお世話になってます。 >すみません(汗)。 いえそんな(大恐縮) >当時はまだリスコフの抽象データ型(カプセル化)について理解があさく、 >ユーザー定義型に手続きを含むか、含まないかで、それぞれを OOP(あるいは、 >手続きによる抽象化。PDA)とするか、ADT(クック独自定義の抽象データ型) >とするかという分類はとてもクールに思えて必要以上に持ち上げてしまいました。 リスコフというと「え、ええと置換原則の人?」程度の私はまだまだ勉強が 必要のようです。 新しいほうの3系統 http://d.hatena.ne.jp/sumim/20080415/p1 は大変腑に落ちます。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1118] Re:なぜわからなくなってしまうのか?の本質(笑)
投稿者:Glory
2008/06/21 16:41:02

返信下さった皆さん、ありがとうございます。興味深く読ませて頂きました。 新人はさしたる仕事もなく、昨日もオブジェクト指向のサイトを転々としておりました。 やはり「猫」の例はヘンですよね。現実世界を模しているならば「鳴けとメッセージを送ると 鳴く」というよりは「腹が減ると鳴く」の方がピッタリでしょう。つまり完全自律型、プログラムで いったら暴走に近いかも・・・。 プログラミングは少々かじったことがあるのですが(学校の実習レベルです)、無理矢理 現実世界に例えるよりはこんな感じの説明の方がイメージに合っていると思います。  継承:共通処理(親)をベースとして差分を子に付け加える。ライブラリをincludeするのと逆の発想。  隠蔽:見せたくない処理はlocal変数、local関数にて実装する。  多態性:引数に基づき、サブルーチン側でif~elseで処理分岐する。またはincludeを変える。  マルチプルインスタンス:サブルーチンをメインの実行状況によって任意に(動的に)増やせる。  オブジェクト指向:これら個々の処理を分離して薄皮でくるみ、モノとして捉える。 わかってないとお叱りを受けそうですが、「犬・猫」よりはそれっぽい(笑)気がします。
[この投稿を含むスレッドを表示] [この投稿を削除]
[1117] Re:なぜわからなくなってしまうのか?の本質(笑)
投稿者:sumim
2008/06/21 15:48:56

># 以前何度か読んで、そのたびに「手続きによる抽象化」について調べようと思いつつ ># 忘れていたらいつの間にか追記がついていた。あれ? すみません(汗)。 当時はまだリスコフの抽象データ型(カプセル化)について理解があさく、 ユーザー定義型に手続きを含むか、含まないかで、それぞれを OOP(あるいは、 手続きによる抽象化。PDA)とするか、ADT(クック独自定義の抽象データ型) とするかという分類はとてもクールに思えて必要以上に持ち上げてしまいました。 その後、リスコフは、手続きを型に含むか含まないかは抽象データ型の実現方法の バリエーションにすぎない(それぞれにメリット・デメリットがある…)と書いてある のを見つけて、追記にように認識を改めた次第です。
[この投稿を含むスレッドを表示] [この投稿を削除]