CとJAVAを比較した場合Cの良いとこと悪いとこ

このエントリーをはてなブックマークに追加
ってある?
2ですが、なにか?
3デフォルトの名無しさん:01/12/30 19:31
CはJAVAに比べて処理が速く何でもできるとよくいいますね。

JAVAはオブジェクトが使えますから、オブジェクト指向派の人にはJAVAの方がいいかもしれません。

しかしながら、C++の方ができることの範囲が広いようなので、そっちのほうがいいかもですね。
氏++
>>3
Cもオブジェクト使えますが、なにか?
>>7
Javaも基本型使えますが、なにか?
>>8
HSPも整数型使えますが、なにか?
Javaのおかげで、Cには厨房が集らないので助かってます
11Java++:01/12/30 20:05
C:インラインアセンブラが使える
Java:言語レベルで GUI や Thread などが使える
Cの良いところはポインタが使えるところで、
Cの悪いところはポインタを使わなければならないところ。
Java が良いのは、糞壁がウンチクを語らないこと。
Cはなんでもできるってのはよく言われるけど、
おまえは本当にCでしか書けないようなプログラムを書くのか?
たんにデバイス制御もできるし、とかいいたいだけなんじゃないかと、
問いたい。問い詰めたい。小一時間問い詰めたい。
CでできることはJAVAで全部できるんかね?

もしそうなら Cが消える日がくるかもしれんな
16   :01/12/30 23:18
Javaでは動的なプログラムは作れません。
プラグインや動的関数ポインタは無理。
死んで欲しい。

知人は CはJAVAみたいにきれいなプログラムを書けないから
糞とか言ってくるので言い返したいのですが、
Cしか知らない私は言い返せないで
JAVAがCより優れている所があるなら 私も教えてほしいです。
18 :01/12/30 23:39
Cがエッチなら
Javaは夜明けのコーヒーみたいなもんだ。
>>17
標準ライブラリが豊富。
>>11が書いてるように、標準規格内でスレッドやGUIをサポートしている。
20   :01/12/30 23:41
>>17
Cの方が美しいプログラムが書けるよ。
JAVAはそんなにきれいに書けるもんなの?
Cで書こうが、JAVAで書こうが綺麗かどうかって
いうのは設計の問題のような気がするけど・・・
22デフォルトの名無しさん:01/12/30 23:46
Javaってインタプリタ方式だから実行速度遅いよね。
実行速度が速いだけでCが優れている と言われるなら
PCのスペックが年々上がっているので、
数年後にはJAVAのほうが勝る可能性があるんじゃないのですか?
分野によるね
>>17 Javaは JVM がないと何もできないよ。
Cを糞とか言うやつには、JVM が何で書いてあるか問詰めてみろ
26デフォルトの名無しさん :01/12/30 23:54
>>23
お前の書いていること、おかしいぞ。
>>26
スペックが上がれば
JAVAが遅く感じることがなくなるってことじゃない?
28デフォルトの名無しさん :01/12/31 00:09
>>27
だが>>23の言っている
「JAVAのほうが勝る」
なんてことにはならんだろう。
29    :01/12/31 00:11
>>23
ヴァカですか?
30デフォルトの名無しさん:01/12/31 00:14
>>17=>>1
とりあえずJavaの悪い所はPrimitive型へのポインタが取得できない事かな。
それと、(ヒープ上に取ってるくせに)配列の大きさを変えれない事。
>>30
「Javaで」ポインタ取得できたとして、
なんか嬉しいことあります?
32デフォルトの名無しさん:01/12/31 00:19
>>31
swapメソッドが書ける
3330:01/12/31 00:21
>>32は俺ね。
34デフォルトの名無しさん:01/12/31 01:26
JavaにCのコードを埋め込めるよ。
だから、Cでできることは全部JAVAでできるけど。
一般的にJAVAにCのコードを埋め込む時は、
機種(OS)に依存したプログラムを書くときだね。
C++→Cトランスレーターなるものがあるので、
JAVAは何でもありなわけだけど、
わざわざOS依存させて、実行速度を優先させるケースも少ないんで・・・
35    :01/12/31 01:31
  void *func()=jmp_table[command_code*4];
  func();

みたいなCで二行で済むことをJAVAだとどんなコードになるんだろう?
36デフォルトの名無しさん:01/12/31 01:32
Primitive型ってなんですか??
>>35
((Command)map.get(code)).execute();

準備さえしとけば、一行で済むよ。
ジャンプテーブルの変わりにCommandインスタンス
のマップ作っとくだけ。
38デフォルトの名無しさん:01/12/31 01:41
>>35
OOがわかってない事をさらすなって(笑)
39仕様書無しさん:01/12/31 01:42
>>37
そういう使い方は便利だなぁ。
参考になたーよ。
40デフォルトの名無しさん:01/12/31 01:42
>とりあえずJavaの悪い所はPrimitive型へのポインタが取得できない事かな。
OOでプログラム書いてるときは、そういうケースで困った事はないな。

>それと、(ヒープ上に取ってるくせに)配列の大きさを変えれない事。
ネタだよね・・・
41デフォルトの名無しさん:01/12/31 01:43
>>39
デザパタやろうよ・・・
>>37
遅そう。。。
>>42
ハッシュマップからコードでハッシュ検索するだけなんだから、
コードのインスタンスのhashcode()メソッド適当にオーバーライド
して遅くないルーチンに最適化しとけば、かなり速いよ。
hashcode()で引いて来た番号をハッシュマップ内部の配列の添字番号
としてそのまま参照引き出してあげれば済むような最適化は、簡単に
できるよ。
44デフォルトの名無しさん :01/12/31 01:51
>>34
Cはアセンブリコード埋め込めるぞ。
MMXやSSE使うときに必要。
4543:01/12/31 01:53
いちばん簡単なのは、キー値に0から順番の値のIntegerインスタンス
使うこと。hashcode()メソッドが、単に内部のint値返すだけだから。
46デフォルトの名無しさん:01/12/31 01:54
>>43
というか、そこって速い遅い議論するところじゃないでしょ。
4730:01/12/31 02:03
>>40
>ネタだよね・・・
コラッ!せっかく>>36あたりが釣れそうだったのにバラすなって!(w
4836:01/12/31 02:05
つられました。
で、Primitive型ってなんですか??
>>48
オブジェクト参照型以外全部。
5036:01/12/31 02:21
intとかlongとかですか?
じゃ>>30はswapかきたいだけでバイトコードインタプリタ否定ですか?
まあ、はっきり言ってしまえば、JAVAのクラスは何で書かれてるの
かと言えばCで書かれている。
VC++の新しいVerは古いVC++を使って開発されているってのは聞きますね〜
他のCやC++も同様なのでしょうけど、javaの新しいVerをjavaから作っていったら...
数回verupすると恐ろしい事になりそうやね
53 :01/12/31 02:49
CはUnixと共に成長し、C++を生み、
今なおメインの言語として君臨している。

Cは
「論理的で、覚えることが少なくて、実行速度が速い、皆に愛されている言語」
だと倉薫も書いていたYO!
>>52は一瞬JVMをJavaで書くように読めてつっこみそうにナターヨ
>>51Javaのクラス? ふつーJavaで書かれてるんでないか?
コンパイラはCで書かれてるんだろうけど。

新しいアーキテクチャのCPUが出てくれば、やっぱり最初に提供されるのはCなんだろうから、
Cはまだまだしばらくの間、必要なんだろうとおもわれ。
午前3時半か
もうすぐヤツが目を覚ます時間だな
                       ,〜((((((((〜〜、
                     ( _(((((((((_ )
                      |/ ~^^\)/^^~ ヽ|
                       |  _ 《 _  |
                      (|-(_//_)-(_//_)-|)    / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                       |   厶、   |   <  おはよ〜〜。
                       \ |||||||||||| /    \_____________
                  _-‐' ̄|\      /  `ー―-、__
             /~⌒~ ̄|  , -‐'\ ` - ー '/  \    '     ̄\
           /      | `ー―-、ヽ   ノ -―'~ ̄ 、       \
          /       /      `ーV -‐' ̄      ヽ         |
          /                ||          \           |
          |                ||                   |`、
        /`-、   /           ヽ||/          ヽ   ー、_ノ \
       /       、    ○      ||/    ○      |/      \ \
       /        V        \. ||            /         | |
      |         ヽ        ヽ/ヽ、          人          |  |
      |        / \、_     /  \       /  ヽ         |  |
      /       ノ /    ̄`ーー'   l  、 ̄`ーー-ー'    ∧        l   |
     (       / /\  入   /   |   |     / )  /  \      人  |
    /    \ ,/    \     l、_ 人_ _,|    -‐',/l /    `ー、_>-‐'~    |
    //      〈       | \   /   |   ヽ   /  |        |       |
   | |         |        |     |   |    |      /        |        |
    | |       |         |    l、_ 人_ _ _ ,|     _/       |        |
   | |       /       /‐--、______, --‐'~ __〈        |        |
57デフォルトの名無しさん:01/12/31 03:45
    ∧_∧!   / ̄ ̄ ̄ ̄ ̄ ̄ ̄
__( ;´Д`)__< 遅刻だ!
|  〃( つ つ   |  \_______
|\ ⌒⌒⌒⌒⌒⌒\
|  \           \
\  |⌒⌒⌒⌒⌒⌒|
  \ |______|
5857:01/12/31 03:46
5分も負けた…。
朝からハイだぜ、ベイベー!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
60    :01/12/31 04:09
>>38
OOと関係無いだろ ヴァーカ!市ね!糞が!
6130:01/12/31 04:14
>>50
ネタだって言ってるのに…。
そう本気にされると申し訳なく思えちゃうな。
Javaでもswap書けるよ(これはネタじゃない)>>36
6230:01/12/31 04:15
61補足
かなり無理矢理だけどね。
6336:01/12/31 04:36
>>61
ほ?ポインタとれると、なにか、swapに特殊なテクニックがあるですか?
しかも、Javaで「無理矢理」な…
年末もハイだぜ、ベイベー!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
6536:01/12/31 04:39
「Javaにはレジスタ変数が無い」とかだったら、わかるんだが…
66ネタ:01/12/31 04:42
Javaにはswapメソッドを書く必要性がありません。
なんでそんなswapが話題になってるの?
tmp=a;a=b;b=tmp; でいいんでしょ?
プリミティブだと値のコピーによる交換だけど。
どーせプリミティブのコピーなんてたいしたコストじゃないし。
68いわずもがな:01/12/31 04:45
>>67
初心者本しか見たことの無い冬厨の季節だから。
6936:01/12/31 04:47
>>67
だってそれじゃ、ポインタ取れるかどうかなんて関係ないじゃん。
70あほくさ:01/12/31 09:02
このスレって「Cしか知らない馬鹿」隔離スレみたいね。
C?
あんなアセに陰毛が生えた程度のものを
言語っていわないでくれるかな。
72デフォルトの名無しさん:01/12/31 11:12
>>71

 しかし、その陰毛がヤラしい部分をけっこう良く隠蔽
しているんだよな。
無毛萌え〜
7436:01/12/31 12:03
ねーねーねー無理矢理なswap、まだ??
75デフォルトの名無しさん :01/12/31 12:05
>>71
おいおい、随分な物言いだな。
さすがに言語でないことはないだろう。
76デフォルトの名無しさん:01/12/31 12:09
>>75
基地外に突っ込むなよ。かわいそうだろ。
適当にいなしといてやれよ。
だいたいライブラリで吸収できそうな話題じゃないか?
STL使えばC++でも簡潔に書けるだろ。

ポインタ云々もスマートポインタを用意すれば良いだけ。
78デフォルトの名無しさん:01/12/31 14:01
javaは将来性ない
Cはある。
>78
JAVAの需要が先細りになっても、Cの需要は変わらないって
言いたいのか? 賛成だ。そのとおりだよな。
 ただ、JAVAだって生き残らないとは限らんぜ。
>78
まだ、どうころぶかわからんよ
81デフォルトの名無しさん:01/12/31 14:09
javaはおわりだね
Javaもネタとはいえ Cと比べられるように
なっちゃったんですねぇ…
次のバージョンではunsignedは使えるようにして欲しいなぁ
>>83
1bitくらいケチるなよ。
85デフォルトの名無しさん :01/12/31 14:29
>>79
分野によって変わってくるんだろうね。
いまだにFortranやCOBOLが使われているように
Javaも何処かでは生き残り続けるのかもしれない。
JAVAはOSに依存しないため
今後発展しそうな気がするんだけど気のせいですか?

現在はCよりJAVAのほうが需要があるように
感じるけど それも気のせい?
87デフォルトの名無しさん :01/12/31 15:01
>>86
分野によるしねえ。
>86
JAVAを動作させる為にはVMが欲しいんですが何か?
89デフォルトの名無しさん:01/12/31 17:49
冬厨隔離スレとして順調に伸びてるな
>>86 サーバサイド以外でJavaの需要ってほぼ皆無だよ。
i-appliのあれはJavaという名前がついてるけど別ものだし。:-)
90デフォルトの名無しさん:01/12/31 17:54
>>84 1bitならケチらないが、32bitをケチりたいんだよ。

32bit無符号のデータを外部から取りこむ場合、その値域をカバーするために、
long (64bit)を使うしかなくて苦痛なんだよ。
CとJAVA例えるならば職人とオペレーター。
>>90
苦痛って… 医者に行った方が良いかも。
所詮JAVAでバイナリ操作は無理だな。
Rubyナラデキル。
うんうん、Rubyもいいよね。
C,C++,Rubyマンセー!
Javaはあまり知らんからノーコメントとしておく。
どんなもんでも
できるにこしたこたぁない
97デフォルトの名無しさん:01/12/31 19:41
情報科学、情報工学ではJavaは生き残ると思うけど。
98デフォルトの名無しさん:01/12/31 19:43
あらゆる分野でRubyが使われるようになるのに、そう時間はかからないだろう。
99デフォルトの名無しさん:01/12/31 19:46
>所詮JAVAでバイナリ操作は無理だな。
バカ発見。

Cにできる事と、Javaにできる事に差があるわけ無いだろが。
ある処理を記述するのに、どうするかが言語の違いだよ。
さっさと気づけ馬鹿ども。
>Cにできる事と、Javaにできる事に差があるわけ無いだろが。

C言語ちゃんとお勉強してから言ってくださいね。
>>99
ROM,RAMあわせて4KBしかありませんが、なにか?
JavaではIA-64のバンドルの生成は出来ません。
103デフォルトの名無しさん:01/12/31 20:01
IA-64のハンドル?バンドル?ってなんですか?
104デフォルトの名無しさん:01/12/31 20:04
>>101
それはハードウエアの問題では?
コンパイラ作成の手間を考えたら、
一般的じゃないCPUでアプリケーションを作る場合は、
C言語になるのかも。

言語的な違いは明らかで
JAVAで書くような複雑なプログラムは、Cじゃ書かないし
Cで書くような簡単なプログラムは、JAVAじゃ書かない。
>>104

基本から勉強してね。
1つ言っておく。CとJAVAを比較するのは
CとBASICを比較するようなものだと。
1つ言っておく。CとJAVAを比較するのは
CとLISPを比較するようなものだと。
1つ言っておく。馬と牛を比較するのは
馬と鹿を比較するようなものだと。
109デフォルトの名無しさん:01/12/31 20:21
1つ言っておく。
やっぱや〜めた。
>109
いってくれ
111デフォルトの名無しさん:01/12/31 20:22
Java は計算機科学の最先端の研究対象にもなるし、実用にもなる。
C は fj.comp.lang.c での罵りあいの道具にしかならない(w
JAVAでドライバでも組んでみてくらはい。
それができたら認めるよ〜ん。
計算機科学の最先端って、やたら多いけどね。
ウニの棘の先端みたい。
>>112
馬鹿
115デフォルトの名無しさん:01/12/31 20:31
>>112
Java用のドライバ作成環境を用意してくれたらな。
一休さんみたいだ。
116デフォルトの名無しさん:01/12/31 20:32
>>112
OS、デバイスとのインターフェ−ス部分をJNI使って書けばいいだけでしょ?
JavaOSのドライバはJAVAだし。
117デフォルトの名無しさん:01/12/31 20:36
あくまでも実行する側の問題であって、
例えばJavaをn
>>116
天然ですか?
119デフォルトの名無しさん:01/12/31 20:40
C厨必死だな(w
>>112
あんたJavaでドライバ組みたいと思うのか?
>>119
君、Java厨?アワレ。
>>116
実用に耐えられるものを作ってくれ。
VMをJAVAで作るとか言い出しそうだな(藁
124名無しさん:01/12/31 21:02
Javaは将来性がないとか死滅するとか
おまえら情報操作もいいかげんにしろや。
そうやってJava使いを一人でも多く減らして自分だけ
甘い汁を吸おうと思ってるんだろ?だがな、俺は騙されん。
最も将来性があり、これから主流になるのは間違いなくJavaだ。
シリアル/パラレルポート接続なら
Cmmunication APIでなんとか。
あとUSB APIというものもあるようだ。
まだ実装がLinux用しか出てないけど。

>123
Jikes RVMとかいうJavaで書かれたJVMが存在する。
126デフォルトの名無しさん:01/12/31 21:09
>>123 マジな話、Javaチップの JVM って何で書いてあるんだろう?
バイトコードはネイティブ実行できるからVM不要だろうけど、
ファイルI/Oとかネットワーク周りの物理層をどうやって処理
するのか考え出すと年越せません〜
127デフォルトの名無しさん:01/12/31 21:09
JAVAとC#がこれからは主流になると思うな。
実はアンチVBだけど、
VB7は結構使えるのかもと・・・全然知らないから
いいかげんな事言ってるかも?
ただ、OOという技術が趣味プログラマーに浸透するかは疑問だし
ポインター知らないで、JAVAができるのか?という疑問もある。
まあ、あくまで予想だね。
携帯のVMはcで書かれています。
はっきり言ってVMでもデバイス制御部分は全てCかアセンブラです。
>>128
その携帯は Javaチップなんすか?
130名無しさん:01/12/31 21:18
Javaをマスターした後だと
C覚えるのって簡単ですか?
>126
内部のCPUもどきのFPGAが実行している。
Javaチップってそんな大層なもんではなくて
バイトコード処理用の拡張命令持っただけの
普通の、例えばArmとかだよ。
>>130
簡単だよ、というのが慣例だよね。
難しいかった、というやつには
おまえはJavaをマスターしてない
とつっこまれて終わり。
>130
逆のほうがいいかも
だからマスターは禁k(以下略)
13636:01/12/31 21:34
swap、まだ?
JAVAチップのドライバーはCで書かれています。
138CopyBorot:01/12/31 21:37
Cは最初なんの為に開発されたのか知ってるかい?
Cは何を使って開発されたのか知ってるかい?
このスレのC支持者に誰か予知能力者でもいるのかい?
時代は交代していくものさ。ヽ(´ー`)ノ
Java厨呼ばわりで結構。
"乗りてえ風に遅れた奴は間抜けっていうんだ。"

とか"うしおととら"の"とら"の言葉で締めてみる。
>>137
アセンブラ使わないんだ…
140CopyBorot:01/12/31 21:39
あぁ〜さっきのはJavaを「言語」として捉えた時の意見であって
JVMを攻撃しまくってるC支持者さん達には
しょうしょうキティな文章になってますがよろしくヽ(´ー`)ノ
>>139
Cでの開発環境が用意されているということ。
あんたアセンブラについて勉強した方が良いね。
14231:01/12/31 21:42
>>136
30じゃないけど、

swap( int[] array, int i, int j ){
 int tmp = array[i];
 array[i] = array[j];
 array[j] = tmp;
}

とかぐらいしか思いつかない。
他の方法あるなら知りたいっす >>30
PDP−11の時代でも、今でのCの果たす役割は根本的には変わってない気がする。
CPUがItaniumになって、OSがLinuxになったくらいで…
ま、そればかりじゃないけど。
自前でマクロ展開でもすれば > swap
14531:01/12/31 21:50
それが良いかも>マクロ展開
146デフォルトの名無しさん:01/12/31 21:57
>>10
同感
swap( int[] array, int i, int j ){
 array[i] ^= array[j];
 array[j] ^= array[i];
 array[i] ^= array[j];
}
14831:01/12/31 22:37
>>147
それーゆーのって、Cの#defineマクロとかで
swap書くときしか使ってないけどなぁ…
14930:01/12/31 22:43
>>142
合ってるよ(´∀`)
150147:01/12/31 22:45
>>148

と、いわれても…。
151 :01/12/31 22:55
Cが優れているところ
1)ポインタ
2)プリプロセッサ
Javaが優れているところ
1)ネット系ライブラリが充実している。
そんだけ。
Cの短所
・・・特に無い。
JAVAの短所
1)厨房が大量に集まってしまった。(しかも、えばってるし)
2)プリプロセッサが無い
3)ポインタが無い。特に関数ポインタ
JAVAはunsignedが無いのは痛いね。
>>152

1ビットくらいケチるなよ。
別のスレでやってなかったか?
>>151
こないだ買ったJava本にポインタの解説がイパーイありました。
Javaにはポインタがあるらしいです。
156デフォルトの名無しさん :01/12/31 23:17
Cの長所
・実行速度が速い。
・アセンブリに近い記述が可能。
・C++はCを言語体系の一部分に含めているので、
C++を学習するとき得なくてはならない知識を
ある程度小さくできる。
Cの短所
・最新の言語に含まれている、魅力的な機能がない。
>>154

確かに以前にも書いた覚えが(^^;
>155
関数ポインタもかいてあったか?
159155:01/12/31 23:21
>>158
いえ、それは書いてませんでした。すいません。
ポインタらしきものがあるということで。
161デフォルトの名無しさん:01/12/31 23:35
関数ポインタは、望んだ実装のメソッドを持つobject(のクラス)を作れ、ということで。

ただしそうすると、好きな名のメソッド(を参照する変数)ってものは
結局使えないので、微妙に嫌な気分だが。

javaも軽く使う分には悪くない言語だが、
ちと手のこんだ事をしようとすると、C以下の柔軟性しかないのが壁となる。
lispやrubyみたいな方向性の柔軟さも、少しは欲しい。

せめてクラス変数の型を継承で作れるようにしてほしかった。
Classっていう唯一の型しかないのは面倒だ。
うわ。java.lang.Classってfinalなのか。
変数どころかObjectとしても継承できないわけか。

あと、逆にC++のような方向性もまた切りすててるんで、
javaって、「エレガントに」やれる事柄が本当に少ない言語だ。
162デフォルトの名無しさん:01/12/31 23:43
Cのほうが全然早い、理解しやすい。
しかしネットワークとか付加的なのが少ない
163デフォルトの名無しさん :02/01/01 00:13
>>162
C言語は開発当初から言語仕様をスマートにする方向で
設計されたらしい。
いまだにそれを貫いているところを残してあるが故に、
付加的な仕様が少ない。
しかし、だからこそ学ぶ際に煩雑な感じを受けずにすむ。
それもここまでC言語が普及した理由の1つだろう。
欲しい機能があれば自分で作る。
これが言語仕様上ほとんど制限の無いC言語の
正しい使い方。
欲しいソフトが存在しなかったら自分で作る。
これがコンピュータの正しい使い方。
関数ポインタって、java.lang.reflect.Method
使えば似たような事出来るような気がしますが。
167デフォルトの名無しさん :02/01/01 00:52
>>164>>165
似ているわけね。
>>せめてクラス変数の型を継承で作れるようにしてほしかった。
って意味わからない。
class ClassA{ static int val; }
のvalみたいのをクラス変数っつーんだよね?
169 :02/01/01 01:01
>>166
定義済みで既知のクラスでないと呼べないでしょ。
Javaはどこまで行っても固定プログラム。
手を変え品を変え、関数ポインタがあるように書かれてるけど、
同じ材料が形を変えているだけ。

焼きそばとたこ焼きとお好み焼きみたいな物。
そーいや 一昔前は、
アセンブラで作ったプログラム vs Cで作ったプログラム
の議論(水掛け論のような気も…)が結構あったと思いますが、
Javaごときと速度比べるとは、最近のCユーザってココロザシ低く
なってません?
クラス変数なんて用語はないのでは・・・。
>>168が書いているvalのことは単にオブジェクト間で静的な
データメンバ(静的データメンバ)なのでは?
>>170
Cのいいところを挙げるとなると普通出てくるだろ。
スレタイトル読めやボケ。
>>定義済みで既知のクラスでないと呼べないでしょ。
バイトコードをJavaプログラムに生成させて、
クラスローダに読ませる、Class取得、Method取得、invoke()
ってやれば?
出来るかどうか知らないけど。
>170
こんなアホスレ立てるお子ちゃまがいるから
解りやすく教育しているだけ。
>>174
君もここよんでよく勉強してね。
>>173
その発想が出る時点で答えになってない。
ポインタについて勉強しましょうね。
>>171
クラス変数って言うみたいですけど?
少なくとも Java では。

http://www.google.co.jp/search?q=%83N%83%89%83X%95%CF%90%94&hl=ja&lr=lang_ja
>>176
なんだ、
>>定義済みで既知のクラスでないと呼べないでしょ。
ってのは 実験して出来ないって言ってるわけじゃないのか。
>>171
> クラス変数なんて用語はないのでは・・・。

OOの基本的な用語のような気が…。
180171:02/01/01 01:34
>>177>>179
そうか・・・。
すまんな、俺の間違いだったようだ。
なんか このスレみてると Javaのおかげで厨房少ないはずの
Cユーザのレベル低下が目立ってるような… なげかわしや…
182CopyBorot:02/01/01 01:43
>>181
> なんか このスレみてると Javaのおかげで厨房少ないはずの
> Cユーザのレベル低下が目立ってるような… なげかわしや…
"Java厨がいるから"と安心しきったのが低下させているんでしょうな。
183デフォルトの名無しさん:02/01/01 01:46
>181
具体的には?
>>181

どの発言から「レベル低下」だと思われました?
年始もハイだぜ、ベイベー!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
186えなりくん:02/01/01 02:25
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱成‥‥‥‥
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱戸‥‥‥
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱江‥‥
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬼鬱鬱鬱鬱鬱鬱鬱鬱鬱子‥
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬼成成戸成豆鬼豆成戸戸成成成豆鬼鬱鬱鬱鬱豆‥
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱豆戸江江江江戸戸戸戸江江江江江江戸成豆鬱鬱鬱鬱江
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱豆戸江江江江江江江江江江子江江江江江戸成豆鬱鬱鬱鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱豆戸戸江江子江江江子子子子子子子子江江戸戸成鬱鬱鬱鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱戸江江江子子子子子子子子子子子子子江江戸戸成豆鬱鬱鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬼戸江江江江子子子子子子子子子子子子江江江戸成豆鬱鬱鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱成江江江江江江江子子子子子子子子子子子江江戸成豆豆鬱鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱戸江江江子江江江子子子子子子子子子子子江戸鬼鬱鬼鬼鬼鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱戸江子江江江江江戸鬼鬼豆成戸江子子子江戸豆鬱鬱鬱鬱鬼鬱
鬱鬱鬱鬱鬱鬱鬱鬱鬱豆戸江江江江戸成鬼鬱鬱鬼豆成成戸江江江江戸戸成豆豆鬼鬱鬱
鬱鬱鬱鬱鬱鬱鬱鬱豆戸江江江江豆鬼豆成戸江江江江江戸戸戸戸戸戸江江子江戸成鬱
鬱鬱鬱鬱鬱鬱鬱成江江子子子戸成江子子子子子子江江戸戸戸戸戸江江江子江戸戸鬱
鬱鬱鬱鬱鬱鬱豆江江江子子子江江子子子子子子江戸戸江江江江江江戸戸鬼鬼成成鬼
鬱鬱鬱鬱鬱鬱豆江江江子子子子子子子江江成鬱鬱成戸江子子江江江戸子鬱鬱鬱成豆
鬱鬱鬱鬱鬱鬱豆江江江子子子子江江成鬼戸戸鬱鬱豆戸子子子江戸江戸戸成成成成成
鬱鬱鬱鬱鬱鬱鬼戸江子子子子子子江子子子江江戸戸江子子子子戸江江江戸戸江江戸
鬱鬱鬱鬱鬱鬱鬱戸江子子子子子子子…子子江江江子子子子子子江戸江子江江江子江
豆豆鬼鬱鬱鬱鬱戸江江江子子子子子子子子子子子子子子子子子子戸戸江子子子子戸
江戸豆鬱鬱鬱鬱成江江江江子子子子子子子子子子子子子子子子子戸戸江子子子子戸
戸戸成成豆鬱鬱豆戸江江子子子子子子子子子子子子子戸江子子…子戸戸子子子子江
江子成江江鬱鬱豆戸江江子子子子子……子子子子子江子子……子子戸戸江子子子江
子子江江江豆鬼戸戸江江子子子子子子…子子子子江戸子子江江戸成豆成戸江江子戸
戸江戸豆戸戸戸江江江子子子子子子子子子子江江江戸戸成江戸豆鬼豆戸戸戸江江戸
戸江子戸戸江江江江江子子子子子子子子子江江江子子子子江江江戸戸戸戸戸江江戸
江戸江江子戸江江江江江子子子子子子子子江江江子子子子子子江江戸戸戸戸江戸江
子戸江子戸鬼江江江江江子子子子子子子子江江江江子子子江江戸成豆豆成戸江成子
江戸鬱鬱鬱鬼戸戸戸戸江江江子子子子子子江戸成成戸戸戸戸成成豆鬱鬱成江戸成‥
戸江豆鬱鬱成成戸戸戸江江江子子子子子子子江鬼鬱成戸子子江江豆鬼豆江江戸戸‥
戸江江鬱鬱成豆成戸戸戸江江江江子子子子子江戸戸戸戸戸戸戸成豆成戸江戸成子‥
戸江江鬱鬱鬼成成成成戸戸江江江江江子子江江子子江江江戸戸戸成豆戸戸成戸‥‥
江江江戸成鬱成成豆豆成成戸戸江江江江江江江子子子江江戸成成成戸戸戸成子…‥
戸江江江鬼鬱戸成豆鬼豆豆成成戸戸江江江江江子子子子子江江江江江戸成江子……
江江豆豆鬱鬱成成成豆鬼鬼鬼鬼成戸戸江江子子子子子子子子子子子江戸成子子子…
江鬼鬱成鬼鬱成成成成豆鬼鬼鬼鬼鬼豆成戸江江江子子子子子子江江戸成鬼鬼戸子…
鬱鬱鬼豆鬼鬱豆成成成成豆豆鬼鬼鬼鬼鬼鬼成戸江江江江江戸戸成成豆鬱鬼鬱鬱戸…
鬱鬱鬼鬼豆鬼鬼成成戸成成成豆豆鬼鬼鬼鬱鬱鬼豆豆成成豆豆豆鬼鬱鬱鬱鬱鬼鬱鬱戸
鬱鬱鬱鬱成鬱鬱鬼成成戸戸戸戸戸戸成豆鬼鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱
鬱鬱鬱鬱豆鬱鬼鬱成戸戸戸江江戸江戸戸成豆鬼鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬱鬼鬱鬱
187 :02/01/01 02:28
アンチC房が荒らしてるな。
タイーホされて以来、婦警にC言語を教わってるぜ、ベイベー!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
189デフォルトの名無しさん:02/01/01 02:39
ホントレベル低いな・・・
>2)プリプロセッサが無い
プリプロセッサがないとなんで困るんだよ・・・

>3)ポインタが無い。特に関数ポインタ
ホント学習してくれ。
オブジェクト変数に入ってるのは、メモリアドレス。
関数ポインタが、オーバーライドとかインターフェースとか
(実行時)ポリモーフィズム=レイトバインディング=動的バインディング=DMD
になったんだけど。
190  :02/01/01 02:44
>>189
ロクに実務やった事無いか、低レベルの奴は問題に気付かないだけ。
死ねよ。
191デフォルトの名無しさん:02/01/01 02:51
>javaも軽く使う分には悪くない言語だが、
>ちと手のこんだ事をしようとすると、C以下の柔軟性しかないのが壁となる。
>lispやrubyみたいな方向性の柔軟さも、少しは欲しい。
アホか?
RUBY製作者が書いてる本でも読んでみろ。
lispはデバッグが難しいというか、複雑な関数が表現しずらいので
大規模にむかないと、「個人的に」思うが、
JavaはC++,RUBYに比べてかなり大規模向けだぞ。

>せめてクラス変数の型を継承で作れるようにしてほしかった。
>Classっていう唯一の型しかないのは面倒だ。
>うわ。java.lang.Classってfinalなのか。
>変数どころかObjectとしても継承できないわけか
おまえ末期症状だな。
http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/lang/Class.html
このクラスが何なのかもよくわかってないみたいだな?
とりあえずこのクラスを継承して何がしたいんだ?
オブジェクト変数の型なら、定義したクラス全てが型になるぞ。
派生クラスポインタの事をいってるなら、javaではObject型の変数に
どのオブジェクトの参照も入れることができる。
他にJava使いもいるぜ!
婦警と、このスレみたいな言い合いしてるぜ、ベイベー!
俺からみてもレベル低いぜ、ベイベー!
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
193デフォルトの名無しさん:02/01/01 02:55
馬鹿が自分の不勉強さ加減をさらすスレですか。
馬鹿とか無知とかって、自分がそうであることに気がつかないからね。
元旦からアホさらして、かわいそうな人生だね。
194デフォルトの名無しさん:02/01/01 02:57
ついでに教えておくと、
C++ではプリプロセッサは使わない。
というか、使わなくて済むように機能が追加された。
それをJAVAが真似したんだから、プリプロセッサなんて
あるわけ無いだろ。
OOだとプリプロセッサは不都合が起きる。
クラスで名前空間を区切っても、DEFINEで破壊されるなどと・・・

まあ、構文を無視した#IFは便利だと思うが
それはC++のコメントがアホだからだ。
emacs使ってれば問題はないが。
195  :02/01/01 02:57
>>189
の信じる学習とはJavaのプロパガンダ本を鵜呑みにすることじゃない?
196  :02/01/01 02:58
>>194
死ね!
>>195
いいかげん知らない事を突っ込むのやめなよ、あんた。
どうやるか知らないのはあんたが不勉強だからだよ。
この天然ぶりは圧巻だ。
199デフォルトの名無しさん:02/01/01 03:01
>欲しい機能があれば自分で作る。
>これが言語仕様上ほとんど制限の無いC言語の
ボケですか?
JAVAも同じ。
200  :02/01/01 03:04
はあ、Javaの宣伝間に受けて「勉強」したと思ってる真性馬鹿か・・・
最近減ったんで安心してたのに・・・。
201  :02/01/01 03:06
それにしてもJavaにプリプロセッサが無い理由なんて始めて聞いた。
煽り用の捏造かな?
煽ってる奴はプログラムの素人臭いし。
202デフォルトの名無しさん:02/01/01 03:10
>ファイルI/Oとかネットワーク周りの物理層をどうやって処理
C言語の場合、同じソースでも環境によってはコンパイルできない。
なぜなら、I/Oは言語仕様外だから。
言語仕様外の物は、ライブラリーとして提供するしかないわけで
互換性を保つにはヘッダファイルを共通にして、なるべく同じように動くような気がする
バイナリーを作ると。
C++も同じね。
JAVAはライブラリーとして提供するのではなく、VMとして提供するのが理想。
でもVMに組み込むのが面倒な場合は、JNIという最終手段を使う。
JAVAチップでさえもドライバの開発環境はCしかないね。
JAVA単体では割り込みの記述なんてできっこないからね。
204 :02/01/01 03:16
あーん 真性Java房だよー。
Rubyにあげるから取りに来てくれ。
205デフォルトの名無しさん:02/01/01 03:17
ドライバを書くときにヘッダを読み込むでしょ。
それのソースを見てくれればわかるけど、
実際の中身はシステムコールか、アセンブラなんだよね。
それってのは結局のところ、アセンブラ(機種依存)で書かれた、
ライブラリーを呼び出したりしてるだけであって、
C単体でやってるんじゃないよ。
で、JAVAでやりたければJNI使って、システムコールを呼び出すクラスを作って
開発するわけだけど。
現実問題として、OSに組み込むにはOSがJVMで動くドライバをサポートする
必要がある。
理由はわかるよね?
206デフォルトの名無しさん:02/01/01 03:17
なんかまともな質問はないですか?
207ひとりごちてみる:02/01/01 03:18
環境によってコンパイル出来ないってのはI/Oとはあんまり関係無いと思うが、
まぁ、動かないっていう意味で言ってるんだろうな。
言語仕様って、標準ライブラリも含んでるんだろうな、とすると入出力関数はあるぞ。
そもそもメモリマップドI/Oなら、ポインタがあればいいし。
でも、I/Oを切り離してライブラリにするってのは、ふつーそーだしな。
JavaはVMに入出力組み込むのが理想なのか??
VMの仕様はかなり厳密に定義されてるから、動作を変えちゃうのは理想なのかなぁ??
ま、JMVはまだ勉強中だから、よくわからないけど。
208デフォルトの名無しさん :02/01/01 03:21
>>206C++のbool型はどうやって実装しているのですか?
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
Cだけで全部書かれたドライバだって、あるぞ。
でも、アセンブラで書くのがあたりまえな環境もあるだろうな。
ケイタイとか。
210デフォルトの名無しさん:02/01/01 03:28
>まぁ、動かないっていう意味で言ってるんだろうな。
ゴメソ、そうだ。
入出力関数もそう。
たとえば、ソケットでブロックされてる時に
printfをすぐに表示する処理系と、そうじゃない処理系ってあるでしょ。
そんな感じの違い。
ある程度互換性があるような気がするのは、処理系ごとにアセンブラを書く
ライブラリー作成者の努力。
(一部アセンブラね。)
機種依存部分をライブラリにすると、コンパイラ作成時にメリットがある。
で、CとかJavaとかと逆の立場なのがPerlね。
VMはもうちょっと勉強してみてね。
VMって言うよりはバイトコードについて調べてみてください。
>>205
組み込みやってる俺から言わせて貰えば
はっきり言ってその発想から抜けた方がいい。
割り込みっつーのはアセでベクタ定義されたアドレスにJUMPしてんの。
つまりアセで関数名定義して実態はC等のマイクロコードを生成する言語で書かれてるんだよ。
OSなんてまったく関係無い。
212Javaの良いところ:02/01/01 03:32
1.Webシステムが簡単に作れる。
2.ミーハーな客が、簡単なシステムにカネを沢山出す。

仕事でやる分には、これだけ利点があれば充分だと思うが。
とくに2が重要。
213205:02/01/01 03:33
>>211
それは俺に言ってるの?

>つまりアセで関数名定義して実態はC等のマイクロコードを生成する言語で書かれてるんだよ。
そういう意味で書いたんだけど。

>OSなんてまったく関係無い。
システムコールはどうなるよ・・・
>2.ミーハーな客が、簡単なシステムにカネを沢山出す。
これかなり重要だね

知人は23で400万オーバーしてるのに
俺は 200万いかないし・・・・・

俺がゲームPGだからっていうこともあるけど・・・
215JavaのC++に比べて良いところ:02/01/01 03:37
1コードがかなーり読みやすい。
2deleteを意識しなくていい。
3ライブラリとリファレンスが良い。
4JavaDocも便利で見やすいのができる。
5コンパイル時間が短い。
6名前空間が容易に分割できる。
7配列の仕様はかなりいい。
>>211
> つまりアセで関数名定義して実態はC等のマイクロコードを生成する言語で書かれてるんだよ。

折れ組み込みのことよくわからないし、プロが言うから間違いないんだろうけど、
それって「マイクロコード」っていうの?
217デフォルトの名無しさん :02/01/01 03:39
>>215
Javaってコンパイラ言語だっけ?
218デフォルトの名無しさん:02/01/01 03:41
俺が今でも疑問なのは、
始めてやった言語がJavaで
Javaをマスターするのにどれくらい時間がかかるのか、
という事。
参照とOOの壁ってでかくない?
間違ってもC言語やる前にJAVAをやらない事を
俺はすすめる。
219デフォルトの名無しさん:02/01/01 03:42
コンパイラ言語ってなんですか?
>>217
JavacはJVMへのコンパイラ。
JVMはインタプリタ。
Javaソース から バイトコード 生成する作業は
コンパイルと言われていますが、何か?
222JavaのC++に比べて良いところ :02/01/01 03:43
1コードがかなーり読みやすい。
2deleteを意識しなくていい。
3ライブラリとリファレンスが良い。
4JavaDocも便利で見やすいのができる。
5コンパイル時間が短い。
6名前空間が容易に分割できる。
7配列の仕様はかなりいい。
8コンパイルエラーがわかりやす過ぎる。
9実行時のエラー(例外)もわかりやす過ぎる。
223 :02/01/01 03:44
>>214
ゲームPGだって1000万行くのいるよ。
会社が悪いのか腕がないのか・・。
224デフォルトの名無しさん:02/01/01 03:44
× JavacはJVMへのコンパイラ。
○ Javacはバイトコードへのコンパイラ。
225デフォルトの名無しさん :02/01/01 03:44
>>215
C++のコードは読みにくいと?

>配列の仕様はかなりいい。
どのようにいいの?知らないから教えてほしい。
226 :02/01/01 03:46
>>222は煽ってるの?
>>220
JavacはJVMへのコンパイラ(プッ

>>224
そだね。
>ゲームPGだって1000万行くのいるよ。
20代前半で1000万行く人いるんですね。
私もそのぐらいになりたいです。
そこまでの腕になるためには数年はかかると思いますけど・・・
230  :02/01/01 03:50
ああ、二十台前半という条件つきかあ・・・。
231デフォルトの名無しさん :02/01/01 03:50
誰か答えてよ・・・。
 ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄
      ,〜((((((((〜〜、
     ( _(((((((((_ )
     |/ ~^^\)/^^~ヽ|
      |  _ 《 _  |
      (|-(_//_)-(_//_)-|)
      |   厶、    |
      \ |||||||||||| /
      ⊂ \_______⊂ ⌒`つ≡≡≡(´⌒;;;≡≡≡
              ̄ (´⌒(´⌒;;
232JavaのC++に比べて悪いところ :02/01/01 03:52
1new,deleteで精神的に疲れる。
2意味ない部分でのパフォーマンスが気になる。
3潔くvirtualをつけることができない事がある。(継承のコストが気になる)
4コンパイル時間が長すぎてキレる事がある。
5::の前が長い。
6ヘッダを書くのが面倒。
7doxygenは日本語が入ると読みずらい。(誰かクッキーを)
8stlのコード汚い。
9#includeの数は減らない?
10#typedefは気分的に嫌。
11ポインタか参照どっちかにして。
12どーせ、クラスはポインタでしか扱わないって・・・
>>232
それは 「JavaのC++に比べて悪いところ」ではないような…
>>232
名前の欄、逆じゃないの?
235デフォルトの名無しさん:02/01/01 03:58
>C++のコードは読みにくいと?
::が痛いし、ヘッダが痛い。
要するに冗長な部分が多かったり、一箇所に情報がまとめられなかったりと
プログラミング言語C++(赤いやつ)には、コンパイラ作成者の怠慢って書いてなかった?

>どのようにいいの?知らないから教えてほしい。
最初から、配列の長さを記録していて
アクセスする時も、配列の長さを超えていないか確認するので
C++で経験する恐怖のデバッグはない。
その分パフォーマンスは犠牲になるけどね。
でも、ほとんどのプログラムでそのロスは気にならない。
なぜなら、C++のメソッド呼び出しのオーバーヘッドより
ロスが少ないから。
VCで挫折してSwingでやっと表示できた厨房が
クラス作って「オブジェクト指向を理解した」と喚いてる光景が
目に浮かびますが何か?
237デフォルトの名無しさん :02/01/01 03:57
>>232
陰険な奴だな
238デフォルトの名無しさん:02/01/01 03:59
>>233,234
せーかい!!
>>205
>システムコールはどうなるよ・・・
OSが用意するハンドリング可能なAPI。
OSによって異なるが抽象化されたI/Oを操作するときに用いる。
デバイスドライバはその下層に位置する。
しかしシステムコール、ドライバの概念が無い、カーネルだけの
OSもある。(ITRON)
携帯のJAVAなんてRTOSのタスクの1つで動いているだけ。
周辺デバイスへのレジスタへのI/Oはベクタ以外は全部C。

>>216
そう。
 ,〜((((((((〜〜、
    ( _(((((((((_ )
    |/ ~^^\)/^^~ヽ|
     |  _ 《 _  |
     (|-(_//_)-(_//_)-|)
     |   厶、    |
     \ |||||||||||| /  < >>232あんた詳しそう!答えてくれよ!>>208の質問に!
       \_______/
     /⌒    ヽ
    / /    ノヽ    _ー ̄_ ̄)',  ・ ∴.'  , .. ∧_∧ ∴.'.'  , .
    ( /ヽ   | ) --_- ― = ̄  ̄`:, .∴ '      ((( #)゚Д゚) .∴ '
    \ /  _, -'' ̄  = __――=', ・,' .r⌒>  _/ / ・,' , ・,‘
      (   _~"" --  _-―  ̄=_  )":" .' | y'⌒   ⌒i .' .   ’
      |   /,,, _―  ̄_=_  ` )),∴. ).  |  /  ノ | ∴.'∴.'
      |  / /   ―= _ ) ̄=_)   _), ー'  /´ヾ_ノ
      (  ) )      _ _ )=  _) ,./ ,  ノ  '
      | | /          = _)  / / /   , ・,‘
      | | |.               / / ,'  , ・,‘
     / |\ \            /  /|  |
     ∠/   ̄            !、_/ /   )
                           |_/
Cの言語仕様をちょろっと改良した、BetterCが欲しい。
C99がそれか?
242 :02/01/01 04:08
>>240ウザイ!
ワードの1ビット使ってるに決まってるだろうがボケ!
243JavaのC++に比べて悪いところ :02/01/01 04:09
ゴメソ>>皆様
お詫びに。
1バイナリーがはけない。
2よって、遅い。
3たまには、メモリーをきっちり使いたい。
4メモリがきっちり使えなくても、newのオーバーロードもしたかった。
5演算子のオーバーロードは是非できるようにしてくれ。
6でも、演算子のオーバーロードサポートしても実はJAVAだと言語仕様が汚くなりそうだ。
7stlは必要ない。アグリゲーションを貫いて欲しかった。
8インターフェースと継承で名前が衝突した時はかなーーーりいただけない。
9unicodeでの処理は、パフォーマンスがちょっと気になる。
10unsignedは欲しいかも。(これは何ともいえない)
244デフォルトの名無しさん :02/01/01 04:09
 ,〜((((((((〜〜、
    ( _(((((((((_ )
    |/ ~^^\)/^^~ヽ|
     |  _ 《 _  |
     (|-(_//_)-(_//_)-|)
     |   厶、    |
     \ |||||||||||| /  < >>242ひどい・・・初心者なのに・・・。
       \_______/
     /⌒    ヽ
    / /    ノヽ    _ー ̄_ ̄)',  ・ ∴.'  , .. ∧_∧ ∴.'.'  , .
    ( /ヽ   | ) --_- ― = ̄  ̄`:, .∴ '      ((( #)゚Д゚) .∴ '
    \ /  _, -'' ̄  = __――=', ・,' .r⌒>  _/ / ・,' , ・,‘
      (   _~"" --  _-―  ̄=_  )":" .' | y'⌒   ⌒i .' .   ’
      |   /,,, _―  ̄_=_  ` )),∴. ).  |  /  ノ | ∴.'∴.'
      |  / /   ―= _ ) ̄=_)   _), ー'  /´ヾ_ノ
      (  ) )      _ _ )=  _) ,./ ,  ノ  '
      | | /          = _)  / / /   , ・,‘
      | | |.               / / ,'  , ・,‘
     / |\ \            /  /|  |
     ∠/   ̄            !、_/ /   )
                           |_/
馬鹿に付ける薬はない。
246デフォルトの名無しさん:02/01/01 04:13
>周辺デバイスへのレジスタへのI/Oはベクタ以外は全部C。
実際にレジスタへのI/Oはasmで記述してるんでしょ?
>>243
個人的には
・enum が欲しい。
 enumへの コンパイル時の代入チェックが欲しいのね。
・InputStream と OutputStream を
interface に代えてくれれば…

遅いのは、ある程度までなら腕でカバーできる
のと、delete に苦しまされるのと引き換えと
思えば我慢できるけど。
俺、この前Cでドライバ書いたよ。
>>247
漏れもenumはなんでJavaにないんだろう?
って思うYO
昔はネタだったが 今は現実問題。ホントにこんな奴がいるとはねえ。
http://www.javaopen.org/jfriends/cforjava/
リアルモードとかプロテクトモードってゆう古いアーキテクチャ
の残骸を引きずっているCPU(たぶんあんたがパソコンで使ってる奴)
ではアセじゃないと書けないかもね。
でも今日びのメモリマップドCPUではリニアアドレスでアクセスできるから
ポインタ使って

unsiguned char *reg;
reg = 0x80000;
*reg = 0xff;
でアクセスできる。
こういうときunsigunedじゃないとイタイわけよ。
252 :02/01/01 04:33
>unsiguned
unsignedでは?
253デフォルトの名無しさん:02/01/01 04:36
C早い。
1万回の"Hello C\n"表示をわずか4秒。。
C++は5秒
>>252
そう。眠いんでもう寝る。
255デフォルトの名無しさん :02/01/01 04:37
>>253
Javaは?
>253
プログラムはともかくコンソールに
1万行/秒の表示能力があるとは思えないんだけど?
1万行/秒の表示能力があるとは思えないんだけど?

2500行/秒の表示能力があるとは思えないんだけど?
>>256
単にプログラムの実行速度を計測したものと思われ。
>>253
それはつまり printf vs cout でそーゆー結果が出たって事ですか?
260 :02/01/01 04:54
>>257
それぐらいあるよ。
ねーよヴァカ!
262 :02/01/01 04:55
>>259
puts vs coutじゃない?
やれやれ、また妄想クンか
君は脳内コンソールでも使ってなさい p
264 :02/01/01 04:58
>>261
今作って実行して見たんだよボケ!

  for(i=0;i<10000;i++){
    System.out.println("Hello C "+i);
  }
ちゃんと1万回5−7秒くらい。(何故かTimeが取れない)
さっきの人と環境が違うから比較にはならないが。
265 :02/01/01 05:00
つうか、これじゃブロック転送のベンチマーク取ってるようなもんで
比較としてはJavaに甘い例だな。
bash-2.05a$ time ruby -e "for i in 1..10000 do puts 'hello,ruby'; end"
real 0m1.262s
user 0m0.010s
sys 0m0.020s
ですがなにか?
267 :02/01/01 05:05
#include<stdio.h>
#include<time.h>

void main(void)
{
clock_t i;
for(i=0;i!=10000;i++)
puts("Hello C");
i=clock();
printf("%d\n",i/CLOCKS_PER_SEC);
}
/*これで実行したら、確かに4秒だった。*/
じゃあrubyが最速ってことですね(藁
269 :02/01/01 05:11
>>268
表示されてないから駄目。
270266:02/01/01 05:13
>>269
きっちり一万行表示されたって
271 :02/01/01 05:12
#include<iostream>
#include<ctime>

using namespace std;

void main()
{
clock_t i;
for(i=0;i!=10000;i++)
cout<<"Hello C\n";
i=clock();
cout<<i/CLOCKS_PER_SEC<<'\n';
}
//これだと10秒もかかってしまった
272 :02/01/01 05:15
>>270
じゃあunixが優秀ということで。
273 :02/01/01 05:14
マシンの処理能力によっても変わってくると思われ。
274 :02/01/01 05:17
そだね。
Rubyは駄目だよ、PERL,phpより遅い
ベンチ取らなくても分かるからとってないけどね
276266:02/01/01 05:21
>272
cygwinなんだが...
CPUはAthlon1.1G

ちなみにgccだと
bash-2.05a$ gcc -O2 main.c
bash-2.05a$ time ./a.exe
real 0m1.422s
user 0m0.170s
sys 0m0.200s

やっぱruby最速(藁
277 :02/01/01 05:22
>>276
俺のはP2-350だぞゴルア
278 :02/01/01 05:21
>>271でcoutじゃなくてputsやprintfでやってみると
やっぱり4秒だったよ。
と、いうことは<<は遅いということか・・・。
279267:02/01/01 05:24
>>276
俺の環境
VC++6.0
Celeron500Mhz

マシンの性能差はかなりあるぞ
280 :02/01/01 05:25
処理時間の99%がブロック転送で、ネイティブの処理時間比較
してるようなもの。意味無い。
言語比較なら演算で比較するのが良い。
281結論:02/01/01 05:27
ruby>>>>>>>>>>>>>>>>>>C>Java>>>>>>>>C++
282 :02/01/01 05:28
>>281
もう結論なの?ruby擁護?
割り算掛け算やってみー。
アセに落とすと一番ステップ数多くなるから。
284 :02/01/01 05:32
Ruby房の正体が本当にRuby使いだったと判ったのは収穫であった。
285じゃこれは?:02/01/01 05:33
public static void main(String args[]){
 long i;
 long a,b,c;
 for(i=0;i<10000000;i++){
  a=i;b=i*2;c=i/3+1;
  a= a*b/c;
 }
}
286 :02/01/01 05:33
>>281
もうちょっとよく読め。
C++が遅いんでなくてcout<<が遅いと書いてあるだろ。
>>286
っつーと rubyが最も速いっつー結論に異論は無い、と。
288今のところ・・・:02/01/01 05:37
ruby>>>>>>>>>>>>>C/C++>>>>>>>>>>>>>Java
>>285
そんなんでいいよ。
結果だけ表示すれば。
290速度結論:02/01/01 05:42
C > C++ > Java > Perl > Ruby
まあこれでいっか・・・
291デフォルトの名無しさん:02/01/01 05:48
>>290
(・∀・)イイ!
C > C++ > Java > Perl > Python > Ruby
C > C++ > Java > Perl > Python > php > HSP > Ruby
C,C++ > Java > Perl > Python > BASIC >Ruby
士農工商エタ非人Ruby
C/C++ > Delphi > Java > Perl > Python > php
> HSP > BASIC > ひまわり > Ruby
>>296
正解。
よって、終了。
300踏んだ人、削除依頼出してきて。
VBがないんですが...
299266@るby房:02/01/01 05:59
なんか厨房呼び寄せちまったな

DOS窓の表示速度調べたかっただけなのに...
C/C++ > Delphi > Java > Perl > Python > php
> HSP > BASIC > ひまわり > Ruby > VB
これでいい?>298
VBはBASIC以下かよ!!
302シャア:02/01/01 06:02
まさか300まで逝くとな。
>>299=厨房
つーか同じ環境でやらないと意味無いだろ
>299
↑こう言う奴が居るから気持ち悪くて使いたく無い (^-^
305デフォルトの名無しさん:02/01/01 06:06
同一環境で
bash-2.05a$ time ruby -e "for i in 1..10000 do puts 'hello,ruby'; end"
real 0m1.262s
user 0m0.010s
sys 0m0.020s

bash-2.05a$ gcc -O2 main.c
bash-2.05a$ time ./a.exe
real 0m1.422s
user 0m0.170s
sys 0m0.200s

なので
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>C
であることが証明されました
放置開始
307 :02/01/01 06:09
>>305
何でオマエが同一環境持ってんだよ。
オマエ単なる厨房だろ(藁
Cygwinの使い方も知らんのか
Rubyにはお似合いだな 
309デフォルトの名無しさん:02/01/01 06:12
C房必死ですね
Ruby馬鹿が侵食しているのでこれにて終了
>>306
いや、じっくりおちょくって遊ぼう
まさか a.exe とは
いやー流石ルビーストだね   嘲笑
>>309
私はどちらかに荷担するつもりはないが、
必死なのはRuby房の方では。
313学者:02/01/01 06:17
今さっきの実験で
うんこ == ruby
が整数 1を返すことがわかったぞい!
うちの環境では(うんこp 'ruby) =>tが返ってきた。
>>313
ワラタ
rubyってcygwinでコンパイルできるの?
317デフォルトの名無しさん:02/01/01 06:21
言語別所有マシン比較結果
Ruby Athlon1.1G
C/C++/Java Celeron500, P2-350

よってここでもRubyの優位性が見て取れます
>>317
もしかしてさ、自分で面白いと思ってるの・・?
>>316
出来ますが、実行するとうんこを吐いて死んでしまいます。
>317
マシン分けてるんだ
俺もRuby入れると環境が汚れるから、捨てシステムに入れろって注意されたよ
もう寝なさい。
>>317
・・・馬鹿の世界チャンピオンだ・・・。
もしかして、Ruby信者は厨房率高い?
>>320
君って(・∀・)イイ!
そうか〜よごれるのか〜。
Ruby 名前からしてヤヴァすぎ
ふつー恥かしくて付けれません
>>319
ワラタ
327デフォルトの名無しさん:02/01/01 06:33
>325
「あ〜あ〜、やっちゃったよこのYellow」
と思ったNativeが十万人程確認されていますね
いつの間にかRuby房を煽るスレになってる・・・。
Ruby房の顔が想像できて笑えるからいいけど。
>>328
 (  ::::::::::::::::::::::::^:::::::::: :::::: :(
     丿::::::::::::::::::::::::::::::::::::::::::::::::::::: :::: (
     /::::::::::/ノ::::::::ノ::::::::ヽ:人::::::::::ヽ::::::::::)
     (::::::::::/  ):::ノ::::ノ ) ソ ヾ::::::::::::丶ヽ
    (:::::::::/ 彡  ノ   ノ  :: 彡:/)) :::::::)
   (::::::::::/彡彡彡彡彡   ミミミミミミミ ::::::::)
   ( :::::::// ̄ ̄ ̄ ̄ヽ===/ ̄ ̄ ̄ ̄ヽ |::::::)
    | =ロ   -=・=-  ‖ ‖ -=・=-   ロ = |
    |:/ ‖    / /ノ  ヽ \     ‖ ヽ|ヽ
    /|/  ヽ`======/  ⌒ ` ========ノ   | |
   (||         .(● ●)          |ノ
    |         : :: :::l l: ::: :::          |Rubyこそ一番一番一番!
    |      _:: :二 M二__::::::.. .        |
    |     : ::: : ::: ::  ===  ::: :: :: ::::     )
    \ :::   :::::::::::  ::::::::::  ::::::::::::::   /|
    /|ヽ  ヽ:::: _- ::::: ⌒:: :::::::: -_   ノ
   / || 丶\_::_:::::_:::: :::::_/:::: /
      | | \ \ ::::::::::: :::::::::: ::: :: _/
   / ̄\ 丶  ̄ ̄ ̄ ̄ ̄ ̄ ̄
これだろ?w
330デフォルトの名無しさん:02/01/01 11:52
Rubyを叩くヤツは在日
CとJavaのスレでなぜRubyが
332在日 :02/01/01 12:08
おいおいRuby信者に言われたくネーヨ (臭
333デフォルトの名無しさん:02/01/01 12:09
Ruby?Osama Binてやつ?
ネイティブコンパイラが無い言語なんてクソだよ。
ソース行末にセミコロン書く習慣のない言語なんてクソクソだよ。
334デフォルトの名無しさん:02/01/01 12:12
>ネイティブコンパイラが無い言語なんてクソだよ。
馬鹿発見

Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Java >>>>>>>>>>>>>> C
335デフォルトの名無しさん:02/01/01 12:14
Cを知らなくてもRubyはできる。
Rubyを知ればCはやらなくていい!!!
336デフォルトの名無しさん:02/01/01 12:23
>>334
理論的な話が不可能なドキュソ・ルビャー発見。
バカは自分がバカだと気づかない。
337指輪物語:02/01/01 12:25
テーブルの上に2つの鉄槌が有る。。。。
執事「我神よ、民供は増えすぎた言語に困惑しております
  残念ですがこの2つの鉄槌を振るわねばなりません
  Perl,Ruby,phpのうちからお選び下さい」
神様「うむ、」
執事「ささ」
神様「では、一つ目の鉄槌をRubyに、そして二つ目の鉄槌をRuby厨に
  落すぞ、あ、後余ったのも全部Rubyでいいや うんうん」
執事「マンセーー!!!」
ルビャーとマカーって、共通するモノがあるよね。
論理的な話し以前に、感情的な話しかできない。
自分が信奉するモノを叩かれると、エモーショナルにキレる。
もうね、アフォかと。ヴァカかと。
339デフォルトの名無しさん:02/01/01 12:59
>>336 じゃあ、理論的に>333を説明してみな。
あまり期待せずに待ってるよ(わら
340デフォルトの名無しさん:02/01/01 12:59
Ruby以外の言語は糞。これは疑問の余地なし。
341CopyBorot:02/01/01 12:59
>>338
> ルビャーとマカーって、共通するモノがあるよね。
> 論理的な話し以前に、感情的な話しかできない。
> 自分が信奉するモノを叩かれると、エモーショナルにキレる。
> もうね、アフォかと。ヴァカかと。
オマエモナー
RubyでOSつくれるんですか?
343 :02/01/01 13:10
>>339
ルビ房の自作自演。
344デフォルトの名無しさん:02/01/01 13:39
Rubyが悪いのではない。
Ruby厨が痛いだけ。
Rubyという言語そのものは
Ruby >>>>>>>>>>>>>>>>>>>>>>>>>>>> Java >>>>>>>>>>>>>>> C
345デフォルトの名無しさん:02/01/01 15:04
>>344 激しく同意
Cは新だ。
346デフォルトの名無しさん:02/01/01 15:10
>>344-345
マジで総意
Ruby>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>他の糞言語>>>>>>>>Ruby厨
347デフォルトの名無しさん:02/01/01 15:16
RubyはCに完全勝利した!
348デフォルトの名無しさん:02/01/01 15:19
Rubyは俺の良心なんだ!
349デフォルトの名無しさん:02/01/01 15:30
Rubyやってみたいんですけど、
ネイティブコードにコンパイルってのはできるんでしょうか?
(そういう言語仕様ではないのかな?)
あくまでOOなスクリプト?
350126:02/01/01 15:30
>>202よ、>>126をしっかり読め
「JavaチップのVM」でファイルI/Oとかネットワーク周りの物理層を
どう処理しているかって聞いたんだよ。
それに対する >>128, >>131, >>132 (レスありがと)で納得したんだが、

>VMとして提供するのが理想
>JNIという最終手段
では話になってないんだよ。

結論としては、VM内やJNIの先で FPGA にメモリマップされたI/Oを叩いたり、
サブCPUや非Javaバイトコードモードに遷移して、
Cやasmで書いたドライバを実行して物理I/Oを行うってことですな。
>>349
>>305の結果読め。rubyはコンパイルするまでもなくCより高速
>>351
それってさ、単にforループを判定しただけだろ?意味無いよ。
実用的なアプリケーションでのベンチマークはどうよ?
「できる・できない」は別として、OOなスクリプトなんだから、Cと比較してること自体イタイ。
サーバサイドで、Javaと比較した客観的データくれ。
> JavaのC++に比べて良いところ
> 2.delete を意識しなくていい。

あんた、真のプログラミングでJava使ったこと無いだろ。
GCに悩まされているサーバサイドの皆さん、説教してやってください。
354デフォルトの名無しさん:02/01/01 15:57
るby再起オー!
c言語なkん化かこの異物!
じゃヴぁなんか遅きゅ轍海野のにmな棚井悪阻。真のおおプロ蔵mなが類byを使う戊だ!
るbyさいこーまt″案sレー
355デフォルトの名無しさん:02/01/01 15:58
>>305 の結果って、単に標準出力の処理速度を計ってるだけじゃん。
それも、推測だけど、gcc では出力をバッファリングしていないが、
Rubyはバッファリングしているために、見かけ上速くなってるだけでは?
ファイルにリダイレクトした場合の速度計測希望〜
266と267はやってることが違うのでは?
Rubyしらんけど
JavaのGC -> 原因不明鯖落し用の爆弾
RubyのGC -> え、Ruby何それ?
For Loopが速いだけでRudyが速いといえるわけがない。
Rudyが速いと主張するなら、まともなベンチマークを取って
ほかの言語とも比べたものを示せ>ルビャー
Rubyが他の言語より遅いはずがない。
360デフォルトの名無しさん:02/01/01 16:15
何度やっても同じ。Ruby >>> C
知恵遅れのジジイはCでもやってろ
C/C++ >>>>>>>>>>>> | 壁 | >>>>>>>> Ruby
362デフォルトの名無しさん:02/01/01 16:17
>>360 ....
363デフォルトの名無しさん:02/01/01 16:20
Rubyの速さを体感したければ
まずはRubyをインストールしてみることです。
>> 363 CERT勧告に「毎月13日に頭がクラッシュします」って書かれてたけど大丈夫?
365P2-350:02/01/01 16:31
 long i;
 long a,b,c;
 long t1,t2;
 t1 = System.currentTimeMillis();
 for(i=0;i<10000000;i++){
  a=i;b=i*2;c=i/3+1;
  a= a*b/c;
 }
 t2 = System.currentTimeMillis();
 System.out.println("time = "+(t2-t1) +"msec.");

8620msec
>364
ここに居るのは被害者かいな (w
367デフォルトの名無しさん:02/01/01 16:36
結局ルビャーって、マカーと同じだな。
ごくごく1部の機能が優れている?(とは思えないけど)からって、そこにばっかり粘着してて。
枝葉を見て幹を見ず。木を見て森を見ず。
結局は、目的の解決に最適な言語を使えばいいだけなのに。
なんでもかんでもRubyでやろうっていうんだろうな。
368デフォルトの名無しさん:02/01/01 16:49
Rubyistと呼んでください。
↑ CrushHEADIST >>366
>>365
Athlon 1GHz で、
1.700(秒) IBM jdk1.3.0
1.710(秒) WatcomC 11.0J
2.140(秒) jview 5.00.3802
2.850(秒) jdk1.4beta3
3.070(秒) jdk1.3.1-02
7.393(秒) Borland C++ Builder 4

っつーとこですか。
コンパイラは古いのしか持ってないので
新しい奴持ってる人は自分で測定してください
371370:02/01/01 17:22
Borlandのが異常に遅いけど、
コンパイラのオプション間違ってるのかな…
それとも __int64 使っちゃいけないとか?
教えて>偉い人
JAVAってオーバーヘッド発生しないって聞いたの
ですが本当ですか?

なんかすごい嘘くさいのですが・・・
>>372
何のオーバーヘッドっすか?
素直にlong使えよ
>>374
longだと 32ビット値になるような気が…
それはコンパイラの最適化オプションを付けての結果かい?
それと変数はcharとかbyteでもやってみー
>>376
>>それはコンパイラの最適化オプションを付けての結果かい?
そのつもり。
>>それと変数はcharとかbyteでもやってみー
やりたいのでしたら、ご自分でどうぞ。
>>373
関数を呼んだときのオーバーヘッドです。
CとJavaを比べんなよ・・・・・・・
両方覚えろ
>>379
それは誰に言ってらっしゃるんで?
381デフォルトの名無しさん:02/01/02 00:31
>>378
ていうかJavaでは関数とはいわずにメソッドといいます(w
382デフォルトの名無しさん:02/01/02 00:53
>>353
Javaのメモリリークについて言いたいのかな?
もちろんコーディングをミスればリークするけどさ。
VMが必要か必要じゃないかを判断できれば、メモリリークはなくなるけど
冷静に考えればそんな事が無理なのは明らかでしょ。
俺が言ってるのは、明示的にdeleteを書かなきゃならないコストは
どれくらいのものかって事。
C++を使ってる時、オブジェクトを生成するようなメソッドはあまり書きたくない。
effectiveC++にも似たような事が載ってたと思うので読んでください。

enumはいまいち便利な使い方が思いつかないんだけど、
便利な使い方があったら教えてください。

>>350
あんたインタープリターの意味がわかってないよ。
PERLとかRUBYのI/OとJAVAのI/Oは同じ類だってわかってます?

RUBYはまだ使い込んでいないので、特徴があまり把握できてないんで
何ともいえないですね。
作者が書いてる本は持ってるんですけど、あれには大規模開発には向かないって
書いてありますが、なんででしょうか?
RUBYにはコンパイラは無くても、コンパイル時に行うような
文法やら型のチェックってありますよね?
わかる人いたら教えてください。
383デフォルトの名無しさん:02/01/02 01:00
>>16
リフレクションを使え.動的メソッド呼び出しやコールバック
関数なんかもJavaで作れる.
384デフォルトの名無しさん:02/01/02 01:04
>>30
そういう場合は大きさ1の配列作ってやれば良いYO!
385デフォルトの名無しさん:02/01/02 01:06
またデマ情報が・・・
JAVAのメソッド呼び出しは、全て動的ですが。
コールバック関数・・・何がしたいのかよくわからん。
で、リフレクションなんてのはおそらく
普通の人には使う機会はない。
386デフォルトの名無しさん:02/01/02 01:09
>>385
AbstractFactoryパターンやCommandパターン使うときには
必須だろ?リフレクションを使わないってのはJavaでただ
プログラム書いてるってダケのこと(w
387デフォルトの名無しさん:02/01/02 01:15
>AbstractFactoryパターンやCommandパターン使うときには
なんの事をリフレクションって言ってるのかね・・・
リフレクションAPIをあげとくと、
Class,Member,AccesssibleObject,Field,Method,Construtor
Array,Modifier,ReflectPermission
ちょっと怪しげ・・・
なんせ使わないからね。
これで、あんたがデザパタもJAVAも
全然理解してない事がよーーくわかりましたよ。
388!=385:02/01/02 01:18
>>387
クラス名でClassインスタンスとって、newInstanceして、
invokeMethodとかって、時々やるっしょ。
動いてるサーバーのビジネスロジックの追加・交換なんか
ができて便利。
389デフォルトの名無しさん:02/01/02 01:20
InputStreamが抽象クラスなのはそれでいいと思うけどね。
まあ、そこはセンスの問題かな。
とりあえず、インターフェースだったらなーって思ったケースってどんな
ケースか参考までに聞かせてもらえるとうれしいな。
390デフォルトの名無しさん:02/01/02 01:20
>>387
インターフェースを使って、実装と分離するのはよくある
話で、動的にサブクラスを生成して共通メソッドを呼び出す
てのは、ある程度の規模の開発になるとよくやるんだよ。

その際に、hogehoge.classなんてしてClassオブジェクトを
取得したり、Methodオブジェクトでサブクラスのメソッド呼び出し
を動的に制御したりする。こういうことをするために必要なのが
リフレクションです。まあ、漏れもめちゃくちゃ詳しいわけでは
ないけどね。
391 :02/01/02 01:25
未知の、コンパイル時に情報交換を行わないプログラムは
Javaでは実行できませんよ。

リフレクションとかその他もろもろのは全部既知のプログラムしか
扱えない。つまり静的。
392デフォルトの名無しさん:02/01/02 01:25
>>389
多重継承が必要な時。
Javaは多重継承ができないから、必要な機能が複数の抽象クラスに
分かれている場合なんかは不便だな。
まあ、普通にJavaでOOPをやってりゃその辺りで頭を悩ます必要はないんだけど。
393デフォルトの名無しさん:02/01/02 01:27
>>391
イマイチいいたいことがわかんないっス。
もうちっと説明キボン。

リフレクションを使うと、コンパイル時の型チェックはできないので
実行時の動的型チェックしか行なえない。
394デフォルトの名無しさん:02/01/02 01:28
>>390
あなたはOOPを根底から勘違いしてるようです。
>話で、動的にサブクラスを生成して共通メソッドを呼び出す
それを(実行時)ポリモーフィズム、レイトバインディング、
動的バインディング、ダイナミックメソッドディスパッチ等と呼びます。
それは、言語レベルで用意されてます。
抽象クラス、オーバーライド、インターフェースについて調べてみてください。

ちなみにリフレクションAPIは、かなり低レベルのAPIです。
もともと、JAVABeansを組み合わせたりするアプリケーションを
作るために作られたのだと思います。
(最初は用意されていなかったはず・・・)
ようするにクラスを解析するようなものです。

>>388
なるほど、そういう使い方もできるんですね。
止められないプログラムというのは身近じゃないので・・・
他にも使いかたってあるんですか?
395 :02/01/02 01:30
コンパイル時点では走らせるプログラムに関する情報をいっさい持たない
任意のプログラムを走らせる事が出来る=動的。としとく。
>>389
例えば RandomAccessFile みたいな read() と write() を
両方備えたクラスを FilterInputStream とかで処理してた
いとき。 わざわざ RandomAccessFileInputStream みたい
なの作るのって疲れる…
397デフォルトの名無しさん:02/01/02 01:32
>>394
思うに、アンタの方がよっぽど素人さんだと思う・・。
そんな単語だけ並べて・・中身を語ってみなさい。
リフレクションがJavaBeanのために作られたという根拠は??
398デフォルトの名無しさん:02/01/02 01:32
>>392
いや、まあそうなんですが・・・
具体的なケースです。
理論的に、継承が必要なケースはポリモーフィズムを使いたい場合で、
ポリモーフィズムを使わない場合、集約(アグリゲーション)という
別の手段で回避できます。
現実的には、コーディングが面倒だったりしますが・・・
(そこら辺の自動化がIDEに組み込まれていないが無いところで、OOPLが浸透してない
事を実感させられるのですが)
>>391
うそだよーん。
Class.forName()でClassのインスタンスがとれて、
ClassからFieldやMethodインスタンスのリストが取れるんだから、
クラスファイルのURLとどのメソッドに何渡すかさえ与えれば、

あるプログラムから知らないクラスの知らないメソッド動かせる
よーん。

あんた偉そうな割に無知なのね。
400391じゃないが:02/01/02 01:42
>>399
客観的に見て別に偉そうには見えないけど。
401 :02/01/02 01:46
URL?
402デフォルトの名無しさん:02/01/02 01:46
>>399
>ClassからFieldやMethodインスタンスのリストが取れるんだから、
Listだったっけ?配列じゃなかった??
403デフォルトの名無しさん:02/01/02 01:46
根拠って言われてもね・・・
という事でWEBで探してきました
ttp://www.google.co.jp/search?q=cache:tnoExcybBsU:www.wakhok.ac.jp/~maruyama/summer98/node14.html+reflect+beans&hl=ja
だいぶ昔の事でどこで読んだかは忘れてしまったのですがね。
これで納得してもらえなければ、別に構いません。
開発同期が何であれ、そんな感じの使い方しかできないという事が
わかってもらえればいいです。
Javaだとこんな画像つくれる?
http://www.illy2.f2s.com/jpg/miruna.jpg
JAVAで全てこなせるように書いている奴は見ててマヌケだ。
406 :02/01/02 01:50
Class forName(String className)ね・・・。

classNameはどこから持ってくるの?
407デフォルトの名無しさん:02/01/02 01:52
>>403
JavaBeansじゃなくて、java.beansパッケージのクラス群のことだったのね。
ハイハイ。

イントロスペクション云々は昔勉強したけど忘れてしまったよ。
でもこのリンクが言ってることがリフレクションのすべてだ、なんて
まさか思ってないですよね?

個人的には、java.beansパッケージのクラスを使ってる場面をみたことがないです。
あ、そーそー FileInputStream が
mark / reset サポートしてないのも…
409デフォルトの名無しさん:02/01/02 01:54
>>406
プロパティファイルからで良いんじゃない?
410デフォルトの名無しさん:02/01/02 01:56
>>話で、動的にサブクラスを生成して共通メソッドを呼び出す
>それを(実行時)ポリモーフィズム、レイトバインディング、
>動的バインディング、ダイナミックメソッドディスパッチ等と呼びます。
>それは、言語レベルで用意されてます。
>抽象クラス、オーバーライド、インターフェースについて調べてみてください
>>390を読むと、この説明はあってるようだけど、そもそも、「実行時にサブクラスを生成」するのはレイトバインディングとかダイナミックバインディングとは言わないだろ。
>>409
多分それだと、静的だっていうぞ、こいつは。

サーバでソケットの向こうから飛ばしてもらうとか。
管理ユーザがGUIから必要になるたびに登録するとか。
あるディレクトリを常に監視して、そこにファイルが置かれたら
そいつをイベントにしてロードするとか。

まさかそれもダメって言うなら、あんた言うの動的なプロ
グラムのシンボル名称解決ってどうやるんだよ???
412410:02/01/02 02:00
とか、かいてるうちに話は先にいっちゃったのね。
413デフォルトの名無しさん:02/01/02 02:00
>>410
さらに、「言語レベルで用意されている」という受け答えがすでに意味不明。
この人本当にJavaが何かさっぱりわかっていないよ。
414デフォルトの名無しさん:02/01/02 02:03
>>411
そうぢゃなくて、「こういう条件が揃った場合には、このクラスを
呼び出す」っていうことが必要な時によく使うけどね漏れは。
415デフォルトの名無しさん:02/01/02 02:04
>classNameはどこから持ってくるの?
プログラムを止めたくない場合の例では、
サーバー用のクライアントを立ててローカルから送ってあげるって
とこですかね。

>JavaBeansじゃなくて、java.beansパッケージのクラス群のことだったのね
いえ違いますよ。
JavaBeansを使った開発環境作成のためです。

>でもこのリンクが言ってることがリフレクションのすべてだ、なんて
>まさか思ってないですよね?
古すぎるせいか、開発動機が書かれてるホームページはありません。
私はAPIリファレンスから知識を得ていますので、それ以外のことはわかりません。

>共通メソッドを呼び出す
こっちがレイトバインディング云々ですよ。
416 :02/01/02 02:04
>>411
もちろん静的ですよ。

つうか、最初に明示した条件に反してるでしょう。アフォですか?
論破されたからって「こいつ」呼ばわりですか?
417410:02/01/02 02:06
いまの流れでいうと、動的っていうのは、ようするにevalのことだよね?
文字列を実行する、しかも呼ばれた側呼び出し元の環境を参照できる、ってことでいいんですよね?

>>413
おれもそうおもう。
418 :02/01/02 02:06
>>415
なんでサーバーの話をしているのやら。
なんかバイトコード臭い話ばかりだな。
420デフォルトの名無しさん:02/01/02 02:09
>>415
>古すぎるせいか、開発動機が書かれてるホームページはありません。
>私はAPIリファレンスから知識を得ていますので、それ以外のことはわかりません。
じゃあぜひシステム開発を経験して、リフレクションの便利さ・必要さを
身をもって体感してください。
私もリフレクションが好きでたまらないというわけでは全然ないんだけど、
使わざるを得ない場面に遭遇するから使っているだけです。
JavaでOOPやってるとかならず出てくるですよ、コイツは。
421デフォルトの名無しさん:02/01/02 02:09
>さらに、「言語レベルで用意されている」という受け答えがすでに意味不明。
ポリモーフィズムの説明はうんざりなんですが、
同じ事をC++でやる事を考えてみてください。
といってもC++知らないでしょうけど・・・。
ちなみにJavaではI/Oの機能はライブラリレベルで用意されていると
表現します。
PERLではI/Oの機能は言語レベルでサポートされています、
と表現します。
422デフォルトの名無しさん:02/01/02 02:11
>>421
>ポリモーフィズムの説明はうんざりなんですが、
>同じ事をC++でやる事を考えてみてください。
>といってもC++知らないでしょうけど・・・。
漏れはいちおうC++のプログラマーなんだが・・。
うんざりせずにC++での実例をもとに語ってみてください。
423デフォルトの名無しさん:02/01/02 02:13
>>419
どこがやねん。
424デフォルトの名無しさん:02/01/02 02:13
>使わざるを得ない場面に遭遇するから使っているだけです
どういう場合で使うのでしょうか?
是非教えてください。
私は一度も使ったことありませんので。

>なんでサーバーの話をしているのやら。
>>動いてるサーバーのビジネスロジックの追加・交換なんか
というわけです。
425デフォルトの名無しさん:02/01/02 02:15
JAVAか昔やらされたな。
あの言語でファイルフォーマット解析しろって言われた時は
吐きけがしたよ。
426デフォルトの名無しさん:02/01/02 02:16
>>425
構造体にがぽっとはめられないかね、がぽっと
427デフォルトの名無しさん:02/01/02 02:17
>>424
上で出したけど、いくつかのデザインパターンではリフレクションを
前提としている場合があります。そして、それを適用した方が
後々のメンテ性が良いことが多いんです。

例えば、実行時のあるオブジェクトの状態によって呼び出すメソッドを
変えたい場合にはリフレクションしかありません。
まあゴリゴリと長いコードを書くのであれば別ですが、OOPだけに
そんなことはしませんよね?
428デフォルトの名無しさん:02/01/02 02:17
言語レベルっていう言い方が、すでに意味不明(つーか、いろんな意味に取れすぎ)
ライブラリレベルもそう。
言語仕様で定義されているとか、標準ライブラリに含まれているとか、そういう言い方してほしい。
429デフォルトの名無しさん:02/01/02 02:18
>>422
C++でポリモーフィズムするには
親クラスのメソッドにvirtualをつけて
子クラスでオーバーライドするだけですが・・・
あとは親クラスの型を指すポインタ変数に子クラスを入れて
普通にメソッド呼び出しするだけで
動的バインドが行われます。
JAVAではvirtualをつけなくても全部virtualになってます。
わかっていただけたでしょうか?
あなたのリフレクションを使う動的バインドは
別物でしたか?
つまりJAVAではオブジェクトの代入は全て参照になってしまうと。
431デフォルトの名無しさん:02/01/02 02:23
>429
つーかC++とJavaの違いをまったく知らないねこの人。
432422じゃないけど:02/01/02 02:24
あるクラスのインスタンスと、そのクラスから導出されたクラスのインスタンスをバインドできるのは、動的バインドって言わないだろう。
ポリモルフィズムとは言うけど。
リフレクションを使うのは、言語が動的バインドをサポートしていないから、別の手段でそれと同じ事をする、っていう気がするんだが…
433デフォルトの名無しさん:02/01/02 02:24
>>427
C++で同じ事するときはどうするの?
でさ、デザパタの本ってリフレクションAPIが作られる前からあったけど
どうやってたんだろ??

ところでファイルフォーマットの解析って、
俺はバイナリーエディター使うんだけどさ、
コンパイラでどうやってやるの?
>>427
それはウソ。

リフレクションを使わざるを得ないのは、実行時まで「クラス」「メソッド」を解決できない時だけ。

単に条件分岐で起動するメソッド変えるだけとかなら、デザパタに解決方法がいくつかある。

Class.forName()でクラスロードしてJITコンパイルして実行、つうのは
オーバーヘッドでかすぎなので、なるべくしないほうがいいよ。実行時にいちいち遅くなる
よりは、初期化時だけ遅いほうがナンボかましでしょ?
435デフォルトの名無しさん:02/01/02 02:29
>あるクラスのインスタンスと、そのクラスから導出されたクラスのインスタンスをバインドできるのは
ゴメン、もうちょっとわかりやすく書いて
意味が良くわからないっす。
436デフォルトの名無しさん:02/01/02 02:30
>>434
別にウソではないだろう。引数を持つコンストラクタを持つクラスのインスタンスを
動的に生成したい場合はどーする。リフレクションでやるしかないだろ。

>Class.forName()でクラスロードしてJITコンパイルして実行、つうのは
>オーバーヘッドでかすぎなので、なるべくしないほうがいいよ。実行時にいちいち遅くなる
>よりは、初期化時だけ遅いほうがナンボかましでしょ?
ま、よーするにコードの見易さを取るか、速さを取るかだわな。
437デフォルトの名無しさん:02/01/02 02:32
>>436
引数つきのコンストラクタの起動方法って、結構みんな知らないのね。
Constracterクラスのドキュメント見て味噌。
>ところでファイルフォーマットの解析って、
>俺はバイナリーエディター使うんだけどさ、

話がかみ合わないわけだこりゃ。
439デフォルトの名無しさん:02/01/02 02:33
というか、ヒープ上のメモリにオブジェクトを生成すること
つまりはnewを使うことを動的にオブジェクトを生成すると
一般的には言うんだが、
どういう意味で使っているのか教えてくれないかな?
440デフォルトの名無しさん:02/01/02 02:34
>>434
それもやっぱりウソ。ある特定のインスタンスのフィールドをダイナミックに
初期化したい場合にはリフレクションを使う。
それから、単体テストをする場合になんかも使う。setAccessible(true)でフィールドの
中身を取り出す。
441デフォルトの名無しさん:02/01/02 02:35
>>436
すまん。何言ってるのかワカラン。
動的に生成するって、何をさしていってるの?
JVMが目的のクラスを解決できていれば、単にそのコンストラクタで
newするだけだよね?
442デフォルトの名無しさん:02/01/02 02:35
>>437
それもリフレクションの一種じゃない?
443デフォルトの名無しさん:02/01/02 02:35
438はフォーマット判別といいたかったんだと思われ。
と書き込んでみるテスト。
444デフォルトの名無しさん:02/01/02 02:37
>>440
そういう隠蔽を破壊するようなことをなんでする必要があるの?
単体テストならわかるけど。
445432:02/01/02 02:37
>>435
強い型付けの言語で、あるクラスの変数を宣言して、そのサブクラスのオブジェクトを代入する、っていうのは、
動的バインドとはいわないだろう、っていうことだ。
って、なんか、解かりやすくなった自身無いなぁ…
446デフォルトの名無しさん:02/01/02 02:38
>>441
うーむ、言い方が悪かった。
条件によって生成するサブクラスが違う場合(ただし同じインターフェースを
実装しているか、同じ抽象クラスを継承していることが前提)に、getConstructor()
とかやるじゃない。
447デフォルトの名無しさん:02/01/02 02:39
>>444
アサーションだよ。アサーション用のメソッドが無い場合は
そうやってクラス内の値を取り出すしかない。
448親切な人:02/01/02 02:40

ネットサーフィン中に、凄い人気掲示板、発見!!!

「はにちゃんねる」↓
http://www.isn.ne.jp/~honey/hc/

ネット内では、現在、この掲示板の話題で、持ちきりです。
449デフォルトの名無しさん:02/01/02 02:41
>>446
あーわかりました。そういう時は、なるべくFactoryMethodとかで
やったほうがいいよ。(かのヒロミチュ先生もご推薦(藁))
450デフォルトの名無しさん:02/01/02 02:43
>>445
Javaの場合、その変数(C++だと派生クラスポインタ)に対して
メソッド呼び出しをした時必ず動的バインドが行われる。
過去レスを読んでみると良い。
451デフォルトの名無しさん:02/01/02 02:44
>>449
そう、だからFactoryMethodとかAbstractFactoryとかその辺のことを言ってるんだよ。
452デフォルトの名無しさん:02/01/02 02:45
>やったほうがいいよ。(かのヒロミチュ先生もご推薦(藁))
誰?
453デフォルトの名無しさん:02/01/02 02:47
451の発言を見て
>そういう時は、なるべくFactoryMethodとかでやったほうがいいよ。
という意味がいまだにわかっていないじゃん(w
と書いてみるテスト
454デフォルトの名無しさん:02/01/02 02:47
>>451
本当に、そのあたりを記述するのにリフレクション使う必要が
あるのかな???C++/Java両刀の人間には不思議なんだけど。
使ってもできるけど、避けたほうがいいんじゃない?という話
ですが、どないでしょ?
455デフォルトの名無しさん:02/01/02 02:47
そういえば、高木先生スレッドなくなったね。
高木先生はすげーって。
456デフォルトの名無しさん:02/01/02 02:48
>>454
もうほっといてあげなって。
これだけ説明してもわかってないし、
ヒープとスタックの区別もついて無さそうだよ。
457デフォルトの名無しさん:02/01/02 02:49
そういうわけで、ポリモーフィズムもわかってない。
きっとOOもわかってない。
あー、哀れ・・・
458445>450:02/01/02 02:50
>>429のことですか?過去レスって。
459デフォルトの名無しさん:02/01/02 02:51
という具合になげくお前らももっとわかってなさそう・・
攻撃に弱い人は、たいてい冬厨ですな。
第三者装って揚げ足取るのが得意技。
461デフォルトの名無しさん:02/01/02 02:53
>>454
Classクラスのfactoryメソッド使うだろ?
まさにそれがリフレクションの機能使ってるやんけ。
なんかずいぶんいろんな意味の「動的バインド」が出てきてる気がする…
463デフォルトの名無しさん:02/01/02 02:55
>>454
>使ってもできるけど、避けたほうがいいんじゃない?という話
>ですが、どないでしょ?
というのは何故??
464デフォルトの名無しさん:02/01/02 02:57
FactoryMethod適用時に、switch文を使ってもクラスの動的生成を見かけ上はできる
けど、美しくないよね。
465この人大丈夫か?:02/01/02 02:57
>>461
なんででしょ?普通にnewで対象クラスのコンストラクタ起動するだけでいいじゃない。
仮にそれでないとFactoryMethodが実現できないなら、C++の時どうするの?
>>443
君らの書くプログラムはファイルreadすると
勝手にフォーマットがわかるですか?
ずいぶん便利ですね。
>>466
「解析」をそんなに責めなくても…
468デフォルトの名無しさん:02/01/02 03:00
>>465
getConstructorメソッドちゅうのを使うことはリフレクションの機能を使っているということです。
ちなみにこの場合は対象クラスをnew演算子でインスタンス化しません。
469デフォルトの名無しさん:02/01/02 03:01
>>465
あ、そうそう、Constructorクラスていうのがあるからね。
Java2のAPIガイドみてみ。
470この人大丈夫か?:02/01/02 03:02
あーそういうことか。
switch分岐よりClass.forName().newInstance();
とかで一行で済ますほうが「ソースが美しい」って話ね。

ここから先は宗教戦争ですので、結論はでませんな。

インスタンス生成メソッドでさえswitchを嫌うことで失う実行時
コストととの相談というあたりを落としどころにしませう。でない
と終わらんよ。
471デフォルトの名無しさん:02/01/02 03:03
>>465は、lava.lang.refrect をまず読んでからだろうな。
472デフォルトの名無しさん:02/01/02 03:03
>なんででしょ?普通にnewで対象クラスのコンストラクタ起動するだけでいいじゃない。
newする対象のクラスが動的に変わる場合はハードコーディングしないでしょ?
クラス名をひっぱってきて、Constructorオブジェクトを取得してからインスタンスを
取得する。まあ一度やってみてください。やらんとわからんと思う。
java.lang.refrectだ・・・
474この人大丈夫か?:02/01/02 03:04
しかし、コレクションあたりと同じ感覚でリフレクション使う人って、
以外と多いんだね。知らんかった。気をつけよう。
475デフォルトの名無しさん:02/01/02 03:05
>>470
アンタも大丈夫??
>>474
そうそう、そのへんから宗教戦争になるんだよ、たぶん…
477デフォルトの名無しさん:02/01/02 03:06
>>474
コレクションとリフレクションを同じ感覚で捕らえられる感覚が
おれにはさっぱりわからん。まったく別物じゃん。説明してくれ。
478デフォルトの名無しさん:02/01/02 03:07
異なるクラスが20個あったら20個の分岐を作るんか?
そりゃアンタ、アフォですよ。
479この人大丈夫か?:02/01/02 03:08
>>472
あーそうか。サブクラスを実行時まで解決できないパターンでの
ファクトリの話ね。了解です。

はうー、どんなシステムでそんなもんが必要になるのでせうか。
後学の為に教えてチョ。
>>478
3個ぐらいだったら分岐しちゃうような…
481デフォルトの名無しさん:02/01/02 03:10
実行時に20のうちから1つ選んでインスタンスを作るような場面が、コレクションを使う場面と同じ位あったら、やっぱ考え直すな、おれなら。
482デフォルトの名無しさん:02/01/02 03:10
>>479
結構いろんなところで遭遇するよ。
例えばA/B/Cというシステムにメッセージを送りたくて、出口が一つしかない場合とか。
メッセージのあて先決定メソッドなんかはabstructにしておくんだよ。
483デフォルトの名無しさん:02/01/02 03:12
>>480
3個程度しか増えないことがわかっているならそれでも良いんじゃない?
んで、将来も変わらないことがわかっているんならわざわざリフレクション
使うまでもないかもね。
というか、リフレクションって呼ぶとかなり誤解招くな・・・
そんなリフレクションAPIの末端使ってて、リフレクションとか言ってるんだもんな。
解析と判別も笑えたけど。
おめーのバグだろ・・・スレに登録済みですか?(笑)

>Class.forName().newInstance();とかで一行で
一行じゃかけないよ。
横に長くて(笑)
それは冗談にしろ、2つのメソッドは両方引数がくっついてくるわけで
そこら辺もとか考えると、
switchの方が、メンテするとき明らかに楽だと思うけど。

で、リフレクションおじさんは結局のところ
変なデザパタの本をそのまんま丸暗記してたって事なのかな?
さすがにスタックとヒープの違いはわかってると思うけど・・・
そう願いたいよ。
485デフォルトの名無しさん:02/01/02 03:19
484も、えらそうなこと言ってるけどおそらく実務は皆無だと思われる・・
まぁ、ここでわかってないやつが1000人いても、仕事の現場のわかってないやつ1人にくらべれば、俺の生活への影響は微々たるものだ。
ファクトリーメソッドは便利だから、よく使うよね。
20個分岐するswitchって言うけどさ
20個クラスつくったり、ファクトリーメソッド呼び出す側とか
いろいろ考えてみると別にどうってことないと思うけど。
488デフォルトの名無しさん:02/01/02 03:21
>>484
>というか、リフレクションって呼ぶとかなり誤解招くな・・・
>そんなリフレクションAPIの末端使ってて、リフレクションとか言ってるんだもんな。
えらそーなことをのたまうオメーが説明してみー。
489デフォルトの名無しさん:02/01/02 03:23
>switchの方が、メンテするとき明らかに楽だと思うけど。
バカかお前は?
クラスが増えるたびにいちいちソース直してコンパイルかけんのかよ??
そーゆーのはプロパティファイルに外だしするんだよヴォケが。
>>488
というかリフレクションクラス全部挙げたりしたんですが・・・
今日は70メッセージくらい書いたと思うけど。
今日も厨房が一人減って満足だ。
では、おやすみ。
491デフォルトの名無しさん:02/01/02 03:25
489はmakeツールを知らないらしい・・・
492デフォルトの名無しさん:02/01/02 03:26
>というかリフレクションクラス全部挙げたりしたんですが・・・
それは説明したことにはならんと思うぞ。
20個分岐のswitchが1箇所ですむなら、べつにいいと思うんだが、このテの話は、
20個の分岐が、あっちこっちに散らばるようなら、ポリモルフィズムつかえっていう時に出てくるなぁ。
でも、20個のcaseのswitchが1つあって、そこで作るオブジェクトを切りかえるような使い方なら、
おれはまよわずそれを使うな。
リフレクション(?)なんぞ使わずに。
494デフォルトの名無しさん:02/01/02 03:27
491はIDEを使ったことがないらしい・・
ついでにJavaで仕事をしたこともないらしい・・
495デフォルトの名無しさん:02/01/02 03:29
窓の中の蛙ハケーン
496493:02/01/02 03:29
あ、もちろん、実行時まで知り得ないクラスのインスタンス作るような場合は、リフレクションでしょうね。
497デフォルトの名無しさん:02/01/02 03:30
>>493
というかですね、あるシステムの汎用フレームワーク的な部分を構築する
場合は、スーパークラスやインターフェースのかたまりを作って
それをベースにいろんなシステムを開発していくわけです。

そのフレームワークからユーザーパッケージのクラスを、ソースに
ベタ書きで呼び出すわけにはいかんだろ、というワケです。
498デフォルトの名無しさん:02/01/02 03:30
ファクトリーメソッドにプロパティー使うバカもいるのか。
名スレだな。
499デフォルトの名無しさん:02/01/02 03:31
普通はどうやるの?? > 498
MS の JVIEW上でも File.setLastModified() だっけ?
出来るメソッド書くとき java.lang.reflect にお世話に
なりました。
501デフォルトの名無しさん:02/01/02 03:34
>>497
ストリングクラスのオブジェクト渡すのと、
派生クラスのオブジェクト渡すのと何が違うの?
それってファクトリーメソッドの話とは違うよね?
>>500
C#はうざいので消えてください。
503デフォルトの名無しさん:02/01/02 03:36
>>501
なんか話がズレてるぞ。
汎用なんだから、ある特定のユーザーパッケージもしくはクラスを
importしたりベタ書きしたら、ぜんぜん汎用じゃなくなるじゃんか。
Cの良いとこと悪いとこスレだったはずなのに (ほのぼの〜)
505503:02/01/02 03:37
汎用パッケージ内のクラス内に、ユーザーパッケージのクラスを
ハードコードすると、汎用パッケージとして意味をなさなくなってしまう
という意味です。
506503:02/01/02 03:38
それを解決するのに有用なのが上の方にあったリフレクションだ。
507デフォルトの名無しさん:02/01/02 03:39
>>503
だから、外部から派生クラスを受け取ればいいでしょ?
508デフォルトの名無しさん:02/01/02 03:40
リフレクション使うにしろ、文字列を受け取るわけでしょ?
ファクトリーメソッドの話はもう終わったのかな。
509デフォルトの名無しさん:02/01/02 03:40
>>507
スマソ。意味がわからん。
「外部から派生クラスを受け取る」ってどういう意味?
510ジーンズもケイタイも503が好き:02/01/02 03:40
>>503
汎用パッケージとユーザーパッケージが同時に存在してるなら、どういうことになるんだろうね。
511510:02/01/02 03:41
どういう→そういう
512デフォルトの名無しさん:02/01/02 03:41
>>508
ずっと続いてます。
>>509
つまり Class.forName() で得られるような
クラスオブジェクトを渡すって事では?
514デフォルトの名無しさん:02/01/02 03:42
外部って言うのは、フレームワーク上のアプリケーション
つまりは、ユーザーパッケージの事。
515513:02/01/02 03:43
やば、ヘンな造語使ってしまった
516デフォルトの名無しさん:02/01/02 03:43
>>510
汎用パッケージは、いろんなところに横展開が可能だ。
A社で使ったり、B社で使ったり・・。業界が同じなら流用しやすいだろ。
だけど中身の業務は違うから、そういう部分はユーザーパッケージのクラス
で実装するんだよ。汎用パッケージが提供するのは主にインターフェース
もしくは抽象クラスの部分。
517デフォルトの名無しさん:02/01/02 03:45
>>514
だから、ユーザーパッケージのクラス名は外だしにするってことだ。
switch文を使ったら、クラス名をハードコーディングせんといかんだろが。
518デフォルトの名無しさん:02/01/02 03:50
>>517
ちょっと待て、switchはファクトリーメソッドの話。

ユーザーパッケージの中でnewされたオブジェクト(抽象クラスを継承した物
またはインターフェースをインプリメントしたもの)を受け取る関数を
汎用パッケージに持たせるのが普通では?
つまり、何らかの入力に対して何らかの出力をしたければ、
(例えばの話として)汎用パッケージでは、
constructor(InputStream is,OutputStream os)
というのを用意して、
ユーザーパッケージでは、相応のInputStreamとOutputStreamの派生クラスを
newして
コンストラクタに渡してあげればよい。
519デフォルトの名無しさん:02/01/02 03:56
>>518
俺の構想とはアンタとちょっとずれているとは思うのだが・・

汎用パッケージからAというインターフェースを実装したクラスを
使いたい場合、ユーザーパッケージにはAを実装したクラスを作るよね。
だけど汎用パッケージ側はユーザークラスを知らないわけだ。
だけどインターフェース名で呼び出せば良いから、条件によって
クラス名だけフレームワーク側にあたえてやって、ユーザークラスの
インスタンスを取得すればよい。

こんな風に。

A a = Factory.getA(クラス名);

どうでしょうかね?
520519:02/01/02 03:58
取得したいユーザークラスが引数を持つコンストラクタをもっている
場合も、インスタンスの取得の仕方が違うだけで考え方は同じだよ。
521デフォルトの名無しさん:02/01/02 04:01
結局のところ、Javaのリフレクションって俗に言うプラグインを組み込むための仕掛け
と理解してるんだけど良いのかな。JavaBeanってプラグインだと決め付けてるけど。
522デフォルトの名無しさん:02/01/02 04:03
ttp://www.tetras.co.jp/yada/j_java_ref_r.htm

リフレクションの応用範囲は広い。いろんな場面で活用されるということだ。
523デフォルトの名無しさん:02/01/02 04:07
>>521
それはリフレクションの一部の機能ね。

>>519
言いたい事はわかるけど、それだと
ユーザーが作ったAの派生クラスを外部で利用するには、
キャストをしなきゃならない事は理解できるかな?
Aがインターフェースである場合はそんする部分も大きいよ。
524デフォルトの名無しさん:02/01/02 04:11
そのURLのページから、リフレクションは情報隠蔽を破壊しやすいので
使わないこと。
まあ、ファクトリーメソッドとしては問題ないけどね。
525デフォルトの名無しさん:02/01/02 04:13
>>523
そのユーザーが作ったAの派生クラスは、汎用パッケージがあることが
前提なんだから、他では使い道が無いよね?
万が一、外部で(外部とはどういう意味かよくわからんが)使いたい場合は
そのクラスをそのまま使えばいいんじゃないの?

例えばそのユーザークラスに独自のメソッドが実装されていた場合
(つまりスーパークラスにはないメソッドが定義されている)に
そのメソッドを使いたい場合は、Aというインターフェースで受けては
いけないよね。もしくはダウンキャストしなけりゃならない。

Java2における、Vectorクラスなんかそうだよな。Listで受けるときは
Listに定義されてるメソッドしか使えないけど、汎用的に使えるよね。
526デフォルトの名無しさん:02/01/02 04:15
>Aがインターフェースである場合はそんする部分も大きいよ。
どういう場合か簡潔に説明してください。
527デフォルトの名無しさん:02/01/02 04:30
>>523
後付けの部品を組み込む時以外の既知のクラス情報を参照するのに意味あるの?
クラス設計の不手際をコーディング時に辻褄あわせて再設計の工数とトレードオフ
するためには使えるけど、それって裏技の類だよね。

・・・設計に自信があっても障害検知時に利用するというのには大いに意味があるか。
528デフォルトの名無しさん:02/01/02 13:35
なんで誰も>>494のバカっぷりに突っ込んでやらないの?
528=491
C 使いってもういないのだろうか。
嘆かわしい世の中だ。
531デフォルトの名無しさん:02/01/02 16:07
>そのユーザーが作ったAの派生クラスは、汎用パッケージがあることが
逆です。
フレームワークをユーザーが使うの。

>もしくはダウンキャストしなけりゃならない。
既に書いたけど、
汎用フレームワークの外側でnewされてれば、ダウンキャストは起こらない。
リフレクション使うと、コンパイル時の型チェックもできないしさ。

>どういう場合か簡潔に説明してください。
ファクトリーメソッドで必ずオブジェクトを作るって事は、
複数のインターフェースをインプリメントできない。
つまりはインターフェースの意味が無い。
constructor(A a,B b)
というのがあったとき、
A,BをインプリメントしたクラスCがあると、
constructor(c,c)でOK。
これでいい?
とりあえず BeansScriptingFramework は便利だ。
533デフォルトの名無しさん:02/01/02 16:53
>>530
きょうび Cだけしかできないなんてヴァカがいたらみてみたいものだ(w
>>533
Javaをわけもわからず無理やり使って、勝手に惨めな思いしている
Cプログラマなら、掃いて捨てるほどいるなあ。
>>534

年末に使われてないJava使いを集めて捨てました。
すっきりきれいになりました。GCって便利ですね。
JAVAで全てできると思っている奴は見ていてマヌケだ。
537デフォルトの名無しさん:02/01/02 17:13
JAVAと表記するやつは間違いなくマヌケさん(稿
>>536
>>JAVAで全てできると思っている奴は見ていてマヌケだ。
そんな人いないと思いますけど…
ひょっとして、過去の536ご自身ですか?
>>537
>JAVAと表記するやつは間違いなくマヌケさん(稿

おまえは些細なことにこだわって自滅するタイプ
540デフォルトの名無しさん:02/01/02 17:27
Javaってなんでヲタを集めるんだろうか?
ヲタというほど知ってるやつ、少なさそうだけど…
542デフォルトの名無しさん:02/01/02 17:33
ヲタとは知識をひけらかして人を見下す人の事を言ったのが語源ですだ。
543あたまの容量が少ないひとっているんだね:02/01/02 17:36
>>539
きみってヴァカそう、僕のまわりには決していないタイプ(w
>>542
>>ヲタとは知識をひけらかして人を見下す人の事を言ったのが語源ですだ。
それって 542ご自身がヲタだという告白とみなしますが、
よろしいですか?
>>543
>>>539
> きみってヴァカそう、僕のまわりには決していないタイプ(w

おまえ、いつも一人ぼっち。周りにだれもいないタイプ(ヒ
Java使ってる奴は所詮ローカルな知識だけで、
不変的な仕様を理解できない。
>>546
はいはい、昔のキミがそーだったのね。
くだらん事で争うな
「不変的な仕様」ってなんのことだろう?
>>549
「普遍的な仕様」でない事だけは確かみたいです。
(それにしたって良く意味わからないけど)
ヲタとは知識だけをひけらかして人を見下す人が、あいてを「お宅」と呼ぶのが語源ですだ。
>>550
> 「普遍的な仕様」でない事だけは確かみたいです。
> (それにしたって良く意味わからないけど)

「不偏的な仕様」かな?
惨に依存しないってことで。
C厨半泣き状態
>>551
>ヲタとは知識だけをひけらかして人を見下す人が、あいてを「お宅」と呼ぶのが語源ですだ。

そんな知識ひけらかしてどうするんだい?
>>553
>C厨半泣き状態

Java厨号泣。アイゴー。アイゴー。
>>555
愛子様ご生誕を 未だに祝ってらっしゃるのですね?
>>554
お宅、>>551程度で、「ひけらかされた」と感じるとでも?
よせよ、Kusakabeが来るぞ。
559デフォルトの名無しさん:02/01/02 18:22
Javaは煽動と洗脳によって支えられています。
人を見下したいという願望を持つ若いアフォを、
「Javaが現れるまで従来は・・・でした。」式の、
[決まった答えが出てくる嘘の知識]で誘導します。
その手のJavaの解説本を読んだアフォは
「旧世代を打倒してプログラミングの世界を革新しなければならない」
といったような「使命感」を植え付けられます。
騙されやすい若者を騙して使う汚いやり口だと思います。
ヒトラー・ユーゲントしかり、紅衛兵しかり、
これは全てJavaの仕掛け人サイドの計算通り。
いいかげん、目を覚ましましょう。
俺はあの書き方みて笑ってしまったよ。
なんてアンチJavaは、Java使いがJavaしかやってないと思ってんだろうね。
Java使いも昔はC使いだったんだが(Servlet&JSPが初めてのプログラミング
と言う真性厨房サラリーマンプログラマをのぞいて)。

仕事によってはCを選択することもあるというのは、言われなくてもわかって
るって。
ってか、この類のスレに書き込んでる奴は漏れなくヴァカ
560も含めてね。でも俺は例外(笑
>>561

前半と後半の文章矛盾してない?
564 :02/01/02 18:53
>>561
インターフェースのような後決めライブラリ構造がJava以前は無かったような
事を言うから。
再利用も同じ。
try{
 >>562
}
catch(例外 俺){
 俺.氏ね;
}
finaly{
 すっきり;
}
>>565
それだと全員すっきりしてしまうが?
>>518
>>constructor(InputStream is,OutputStream os)
っつーか これ isのデータを osに出力するだけだったら
クラスメソッド(っつーか関数)でやるべきなんでは?
JAVAってビット演算も当たり前のようにできますよね?
初心者でスマソ
>>568
はい。
ビット演算はハードウェアを直接使う際には必要だが、
アプリケーションを作るレベルでは使うべきでないと思うがどうか?
>>570
通信や画像処理では必須かと思われ。
ライブラリに隠蔽すればいいけども。