■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■
読みやすいソース
1 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 00:30
自分の大学ではVBをやっていて毎日一つの課題が配られます。
その課題を早く終えた場合今度はif文やselect文を使わずにやってみろと
言われるんですがそれって頭の体操にはなっても実際はただ読みずらい
ソースになるだけでとても無駄なような気がするんですけどどうなんでしょうか?
実務ではやはり読みやすいコードが問われるでしょうから。




2 名前: こう3 投稿日: 2000/10/27(金) 00:35
VBをやるなんて、なんて素晴らしい。何ていう大学なんですか?地区でもいいです。教えていただけませんか。参考にしたいので。


3 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 00:39
VBプログラマ限定でコーディングスタイル論争やったらおもしろいかも。
でも誰もスタイルなんて気にしないか。



4 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 00:45
C、C++を教えてくれる大学ってありますか?あったらどこの大学か教えてください。おねがいします。


5 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 00:51
University of California at Berkeley>>4



6 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 00:57
>2
恥ずかしいので言えません(w
たいした事やってないですよ。専門の方がいいのでは。



7 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 01:27
普通のベーシックをやってます。


8 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 02:16
わからないことはがっこうのせんせいにきいてください。>1


9 名前: 俺が高校の頃は 投稿日: 2000/10/27(金) 09:19
普通科なのに当時出たばかりの富士通の
FM−TOWNS使って、BASICを教えられたな。
ちなみに神奈川県です。


10 名前: 名無しさんi486 投稿日: 2000/10/27(金) 09:27
大学では
Fortran77
C
BASIC
VB
をしましたが。


11 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 10:27
俺は読みやすさよりコピぺしやすさを重視している。
VBじゃなくてCだけどな。

ライブラリ化しても良いのだが、その場合汎用化の
ための無だなコードや広範囲のエラーチェックを入
れにゃならんので、コピぺしてその処理に合うよう
にちょこっと修正するってパターンだ。

俺のモットーが「(組むのが)早い、小さい」なん
で、このようなスタイルになった。

コピぺの塊なんでコメントなんて無くても何やって
るか一目瞭然(笑)。



12 名前: >1 投稿日: 2000/10/27(金) 10:33
実務では読みやすいコードを書くことは当然ですが、
読みずらいコードを読まされる羽目になることもあります。

あなたの大学でやっていることは無駄ではありませんが、
読みずらいコードに染まらないように気をつけてください。




13 名前: >11 投稿日: 2000/10/27(金) 14:08
キミのスタイルを否定するつもりはないけども
私には似たようでちょっと違うコードが氾濫するほうが恐ろしい


14 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 15:48
>9
そして神奈川工科大へ


15 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/27(金) 22:26
>14
おお!すごい!


16 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/28(土) 05:05
問題は汚いコード書く奴は綺麗・汚いの
区別をつけられないということだ。
その区別の仕方を誰かが教えてやる必要がある。

もちろん真紀俊男以外の誰かがだ。


17 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/28(土) 05:17
>>1
いろいろ試してみるのは必要です.
だめだこりゃ,ってのがわかれば2度としなけりゃいい話で.
ようは綺麗なコードを書こうという姿勢が大事.



18 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/28(土) 05:24
>>13
そうそう.
うぉ!ばぐじゃん!って時はいっこいっこ修正して回るはめに.
っで,たいてい漏れがあったり実はそのちょこっと変えたところだったり.
お願いだからぜったいに自分しか見ない!というプログラムだけにしてください. >>11

# いやぁあのときは泣いたな.
# ごくごく基本的なライブラリがちょこっとと main が1個の CGI を
# 10個修正しているときは.


19 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/28(土) 11:42
>18
mainが1個のじゃないCGIってのはどーゆーの?


20 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/28(土) 13:25
「たかだかmainが1このプログラム」に「mainはふつー1こだろ」ってつっこみはアリなのか??


21 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/28(土) 20:12
>11
制御系ならともかく業務系では没です。
破棄です。



22 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/29(日) 04:20
>>16
じゃあ、藤原に訊けばいいのか?(藁


23 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/10/30(月) 16:15
可読性を上げようと切りまくったら
後で読むのが面倒だし
といって、切り分けないで関数が長いと
それはそれで読む気失せるし、
適度な切り分けというのは難しい、、、



24 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 10:05
>11
カンベンしてくれ。
早いコーディングしたけりゃ、タイピング速度上げろや。
そもそも、関数化(ライブラリ化)すれば済むことじゃん。
馬鹿なんDeath化?(藁

>>23
難しいですね。
個人的には、自分が3ヶ月前に組み上げたソース読んで、
読みやすいと思えれば、一応OKにしてます。
個人差があるんで、一概にどうこう言えない部分もあると思いますが。


25 名前: >24 投稿日: 2000/11/13(月) 10:41
>早いコーディングしたけりゃ、タイピング速度上げろや。
煽るのもいいが、貴方が煽られたいんかい?
手をシコシコする前に、頭で考えてコーディングしなされ。
オナニーでも想像力は大事だおz

まあ11のバカさ加減には確かにあきれるが。
>俺は読みやすさよりコピぺしやすさを重視している。
>ライブラリ化しても良いのだが、その場合汎用化の
>ための無だなコードや広範囲のエラーチェックを入
>れにゃならんので、コピぺしてその処理に合うよう
>にちょこっと修正するってパターンだ。
>コピぺの塊なんでコメントなんて無くても何やって
>るか一目瞭然(笑)。

そのうち何をやっているのか何もわからなくなるよ。(w


26 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 10:52
>25
おれのオナニーを馬鹿にしているのか?


27 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 11:46
手だけ動かすオナニーはいけません。
想像も使いなさい。
君の大好きな2次元キャラが、君にやさしく微笑みかけてくれるのを

オエ~~~


28 名前: 11 投稿日: 2000/11/13(月) 12:35
>>25

>そのうち何をやっているのか何もわからなくなるよ。(w

とりあえず、13年間やってるが、今のところ無いな。


29 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 14:16
>28
バカだから気が付かないだけでしょ。

貴方の後ろに、ほら、貴方を殺したいくらい憎んでいる
人が沢山沢山。


30 名前: 11 投稿日: 2000/11/13(月) 15:49
>>29

まぁ、そうかもしれんけど、俺のコピペ集を有難がって
そのまま使ってるヤツらはもっと馬鹿だよな…。
(進歩が無いってのは、確かに言われた事がある)

他部門のプロジェクトの手伝ったら、俺のコピペ使ってたん
で苦笑した事があるよ…。

コピペって書くから変なのかな?定型処理のテンプレート集
って言った方がいいか?

SDKでWindowsのGUIアプリ作る時なんて、似たような事ばか
り書くじゃん?そんなのをコピペで済ます。
(上で書いた失笑したヤツはUNIXのコードだけど)

で、最初に戻るけど、コメントも書いてないコピペ集の内
容しらんヤツまで使ってるんだから可読性は高いのかもな。

って、なんか負け惜しみ書いてるみたいでやっぱ俺が馬鹿
って事で。


31 名前: 11 投稿日: 2000/11/13(月) 15:52
句読点が抜けて意味が曖昧になった。

>コメントも書いてないコピペ集の内容しらんヤツ
>まで使ってるんだから可読性は高いのかもな。

コメントも書いてないコピペ集を、俺と面識ないヤツ
でも使ってるんだから…


32 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 16:17
ライブラリ化するまでもないだろうけど、ちゃんとコメントは書こう。

11さんが、コメント書きがんばれば、
周りの生産性はもっとあがるよ。
しかし、周りにいるめぼしい奴をちっとは教育してあげなよ。


33 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 19:35
>11
つーか、そこまで活用されうるものならきちんと関数ライブラリ化した方がいいんでないかな?


34 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 20:47
同感。
それだけ使いまわせるようなテンプレートなら
専用の作ってしまったほうが使いまわし楽じゃないかと思う。
仕様が知りたければそこだけ参照すればわかるわけだし。
分身やその類似品が増え過ぎるとなんか落ち着かない気がする。


35 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/13(月) 23:14
使いまわしてるやつらがコピペしか出来ないから、汎用化しよう
ものなら、だれも使えなくなるに300トラール。


36 名前: 11 投稿日: 2000/11/14(火) 11:55
ライブラリ化しないのは、数行から十数行のモノをライブラリ
にするのがアホらしいのと、最初にも書いたが、ライブラリ化
するほと汎用化した場合、エラーチェックがかなり増える。

処理本体の何倍もエラーチェックが存在する。これ自体は当た
り前なんだけど、処理の使われ方によっては絶対発生しない
エラー条件があるだろう。その時の無駄がイヤ。コードサイズ
が大きくなるのは悪夢(これは512バイトのメモリにハンドア
センブルでギチギチ処理積めこんでた過去の後遺症だろう)。

処理本体をコンパクトな形でコピペ集にしといて、利用時に
その場合場合に適応するエラー処理を追加するのが軽くて良
いんだな。プロトタイプ時はエラー処理書かない事も多い。

俺は、エラーの発生し難いデータ構造や処理方式にして、人間
が入力する/したデータのチェックのみ重点的にして、その他は
軽いチェックで済ます。だから、余計にそう思うのだろう。

あと、コメントだけど、コメントが書かれているために読みに
くくなっているソースの何と多い事か(俺の周りだけと思うが)。

それくらいなら、スッキリした処理にコメント無しの方が何倍
も読みやすい。


37 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/14(火) 12:30
>>36
その手があったか。
俺も今まで自分が作ったプログラムを参照して(コピペして)
作ること多いけど、それをまとめて一つのファイルにすること
までは思い付かなかった。
過度に使わなければ便利だと思う。


38 名前: 非煽り 投稿日: 2000/11/14(火) 12:42
>>36
エラーチェックコードを、assertのように #define で無効にできる記述で
書けば良いように思うのですが、それだとなにか問題があるんでしょうか?


39 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/14(火) 13:02
>>36
そのテンプレート集よこせ!



40 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/14(火) 13:54
>38
それでいいと思うけど、後でソース見たときパッと見何を
やっているかわからないところが嫌なんじゃない?多分。
ほとんどエラー処理で埋まっちゃうときが多いからねぇ。


41 名前: 38 投稿日: 2000/11/14(火) 15:06
>>40
う、うーん、後でソースを見たときにパッと見何をやっているのかを
わかるようにするために、コメントを付ければいいんじゃないかと
思うんですけどねぇ...

ほとんど(assertの)エラー処理で埋まっているコードは、プログラムが
正しく動くための前提条件を綿密に書いてあることと同じなんだから、
望ましいコードだと思います。

コメントで「〜〜でなくてはならない」とかたくさん書いてあったり、
コメントもassertもなくて人知れずバグるより、ぜんぜん生産性の
高いコードだと思うんですが。いかがでしょうか?



42 名前: 33 投稿日: 2000/11/14(火) 15:34
>>36
>ライブラリ化しないのは、数行から十数行のモノをライブラリ
>にするのがアホらしいのと、
strcpyやstrlenなんて、2・3行で書けるけどしっかりライブラリになってるよ。
まあ、無駄なエラーチェックを省きたいとか思うならそれはそれでいいと思うけど。


43 名前: 11 投稿日: 2000/11/14(火) 15:37
>>38

その辺りの好き嫌いは、もう個人的な問題だよ。


44 名前: 133 投稿日: 2000/11/14(火) 16:02
>38
>それくらいなら、スッキリした処理にコメント無しの方が何倍も読みやすい。
もともとコピペしやすさを読みやすさより優先してる話でなかったっけ?


45 名前: 44 投稿日: 2000/11/14(火) 16:04
なんで133なんだ、、、まぁいい。
44は >43 ね


46 名前: 11 投稿日: 2000/11/14(火) 16:22
>>45(44)

何よりも優先してるワケじゃないが、その通り。
って言うか、自然に書いてもコピペしやすいコー
ドになる。

んで、コメントも書いてないようなそのソース
を俺とほとんど面識無いヤツが何の処理に使え
るモノだが理解して使ってるなら、可読性も高
いかもねってのも書いた。ま、一緒に仕事した
事あるヤツが「これコピペして楽しなよ」って
紹介しただけかもしれん。


47 名前: 38 投稿日: 2000/11/14(火) 17:36
>>43 =11
たしかに「みやすい」「わかりやすい」は個人的な問題になっちゃいますねぇ。
この手の議論は対象分野や作業環境によって望ましい答えはかわるしね。

いちおう立場を表明しておくと、いままでの自分の経験からすると、
assertなどのエラーチェックが入った分だけ長いプログラム片のほうが、
エラーチェックが入っていない分 短いプログラムより、バグの早期発見につながり、
生産性が高い。
と思ってます。

11さんのようなスタイルで上手くいっている例を周囲で見たことがなかったので、
新鮮でした。ノウハウ提供感謝>11。


48 名前: オレ様ちゃん 投稿日: 2000/11/17(金) 12:59
ワシの書いたコードを参考のために同僚に配布
そしたらそのままコピペされた。
変数名変えないでそのまま使おうとして動かなくて永遠悩んでいた。
超ブルーになりました・・・


49 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/17(金) 15:17
>>36
ここでいうライブラリをオブジェクト指向で書かないのですか?
クラスにすればコードの長さやエラーチェックの多さは
解決できないけど汎用性は簡単に解決できるのでは?

もちろん場合によりますが。



50 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/18(土) 00:43
私が汚いコードを見かけたときは、
きっと作った人は、とても頭が良いんだなと
思うことにしてます。

頭良くなきゃ、そんなコード、バグが取りきれない。
#実際はバグってるんだけど。


51 名前: 名無しさん@お腹いっぱい 投稿日: 2000/11/21(火) 02:07
Cでプログラムを書いているのですが、長いプログラムが読んだり、自分で書いたり
出来ません。読み易く長いプログラムが書けるようになるにはどうすれば良いでしょうか?



52 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 02:33
>51
コマギレにする。


53 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 02:33
関数使えばどうよ?


54 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 02:36
>>51
短いプログラムを積み重ねると長いプログラムになります。
行当りいくらの仕事をしているのでなければ、無駄に長くする必要はありません。
英文と同じで読んだり書いたりを繰り返せばそのうちできるようになります。
可読性に関してはコーディングスタイルについて調べましょう。


55 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 03:34
>54
いや、きっと51の人は関数内の行数が長いものでなく規模の
でかいプログラムのことをいっているんだと思います。

>51
基本は54の人が言うとおり短いプログラムの塊が
長いプログラムなのですが、全体を通して、プログラムを見るときは
そのプログラムの設計思想みたいなものを見抜かないと
まず、読めないと思います。これはプログラムの腕というよりは
そのプログラムの内容(概念)を理解しているかどうかが問題
なので、それはそれで勉強しなければなりません。
そんなこんなでみんなが読みやすいようにしようじゃないかと
生まれたのがオブジェクト指向とかだったりします。
たしか・・・。


56 名前: 51 投稿日: 2000/11/21(火) 04:17
レス有難うございます。
>54
やはり沢山のプログラムを読むのがよいのでしょうか。やってみます。
コーディングスタイルについてはK&Rを見習えばいいと、どこかのHPにあった
のですが、それで良いのでしょうか?確かに見易いとは思うのですが・・・

>51
おっしゃる通り、"短いプログラムの塊”は読むことが出来るのですが、
"プログラムの設計思想”を見抜いたり、全体を通してプログラムを見る
といった事が出来ていないと思います。しかし、書店にある言語の本や、学校では
その言語の文法や、データ構造、単純なアルゴリズムしか学ぶことが出来ません。
前に一度、ダイクストラの『構造化プログラミング』を読んでみたのですが、
途中で挫折してしまいました。そこでプログラムの設計方法を学ぶことの出来る
お勧めの良い本があれば教えて下さい。



57 名前: 54 投稿日: 2000/11/21(火) 06:06
>>55
設計の話だとは思ったのですが、
そっちは(も)説明できる自信がなかったのでスタイルの話に持ってっちゃいました。。。

>>56
構造化設計についてきちんと書いてある実践的な本ってありますかねー。
オブジェクト指向について学んだ方が良いかもしれません。
オブジェクト指向設計はJavaの雑誌なんかでも特集されてたりするので、
参照できる資料は多いと思います。
まーオブジェクト指向で設計できるようになれば構造化もできるようになるでしょう。

C言語なら、出来の良いライブラリのソースを読むと良いですね。
ある目的を達成するためにどういうインタフェイス・機能を提供していて、
それらは実際にどう実装されているのか、
と全体から細部へとトップダウン的にプログラムを把握できます。
UNIX方面のオープンソースなライブラリを適当に探してみてください。


58 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 06:30
と、いうわけでオブジェクト指向のお勧め本です。
結構いろんなところでお勧めに挙げられている本なので安心です。
私も読みましたがめちゃくちゃいいです。

『憂鬱なプログラマのためのオブジェクト指向開発講座』
Tucker! 著
翔泳社



59 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 07:42
Cの制御構文の貧弱さになかされています。どうにかしてください。


60 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 08:04
>>59
GCCの拡張を使うのはどう?
switch ( value )
{
case 0 ... 10 :
case 'a' ... 'z' :
}
など。
http://duff.kuicr.kyoto-u.ac.jp/~okuji/guide.html


61 名前: >59 投稿日: 2000/11/21(火) 08:20
貧弱さに泣くって・・・・Cは豊富なほうだと思うが?
あんまりテンコモリ言語だと他人のコードが読めなくなるし
色々実装時に悩むように思うがどうだろか?


62 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 10:35
>そんなこんなでみんなが読みやすいようにしようじゃないかと
>生まれたのがオブジェクト指向とかだったりします。
>たしか・・・。
ちがいます。それなら構造化だけで十分。
構造化に比べて
理解しにくいオブジェクト指向が読みやすいわけがない。
階層が10段階も深くなったらどのメソッドが動いているか
把握するだけで大変。

オブジェクト指向はプログラムの再利用性と
多くのメモリを扱う時の高速性のために作られただけです。


63 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 11:17
>>62 突っ込んでいい?
> 構造化に比べて
> 理解しにくいオブジェクト指向が読みやすいわけがない。
データとアルゴリズムは一緒にした方が解りやすいと思いますが?
あなたはオブジェクト指向の何処が理解しにくいと思ったのでしょうか?

>階層が10段階も深くなったらどのメソッドが動いているか
>把握するだけで大変。
これは構造化でも大きくなったら管理は大変だと思います

>オブジェクト指向はプログラムの再利用性と
これには同意します(他にもいろいろメリットはありますが)
>多くのメモリを扱う時の高速性のために作られただけです。
???
ちょっと意味が分かりません



64 名前: 63 投稿日: 2000/11/21(火) 11:35
補足追加

構造化を理解していない人が無理に構造化したプログラムはわかりにくく、
逆に構造化などせずにだらだら書いてくれたほうがありがたい気がします
例えば
・機能分割でなく行数で分割されている
・1つのモジュールで複数の関係ない機能を行わせている
・グローバル変数を多用している

オブジェクト指向を正しく理解し、正しく設計を行えば
構造化と同じくらい読みやすいか
構造化よりも読みやすいプログラムになると主張します。

# 全てをオブジェクトで表現できると信じるのもイヤだが



65 名前: 62 投稿日: 2000/11/21(火) 13:13
つっこまれると思ったよ(藁
>データとアルゴリズムは一緒にした方が解りやすいと思いますが?
そーだった。
データがメソッドを持つのはオブジェクト指向のメリット。
忘れてました。
でも、それは理解しているからメリットだってわかるのであって
実際、オブジェクト指向がなんだか難しいってイメージが
定着してません?

自分で言っててなんだが
構造化だって世の中できてない人多いから、どっちもどっちか。

>オブジェクト指向を正しく理解し、正しく設計を行えば
>構造化と同じくらい読みやすいか
>構造化よりも読みやすいプログラムになると主張します。
賛成だけど、

結局、鶏が先卵先の問題だったな....
読みやすさのために成立したわけじゃないが
成立しちゃって読みやすい書き方は当然出来るって事。

オブジェ指向でも読みにくくは書けるし。

>>多くのメモリを扱う時の高速性のために作られただけです。
>???
ん?結局ポインタ参照でしょ。
オブジェクトをわざわざ作成するじゃない。
変数と同じように宣言しただけで
実態が存在してしまったら、超低速になるから
作られたようなもんですよ。>オブジェ指向

#また突っ込まれるだろうな。ウケケ


66 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 14:00
>>65
> データがメソッドを持つのはオブジェクト指向のメリット。

それだけならオブジェクト指向以前の
「データ抽象/抽象データ型」のレベル。

> ん?結局ポインタ参照でしょ。
> オブジェクトをわざわざ作成するじゃない。
> 変数と同じように宣言しただけで
> 実態が存在してしまったら、超低速になるから
> 作られたようなもんですよ。>オブジェ指向

これは参照カウントやコピー・オン・ライトのような技法を
使って、可能な限り実体を共有することによりメモリをけちる
というような話か?
どうしても「そういうことにしたい」のならソースを示せ。



67 名前: 63 投稿日: 2000/11/21(火) 14:40
>>65 ご要望によりまた突っ込んでみます

> 実際、オブジェクト指向がなんだか難しいってイメージが
> 定着してません?
> 自分で言っててなんだが
> 構造化だって世の中できてない人多いから、どっちもどっちか。
ええ、なんかそういう風潮があるのは認めます。
構造化のメリットを理解できない人はオブジェクト指向のメリットを
理解できるはずがありません。
また、構造化のメリットを理解できていても、オブジェクト指向的な
考え方を理解していないとおかしな設計になってしまいがちです。

が、大きなプログラムを解りやすく作ろうとしたら
オブジェクト指向的な考え方になると思います。

例えばCのファイル操作ライブラリなどは
データを抽象化して、そのデータを操るメソッドを実装していたりして
けっこうオブジェクト指向的だと思っています。

> ん?結局ポインタ参照でしょ。
> オブジェクトをわざわざ作成するじゃない。
> 変数と同じように宣言しただけで
> 実態が存在してしまったら、超低速になるから
> 作られたようなもんですよ。>オブジェ指向
うーん、それはオブジェクトの実装方法の話ですよね?
多くの場合はそうかもしれませんが、もっと効率のよい方法が
発見されたら別の方法になるかもしれませんし、
あまり、オブジェクト指向の本質でないような気がします。



68 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 15:39
いや、読みやすいためにオブジェ指向が成立した
ってあったから、それは違うよって事が言いたかったの。
俺の[構造化で十分]っていうのも言い過ぎか。

でも、高速性を追求しなければたぶん世の中構造化だけでも
うまくいっていたと思われる。
ま、本質か実装かって話になるけど、どっちも切り離せないよ。

実際、すばらしい性能を発揮する
ニューロコンピュとか出来てしまったら
プログラミングの手法がまったく異なってしまうかもしれない(Lispとか?)
そして、それに適合した理論体系でコーディングしやすい
○○指向が生み出されるって事になるんだろう。
違う?

そういえば、オブジェクト指向のその次の理論とかは
成立してるのかな。
大学でオブジェ指向を研究している人もいるわけだし、


69 名前: 51 投稿日: 2000/11/21(火) 19:48
>>57>>58
有難うございます。『憂鬱な〜』さっそく読んでみます。ところで58さんはいつ頃
この本を読んだのですか?自分はまだ、C++の文法を一通りやってみただけで、
この手の「文法」の本ではなく「オブジェクト指向」の本を読むのは初めてです。
もう少しC++のプログラミング(MFC等を使ってみる)をやる方が良いでしょうか。
>>オブジェクト指向で設計できるようになれば構造化もできるようになるでしょう
という事は、構造化プログラミングを経ずに、いきなりOOPに入っても差し支えないと
いう事でしょうか?

>>67
>>構造化のメリットを理解できない人はオブジェクト指向のメリットを
 理解できるはずがありません。
これは上の意見とは違うみたいですね。やはり構造化プログラミング→OOPと
進むのが良いのでしょうか。67さんの意見をお願い致します。


70 名前: 67 投稿日: 2000/11/21(火) 20:23
>>69 私の意見ですか...大したものではないのですが

>> 構造化のメリットを理解できない人はオブジェクト指向のメリットを
>> 理解できるはずがありません。
> 構造化プログラミング→OOPと進むのが良いのでしょうか。
まず、「構造化」と略してしまいましだが私が「構造化」と言っていたのは
「構造化設計」いわゆる「モジュール化」と呼ばれているものです。
「構造化プログラミング」と「構造化設計」は別物です。

例えるとするとOOP,構造化設計は「戦略」で、
構造化プログラミングは「戦術」です

私は、OOPのサブセットが構造化設計の考え方と思っているので
OOPの考え方がわかれば、構造化設計の意味することも
理解できると思うので、構造化設計は学ぶ必要はないと思います。

最後に引用が前後してしまいますが
> もう少しC++のプログラミング(MFC等を使ってみる)
> をやる方が良いでしょうか。
> 自分はまだ、C++の文法を一通りやってみただけ
> 「オブジェクト指向」の本を読むのは初めてです。
この段階だと「OOPのメリット」を感じることは難しいと感じます
OOPは大きいプログラムで威力を発揮します

まずは、C++を自由に使いこなせるようになるようになった方が
良いように思います




71 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 22:03
構造化プログラミングってのはgotoを使うときはif,switch,for,whileなどの
場合がほとんどなんだからgotoの代わりにこれ使いましょう、ってものだと
思ったが。
あとグローバル変数使うなとか、関数の出口はひとつにしよう(これはまったく
守られてないが)とか。


72 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 22:32
>有難うございます。『憂鬱な〜』さっそく読んでみます。
>ところで58さんはいつ頃 この本を読んだのですか?
C++の文法も知らないときです。この業界は後からくる人の方が圧倒的に
有利になっているようです。構造化プログラムは知らなくてもさほど問題はないでしょう。
いつ頃かというとC言語を覚えてから設計について悩むようになってからです。
C++はこの本から少し学んで、次に入門書を読みました。
私が思ったのはC++ははじめに入門書を触ってはいけません。
はじめにオブジェクト指向を覚えてから、C++を覚えないと駄目です。
それはC++がプログラムでオブジェクト指向を表現するための
手段として作られたからだと思います。たぶん・・・(またかい)


73 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/21(火) 23:16
>>70
>この段階だと「OOPのメリット」を感じることは難しいと感じます
>OOPは大きいプログラムで威力を発揮します
Javaでクラスライブラリ便利ー、OO万歳ってのは?
特にAWT/Swing使っているとOOの恩恵を感じる。
C++でオブジェクト指向を学ぶのは大変なので、
Javaで覚えた方が吉だと思ふ。経験的に。


74 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 04:16
型の無いOOP言語もやっとくといいぞ。


75 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 04:34
>>74
RubyとかSmalltalkとかかな。。。
でもSmalltalkはなじめなかった。
そんなわけでObjective-Cをおすすめするよ。


76 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 04:53
>>75
Smalltalkは制御文までオブジェクトという画期的さに負けたなあ。
最近「じゅん」がSmalltalk製と知って驚いたよ。


77 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 06:02
OOに出てくる「内延、外延、属性」ってなんだろ?


78 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/22(水) 08:19
Smalltalkは、分岐がメソッド探索だけで実現されてるから、制御文って
感じじゃないんだよね。
if文のかわりに True、False クラスに ifTrue:aBlock とかが定義してあって、
TrueクラスのifTrue:aBlock は、単に ↑aBlock value. としか書いてないし、
FalseクラスのifTrue:aBlockは、なんにもなしとかね。


79 名前: >76 投稿日: 2000/11/22(水) 09:58
B-ingにその「じゅん」を作った人がスーパープログラマーとして
出ていましたよ。



80 名前: 51 投稿日: 2000/11/23(木) 02:33
>>73 Javaで覚えた方が吉だと思ふ。経験的に。
73さんは文章からC++→Javaという順番にプログラムを経験されて
オブジェクト指向を学ぶ時に、"Javaの方が吉"と考えておられる様ですが、
JavaがC++よりどの様な点でOOを学ぶのに優れているか73さんの意見を
聞いてみたいのですが如何でしょうか?自分のわずかな知識では、Javaの
C++よりも良い点は、ポインタや多重継承が無いのでオブジェクト指向に専念
できる、といった事しか思い浮かびません。


81 名前: 名無しさん@お腹いっぱい。 投稿日: 2000/11/23(木) 03:43
>>80
個人的な見方だけど、
初心者にとって敷居が低く、参考になる資料が多いという点かな。

まず、初心者が比較的楽に試せる。
処理系がSunのJDKくらいしかなくて迷わずに済むこととフリーであること。
BCCなどのフリーのC++処理系でGUIプログラムを作るのは大変だが、
Javaならメモ帳一つでSwing使ったGUIプログラムもすぐ作れる。

>ポインタや多重継承が無いのでオブジェクト指向に専念できる
加えて
・GC
・一ファイル一クラスでファイル名=クラス名
・整理された標準API群
・一応MVCアーキテクチャなGUIツールキット
とまあリファレンスからAPI探して並べるだけでごく簡単なアプリなら事足りる
というのは敷居が低くてよろしいと思うわけです。

で、C++でオブジェクト指向という話題よりも、
Javaでオブジェクト指向という話題の方が、
本にせよウェブページにせよ参考になる資料が多い(と思ふ)。