前スレ
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
探検
【肥大化】C++ を見捨てたヤシ 2人目【複雑化】
■ このスレッドは過去ログ倉庫に格納されています
2008/05/17(土) 21:07:51
376デフォルトの名無しさん
2008/06/15(日) 10:38:46 ハイハイワロスワロス
〃∩ ∧_∧
⊂⌒( ・ω・)
\_っ⌒/⌒c
⌒ ⌒
〃∩ ∧_∧
⊂⌒( ・ω・)
\_っ⌒/⌒c
⌒ ⌒
377デフォルトの名無しさん
2008/06/15(日) 11:04:52378デフォルトの名無しさん
2008/06/15(日) 11:41:05379デフォルトの名無しさん
2008/06/15(日) 12:04:58380デフォルトの名無しさん
2008/06/15(日) 13:22:01 まぁポインターなんて使わなくて済むなら
そっちの方が良いにきまってる
そっちの方が良いにきまってる
381デフォルトの名無しさん
2008/06/18(水) 09:08:10382デフォルトの名無しさん
2008/06/18(水) 21:11:08 映画化決定
383デフォルトの名無しさん
2008/06/24(火) 17:48:09 C++って関数をオーバーライドするのにスーパークラスの許可が必要なんだな…
デフォルトでオーバーライド可能にすれば良かったのに、バランスの悪い言語だな
性能を気にし過ぎて不便極まりないわ
デフォルトでオーバーライド可能にすれば良かったのに、バランスの悪い言語だな
性能を気にし過ぎて不便極まりないわ
384デフォルトの名無しさん
2008/06/24(火) 18:28:05 C#にも言ってあげて下さい
385デフォルトの名無しさん
2008/06/24(火) 18:41:06 >>383
性能に拘ってなかったら、いっそうバランス悪いだけの言語になってた気もするけど
性能に拘ってなかったら、いっそうバランス悪いだけの言語になってた気もするけど
386デフォルトの名無しさん
2008/06/24(火) 18:42:58 確かに性能が悪かったら取り柄が無かったね
387デフォルトの名無しさん
2008/06/24(火) 18:55:27 それじゃ足りない!
もっと強力な燃料を!
もっと強力な燃料を!
388デフォルトの名無しさん
2008/06/24(火) 19:30:55 純粋仮想関数の定義方法が = 0 って、ちょっとふざけてただけだよね?
規格書にそのまま載っちゃうなんて予想外のミラクルだったんだよね?
規格書にそのまま載っちゃうなんて予想外のミラクルだったんだよね?
389デフォルトの名無しさん
2008/06/24(火) 20:16:55 >>383
C++プログラマからしたらデフォルトが仮想関数だったら不便極まりないよ
C++プログラマからしたらデフォルトが仮想関数だったら不便極まりないよ
390デフォルトの名無しさん
2008/06/24(火) 20:19:33 > デフォルトでオーバーライド可能
いかにも馬鹿が言いそうなキモ仕様w
いかにも馬鹿が言いそうなキモ仕様w
391デフォルトの名無しさん
2008/06/24(火) 20:21:27 自己紹介は不要
392デフォルトの名無しさん
2008/06/24(火) 21:09:39 脊髄反射はいいけど、整合性くらいとれw
393デフォルトの名無しさん
2008/06/24(火) 21:14:35 手間掛けるだけ無駄
394デフォルトの名無しさん
2008/06/24(火) 21:25:45 まぁ単に間違ってるだけだけどね
395デフォルトの名無しさん
2008/06/24(火) 21:31:17 十分だろ
396デフォルトの名無しさん
2008/06/24(火) 21:32:58 >>393
負け惜しみワロタ
負け惜しみワロタ
397デフォルトの名無しさん
2008/06/24(火) 21:35:57 下らん
398デフォルトの名無しさん
2008/06/24(火) 22:16:57 virtualじゃなくても良いならオーバーライドできるだろ。
399デフォルトの名無しさん
2008/06/24(火) 22:35:11 >>398
それは単なるHidingというんじゃない?
それは単なるHidingというんじゃない?
400デフォルトの名無しさん
2008/06/29(日) 17:35:34 >100
デフォルトだから
デフォルトだから
401デフォルトの名無しさん
2008/07/02(水) 18:15:30 Javaにポインタがないって誤解だろ。昔のことであまりよく覚えていないんだが、
どっかの怖い人がいるメーリングリストで罵倒されるような、そんな予感がする。
どっかの怖い人がいるメーリングリストで罵倒されるような、そんな予感がする。
402デフォルトの名無しさん
2008/07/02(水) 23:38:59 何故「誤解だろ」と断定口調なのですか?
403デフォルトの名無しさん
2008/07/03(木) 00:16:02 >>401
うーん。普通にJavaにはポインタは無いと思うけどな。
別に
((void (*)())0x12345678)();
とか書けないとか、んなことは言わねえけど。
Cなら例えばswap()はこう書く。
void swap(int *a, int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; }
Javaでswap()をどう書くの?
うーん。普通にJavaにはポインタは無いと思うけどな。
別に
((void (*)())0x12345678)();
とか書けないとか、んなことは言わねえけど。
Cなら例えばswap()はこう書く。
void swap(int *a, int *b) { int tmp; tmp = *a; *a = *b; *b = tmp; }
Javaでswap()をどう書くの?
404デフォルトの名無しさん
2008/07/03(木) 03:22:11 intの交換にtmpてどんな初心者だよ
405デフォルトの名無しさん
2008/07/03(木) 04:11:45 aとbが同じアドレスかどうかをチェックするぐらいなら汎用的な方法でいいと思う。
406デフォルトの名無しさん
2008/07/03(木) 06:06:10407デフォルトの名無しさん
2008/07/03(木) 06:56:38 このネタ定期的に見るな
定番過ぎて逆に知られてないのかね
定番過ぎて逆に知られてないのかね
408デフォルトの名無しさん
2008/07/03(木) 07:08:03409デフォルトの名無しさん
2008/07/03(木) 10:50:20 参照渡しがあれば、ポインタはなくともswap()は書ける
Javaにはポインタも参照渡しもないので、swap()すら書けない
Javaにポインタがあるなんて話はどっから出てきたんだ?
Javaにはポインタも参照渡しもないので、swap()すら書けない
Javaにポインタがあるなんて話はどっから出てきたんだ?
410デフォルトの名無しさん
2008/07/03(木) 12:50:42 javaにはアドレス演算子・間接演算子を含むポインタ演算関連はありません。
しかし、
//C++ ※説明のためdeleteは省略
struct A{ int n; A():n(){} };
struct B{ A* a; B(){ a=new A();} };
void f(){
B* b = new B();
f2(b);
}
void f2(B* b){ b->a->n = 10; }
//Java ※説明のためf()を含むクラスは省略
class A{ public int n; }
class B{ public A a; public B(){ a=new A();} }
void f(){
B b = new B();
f2(b);
}
void f2(B b){ b.a.n = 10; }
の上記2つは、ほぼ等価です。
Javaのオブジェクト変数が、
実質的に演算不可のポインタであることが分かると思います。
しかし、
//C++ ※説明のためdeleteは省略
struct A{ int n; A():n(){} };
struct B{ A* a; B(){ a=new A();} };
void f(){
B* b = new B();
f2(b);
}
void f2(B* b){ b->a->n = 10; }
//Java ※説明のためf()を含むクラスは省略
class A{ public int n; }
class B{ public A a; public B(){ a=new A();} }
void f(){
B b = new B();
f2(b);
}
void f2(B b){ b.a.n = 10; }
の上記2つは、ほぼ等価です。
Javaのオブジェクト変数が、
実質的に演算不可のポインタであることが分かると思います。
411デフォルトの名無しさん
2008/07/03(木) 15:06:44 >>410
> Javaのオブジェクト変数が、
> 実質的に演算不可のポインタであることが分かると思います。
そういうあやふやでいい加減な理解はドブに捨てたほうが良い。
A a = new A();
A b = a;
とするとき、
bはaを指しているのではない。bとaが同じオブジェクトを指しているだけだ。
Javaにはポインタは存在しないから、別の変数を参照する方法は存在しない。
Perlのリファレンスもポインタとは違うものだが、別の変数を指すことは出来る。
> Javaのオブジェクト変数が、
> 実質的に演算不可のポインタであることが分かると思います。
そういうあやふやでいい加減な理解はドブに捨てたほうが良い。
A a = new A();
A b = a;
とするとき、
bはaを指しているのではない。bとaが同じオブジェクトを指しているだけだ。
Javaにはポインタは存在しないから、別の変数を参照する方法は存在しない。
Perlのリファレンスもポインタとは違うものだが、別の変数を指すことは出来る。
412411
2008/07/03(木) 15:19:21 まあ、Javaのobject変数がobjectのinstanceへのポインタのようなものであり
そのように実装されている、というのは正しい。
ただしそれは言語の実装詳細であって、Javaという言語が、ポインタという道具を
仕様としてユーザに提供しているわけではない。
それどころかリファレンスすら提供していないし、参照渡しも無い。
だから、Javaのユーザはswap()すらも書けない。そういう言語だ。
Javaが裏方で実装にポインタを使っているからといって、だからどうしたんだ?
実装にポインタを使っていない言語なんて、それこそ存在しないだろ。
そのように実装されている、というのは正しい。
ただしそれは言語の実装詳細であって、Javaという言語が、ポインタという道具を
仕様としてユーザに提供しているわけではない。
それどころかリファレンスすら提供していないし、参照渡しも無い。
だから、Javaのユーザはswap()すらも書けない。そういう言語だ。
Javaが裏方で実装にポインタを使っているからといって、だからどうしたんだ?
実装にポインタを使っていない言語なんて、それこそ存在しないだろ。
413デフォルトの名無しさん
2008/07/03(木) 15:50:37 ぬるぽは別の言い方無かったのかな
414デフォルトの名無しさん
2008/07/03(木) 15:59:09 >>411
>>401は>>374-381の話を続けただけなんじゃない?
そうだとすると初めから裏方というか
概念の話をしてるんだと思うよ
あと、ポインタとポインタ演算をごっちゃにしてる気がする
ポインタは論理的な位置(を指す情報)の変数でしかないよ
http://ja.wikibooks.org/wiki/Java/クイックツアー
http://ja.wikipedia.org/wiki/ポインタ_(プログラミング)
>>401は>>374-381の話を続けただけなんじゃない?
そうだとすると初めから裏方というか
概念の話をしてるんだと思うよ
あと、ポインタとポインタ演算をごっちゃにしてる気がする
ポインタは論理的な位置(を指す情報)の変数でしかないよ
http://ja.wikibooks.org/wiki/Java/クイックツアー
http://ja.wikipedia.org/wiki/ポインタ_(プログラミング)
415デフォルトの名無しさん
2008/07/03(木) 16:15:54 >>414
えーと、どっからごっちゃにしてるという話が出てくるんだ?
別に論理的に任意な位置情報(無効なものを含む)を自由に指せないからとか
演算が出来ないからJavaにはポインタが無いと言ってるんじゃないよ。
単純に「他の変数を指す」方法を提供していないからポインタが無いと言ってるの。
それは実際にはポインタよりはstrictなリファレンスで出来ることだが、
要するにJavaはリファレンスすら提供していないのよ。
えーと、どっからごっちゃにしてるという話が出てくるんだ?
別に論理的に任意な位置情報(無効なものを含む)を自由に指せないからとか
演算が出来ないからJavaにはポインタが無いと言ってるんじゃないよ。
単純に「他の変数を指す」方法を提供していないからポインタが無いと言ってるの。
それは実際にはポインタよりはstrictなリファレンスで出来ることだが、
要するにJavaはリファレンスすら提供していないのよ。
416デフォルトの名無しさん
2008/07/03(木) 16:17:05 >>411
そういうあやふやでいい加減な理解は
ドブに捨てたほうが良いと思います。
A b = a;
とするとき、
aに入っているのがポインタとしての値だからこそ、
bとaが同じオブジェクトを指すようになるわけです。
そういうあやふやでいい加減な理解は
ドブに捨てたほうが良いと思います。
A b = a;
とするとき、
aに入っているのがポインタとしての値だからこそ、
bとaが同じオブジェクトを指すようになるわけです。
417デフォルトの名無しさん
2008/07/03(木) 16:19:11418デフォルトの名無しさん
2008/07/03(木) 16:25:17 繰り返すが、
言語内部の実装でポインタが使われていることと
言語仕様がポインタを提供していることは全く別の問題だ
Javaは言語仕様としてはポインタを提供していないし、
前者をもって、その言語がポインタを提供しているとは間違っても言えないし
言わない
そういうことで言うのなら、LISPにもBASICにもポインタはあるのだろうよ
言語内部の実装でポインタが使われていることと
言語仕様がポインタを提供していることは全く別の問題だ
Javaは言語仕様としてはポインタを提供していないし、
前者をもって、その言語がポインタを提供しているとは間違っても言えないし
言わない
そういうことで言うのなら、LISPにもBASICにもポインタはあるのだろうよ
419デフォルトの名無しさん
2008/07/03(木) 16:26:55 ポインタ=アドレス演算子ですか。そうですか。
アホですね。
アホですね。
420デフォルトの名無しさん
2008/07/03(木) 16:29:26 >>419
別にアドレス演算子である必要は無いだろ
抽象的には、リファレンスは束縛されている別の名前に対するエイリアスであれば
良い。つまり、メモリアドレスとは何の関係も無い話だ
そしてJavaはそのようなものを一切提供していない
別にアドレス演算子である必要は無いだろ
抽象的には、リファレンスは束縛されている別の名前に対するエイリアスであれば
良い。つまり、メモリアドレスとは何の関係も無い話だ
そしてJavaはそのようなものを一切提供していない
421デフォルトの名無しさん
2008/07/03(木) 16:29:47 >要するにJavaはリファレンスすら提供していないのよ。
http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9317
>4.3 Reference Types and Values
http://java.sun.com/docs/books/jls/second_edition/html/typesValues.doc.html#9317
>4.3 Reference Types and Values
422デフォルトの名無しさん
2008/07/03(木) 16:36:14423デフォルトの名無しさん
2008/07/03(木) 16:41:06424デフォルトの名無しさん
2008/07/03(木) 16:47:11 見たいものしか見えないのな
425デフォルトの名無しさん
2008/07/03(木) 16:59:08 つまり、Javaのobject変数は、有効な object instanceを指すか、
「何も指さない」かの二択の、非常に限定されたreferenceなんだよ
「ポインタ」ではない
「何も指さない」かの二択の、非常に限定されたreferenceなんだよ
「ポインタ」ではない
426デフォルトの名無しさん
2008/07/03(木) 17:17:53 ポインタとポインタ演算の違いが分からない奴には、
何言っても無駄のようだな。
何言っても無駄のようだな。
427デフォルトの名無しさん
2008/07/03(木) 17:20:11 演算ができないだけでなく、
・別の名前(変数)を指せない(その程度のindirectionの手段するら提供していない)
・無効なものを指せない
こんなものを「ポインタ」と呼ぶことこそ強弁だろ
・別の名前(変数)を指せない(その程度のindirectionの手段するら提供していない)
・無効なものを指せない
こんなものを「ポインタ」と呼ぶことこそ強弁だろ
428デフォルトの名無しさん
2008/07/03(木) 17:27:19 >演算ができないだけでなく
演算が出来ないからだよ。
アドレス演算子も文字通り演算だ。
>無効なもの
null
演算が出来ないからだよ。
アドレス演算子も文字通り演算だ。
>無効なもの
null
429デフォルトの名無しさん
2008/07/03(木) 17:29:31 >>428
nullは「無効なものを指している」のではなく、「何も指していない」ことを
示しているんだよ
それと、C++やPerlのリファレンスぐらい知って語ってるのか?
アドレス演算子が無くとも別の名前に対するエイリアスは作れるだろうが。
Javaでは作れないけどな。
というか、エイリアシングの問題を避けるために、そのようなことは
出来ないようにしてある。
nullは「無効なものを指している」のではなく、「何も指していない」ことを
示しているんだよ
それと、C++やPerlのリファレンスぐらい知って語ってるのか?
アドレス演算子が無くとも別の名前に対するエイリアスは作れるだろうが。
Javaでは作れないけどな。
というか、エイリアシングの問題を避けるために、そのようなことは
出来ないようにしてある。
430デフォルトの名無しさん
2008/07/04(金) 02:08:53 なんか「Javaを見捨てた香具師」スレかと思たw
その争点がポインタってのも面白いな
いや煽り地味てしまったが、俺のような三下には興味深い話題です
その争点がポインタってのも面白いな
いや煽り地味てしまったが、俺のような三下には興味深い話題です
431デフォルトの名無しさん
2008/07/04(金) 06:29:36 もう分かってるのだろうけど、争点がずれてるし。
・JAVAも(内部で)変数をポインタで指している
・JAVAは(言語仕様でCのような)ポインタをサポートしてない
暗黙の前提条件は忘れて、双方折れるべき。
・JAVAも(内部で)変数をポインタで指している
・JAVAは(言語仕様でCのような)ポインタをサポートしてない
暗黙の前提条件は忘れて、双方折れるべき。
432デフォルトの名無しさん
2008/07/04(金) 07:11:57433デフォルトの名無しさん
2008/07/04(金) 10:19:34 JAVAの文法は分からないが
A a = new A();
A b = a;
この場合、bに入ってるのは、aのインスタンスのコピーであって、aのインスタンスそのものでは無いはずだが
仮に、この表現で、aの別名をbと出来るのであれば、JAVAはC++以上の変態言語だと思うのだが...
A a = new A();
A b = a;
この場合、bに入ってるのは、aのインスタンスのコピーであって、aのインスタンスそのものでは無いはずだが
仮に、この表現で、aの別名をbと出来るのであれば、JAVAはC++以上の変態言語だと思うのだが...
434デフォルトの名無しさん
2008/07/04(金) 10:45:01 >>433
> この場合、bに入ってるのは、aのインスタンスのコピーであって、
> aのインスタンスそのものでは無いはずだが
コピーじゃないよ。
Javaの組み込み以外の型Aの
A a = new A();
A b = a;
は、C++の
A* a = new A();
A* b = a;
と全く同じ意味。組み込みの場合は、
A a;
A b = a;
と同じになる。(ただしaが初期化されてないからエラー)
> この場合、bに入ってるのは、aのインスタンスのコピーであって、
> aのインスタンスそのものでは無いはずだが
コピーじゃないよ。
Javaの組み込み以外の型Aの
A a = new A();
A b = a;
は、C++の
A* a = new A();
A* b = a;
と全く同じ意味。組み込みの場合は、
A a;
A b = a;
と同じになる。(ただしaが初期化されてないからエラー)
435デフォルトの名無しさん
2008/07/04(金) 10:51:08 それは、困ったちゃんだなぁ
b.x = 10;
としたら
a.xも10ってなられると、使い道が無いじゃん
JAVA使えねぇ
b.x = 10;
としたら
a.xも10ってなられると、使い道が無いじゃん
JAVA使えねぇ
436デフォルトの名無しさん
2008/07/04(金) 10:59:42 >>431
記号表では変数をポインタで指しているだろうが、
ボックスモデルのことを言っているのなら、変数がオブジェクトのインスタンスを
指していると言うべきじゃないのか
それと、あんたの主張は俺の主張と全く同じものに思えるのだが、
どう「折れ」ればいいんだ
>>432
うん、ちょっといい加減過ぎた
Cのような言語はシンボルテーブルの名前を弄れるわけではないし
シンボリックリファレンスとハードリファレンスを混同しているような
言い方になったな
> 変数のアドレスがファーストクラスのオブジェクトであることを言いたいのでしょう
ポインタといえば普通はそのようなものを指すと思うんだが、違うのか
「アドレス」でなくとも、何らかの形で変数のlvalueが扱えれば良いんだが
Javaはそのような手段を提供していない
単に参照型がボックスモデルで実装されているというだけで、
そんなことを言ったらLispのconsセルだってそうだろう
記号表では変数をポインタで指しているだろうが、
ボックスモデルのことを言っているのなら、変数がオブジェクトのインスタンスを
指していると言うべきじゃないのか
それと、あんたの主張は俺の主張と全く同じものに思えるのだが、
どう「折れ」ればいいんだ
>>432
うん、ちょっといい加減過ぎた
Cのような言語はシンボルテーブルの名前を弄れるわけではないし
シンボリックリファレンスとハードリファレンスを混同しているような
言い方になったな
> 変数のアドレスがファーストクラスのオブジェクトであることを言いたいのでしょう
ポインタといえば普通はそのようなものを指すと思うんだが、違うのか
「アドレス」でなくとも、何らかの形で変数のlvalueが扱えれば良いんだが
Javaはそのような手段を提供していない
単に参照型がボックスモデルで実装されているというだけで、
そんなことを言ったらLispのconsセルだってそうだろう
437デフォルトの名無しさん
2008/07/04(金) 11:31:53 >>436
> ポインタといえば普通はそのようなものを指すと思うんだが、違うのか
つPascalのポインタ
基本的にヒープオブジェクトしか指せない。
Cで言うようなautoやstaticのストレージクラスのオブジェクトとは無縁。
しかしPascalではそれを「ポインタ」とよんでいる。
Javaはさらに、組み込み型以外のオブジェクトは、
ヒープのみに置けるとすることで、
ポインタ無効問題を避けている。
// auto変数のアドレスを生存期間が過ぎても指したまま→invalid reference
> ポインタといえば普通はそのようなものを指すと思うんだが、違うのか
つPascalのポインタ
基本的にヒープオブジェクトしか指せない。
Cで言うようなautoやstaticのストレージクラスのオブジェクトとは無縁。
しかしPascalではそれを「ポインタ」とよんでいる。
Javaはさらに、組み込み型以外のオブジェクトは、
ヒープのみに置けるとすることで、
ポインタ無効問題を避けている。
// auto変数のアドレスを生存期間が過ぎても指したまま→invalid reference
438デフォルトの名無しさん
2008/07/04(金) 11:42:56 >>437
PascalのポインタとJavaの参照型は違うんじゃねえのか?
つうか元々のPascalにはポインタは無かったような気はするが
Javaは単にオブジェクトをラップするためのbox-modelであって、
変数はinstanceへの参照、instanceが参照先という参照関係を
常に強制しているだろ
変数は変数を参照できないし、instanceを直接扱うこともできない
Javaは汎用的な参照の仕組みを提供しているのではなく、参照型を
常にハンドルを通じてユーザに扱うようにしてあるというだけだ
PascalのポインタとJavaの参照型は違うんじゃねえのか?
つうか元々のPascalにはポインタは無かったような気はするが
Javaは単にオブジェクトをラップするためのbox-modelであって、
変数はinstanceへの参照、instanceが参照先という参照関係を
常に強制しているだろ
変数は変数を参照できないし、instanceを直接扱うこともできない
Javaは汎用的な参照の仕組みを提供しているのではなく、参照型を
常にハンドルを通じてユーザに扱うようにしてあるというだけだ
439デフォルトの名無しさん
2008/07/04(金) 12:05:47 >>438
> PascalのポインタとJavaの参照型は違うんじゃねえのか?
そっくりですよ。
最初からあるし。> Pascalのポインタ
(* @で変数のアドレスを取れるのはベンダー拡張です *)
> PascalのポインタとJavaの参照型は違うんじゃねえのか?
そっくりですよ。
最初からあるし。> Pascalのポインタ
(* @で変数のアドレスを取れるのはベンダー拡張です *)
440デフォルトの名無しさん
2008/07/04(金) 13:38:05441デフォルトの名無しさん
2008/07/04(金) 15:12:06 >>440
任意の型Tに対して、型Tのlvalueを保持する型T*が存在する
型Tはスタック、静的領域、ヒープに配置できる
ただし、型T*がポイントできるのは、ヒープ上にある型Tオブジェクトのみ、
ということか?
Cよりは制約がずっと大きいが、
その仕様はJavaとは全然違うだろ
Javaには型Tに対する参照型T*、のような概念は存在しない
任意の型Tに対して、型Tのlvalueを保持する型T*が存在する
型Tはスタック、静的領域、ヒープに配置できる
ただし、型T*がポイントできるのは、ヒープ上にある型Tオブジェクトのみ、
ということか?
Cよりは制約がずっと大きいが、
その仕様はJavaとは全然違うだろ
Javaには型Tに対する参照型T*、のような概念は存在しない
442デフォルトの名無しさん
2008/07/04(金) 16:11:19 逃げた感たっぷりのレスですねw
で、結局、
無いってことになるの?
ならないの?
で、結局、
無いってことになるの?
ならないの?
443デフォルトの名無しさん
2008/07/04(金) 17:13:40 >>440
Wirth, ISOの標準Pascalはその通りの仕様ですね。
もちろん整数からのキャスト、整数風の数値演算もダメです。
Javaの場合は、さらに、
・参照型はヒープのみに配置できる。
となってます。
だからスタック上のオブジェクトは共有できない問題や
参照外れの問題がなくなってます。
Wirth, ISOの標準Pascalはその通りの仕様ですね。
もちろん整数からのキャスト、整数風の数値演算もダメです。
Javaの場合は、さらに、
・参照型はヒープのみに配置できる。
となってます。
だからスタック上のオブジェクトは共有できない問題や
参照外れの問題がなくなってます。
444デフォルトの名無しさん
2008/07/04(金) 17:21:40 >>441
>Javaには型Tに対する参照型T*、のような概念は存在しない
int a;
int[] pa = new int[1];
int[][] ppa = new int[][]{pa};
ppa[0][0] = 10; // (pa[0] == 10)
StringBuilder b = new StringBuilder();
StringBuilder[] pb = new String[]{b};
StringBuilder[][] ppb = new String[][]{pb};
b.append("1")
pb[0].append("2")
ppb[0][0].append("3")
System.out.println(b); // "123"
>Javaには型Tに対する参照型T*、のような概念は存在しない
int a;
int[] pa = new int[1];
int[][] ppa = new int[][]{pa};
ppa[0][0] = 10; // (pa[0] == 10)
StringBuilder b = new StringBuilder();
StringBuilder[] pb = new String[]{b};
StringBuilder[][] ppb = new String[][]{pb};
b.append("1")
pb[0].append("2")
ppb[0][0].append("3")
System.out.println(b); // "123"
445デフォルトの名無しさん
2008/07/04(金) 17:23:32 × new String
○ new StringBuilder
○ new StringBuilder
446デフォルトの名無しさん
2008/07/04(金) 18:30:24 >>444
ヒープの中身限定どころか、その配列の中身しかマネージできない
「ポインタ」かよw
ポインタが無い言語で、ポインタの代用として使われてた昔ながらのテクニックだな
Javaですら、そのようなことをやる必要は滅多に無いだろ
次は配列を使ってメモリマネージャを構築するのか?
Cでオブジェクト指向のプログラミングは可能だが、
Cをオブジェクト指向言語であるとは言わないだろが
その種の詭弁だな
ヒープの中身限定どころか、その配列の中身しかマネージできない
「ポインタ」かよw
ポインタが無い言語で、ポインタの代用として使われてた昔ながらのテクニックだな
Javaですら、そのようなことをやる必要は滅多に無いだろ
次は配列を使ってメモリマネージャを構築するのか?
Cでオブジェクト指向のプログラミングは可能だが、
Cをオブジェクト指向言語であるとは言わないだろが
その種の詭弁だな
447440
2008/07/04(金) 18:40:30 俺の質問にも答えてくれないかな。
448デフォルトの名無しさん
2008/07/04(金) 22:58:44449デフォルトの名無しさん
2008/07/04(金) 23:25:01 答えられないなら
無理してまでそんな寒いレスしなくて良いよw
無理してまでそんな寒いレスしなくて良いよw
450デフォルトの名無しさん
2008/07/04(金) 23:50:28 おう。
すまん。
すまん。
451デフォルトの名無しさん
2008/07/05(土) 11:35:09452デフォルトの名無しさん
2008/07/05(土) 11:45:01 まだいたのかよw
(Cのサブセットの)Java言語への変換による安全なポインタの実装方式
http://www.kb.ecei.tohoku.ac.jp/~sumii/pub/fsc2java.pdf
(Cのサブセットの)Java言語への変換による安全なポインタの実装方式
http://www.kb.ecei.tohoku.ac.jp/~sumii/pub/fsc2java.pdf
453デフォルトの名無しさん
2008/07/12(土) 00:56:07 ぬるぽ<Javaにポインタがある証拠
454デフォルトの名無しさん
2008/07/12(土) 01:19:05 JavaのVMはCで書かれてる?
455デフォルトの名無しさん
2008/07/12(土) 01:20:02 C++って聞いたことはあるがソースが無いので嘘かも知れない
456デフォルトの名無しさん
2008/07/12(土) 08:18:03 >>455
ソースあるよ。
http://jp.sun.com/company/Press/release/2006/1114.html
http://download.java.net/openjdk/jdk6/
コアのところはC言語。JavaMEと基本は同じソースで、
組み込み(C++コンパイラが無いような環境)でも使うからね。
AWTの部分や、メジャーOS用のhotspotVM部分は殆どC++で書かれてる。
class Linux { friend class os; ... }; なんてクラスもある。
ソースあるよ。
http://jp.sun.com/company/Press/release/2006/1114.html
http://download.java.net/openjdk/jdk6/
コアのところはC言語。JavaMEと基本は同じソースで、
組み込み(C++コンパイラが無いような環境)でも使うからね。
AWTの部分や、メジャーOS用のhotspotVM部分は殆どC++で書かれてる。
class Linux { friend class os; ... }; なんてクラスもある。
457デフォルトの名無しさん
2008/10/01(水) 11:29:14 結局、後継はどれなんだ……?
#はあんまり好きになれんかった。
Dはいい感じだと思ったけども。
#はあんまり好きになれんかった。
Dはいい感じだと思ったけども。
458デフォルトの名無しさん
2008/10/28(火) 06:46:42 >>417
aもbもポインタだろjk
aもbもポインタだろjk
459デフォルトの名無しさん
2008/12/27(土) 21:31:50460デフォルトの名無しさん
2008/12/27(土) 22:05:34461デフォルトの名無しさん
2008/12/27(土) 22:17:31 これ、さすがに混乱を招くから、コンパイルできなくてよいことに決まったようだ。
462デフォルトの名無しさん
2008/12/28(日) 01:10:27 別にJavaにポインタがあろうが無かろうがどうでも良い。
単なる言葉遊びだ。
だが、Javaのような参照しか知らん者に
char buff[0x100],result[0x100]={0};
char *begin,*end;
scanf("%255s",buff);
begin=strstr(buff,"[");
end=trstr(buff,"[");
strncpy(result,begin,end-begin);
printf("%s",result);
みたいなコードを説明するには、どうしてもポインタと参照を
区別して説明しないとキツい。必要に応じて言い分けるだけ。
単なる言葉遊びだ。
だが、Javaのような参照しか知らん者に
char buff[0x100],result[0x100]={0};
char *begin,*end;
scanf("%255s",buff);
begin=strstr(buff,"[");
end=trstr(buff,"[");
strncpy(result,begin,end-begin);
printf("%s",result);
みたいなコードを説明するには、どうしてもポインタと参照を
区別して説明しないとキツい。必要に応じて言い分けるだけ。
463462
2008/12/28(日) 11:38:20 済まん大口叩いた割にひどいミスを書いた
begin=strstr(buff,"[");
end=trstr(buff,"[");
じゃなく
begin=strstr(buff,"[");
end=trstr(begin,"]");
だったお恥ずかしい。
begin=strstr(buff,"[");
end=trstr(buff,"[");
じゃなく
begin=strstr(buff,"[");
end=trstr(begin,"]");
だったお恥ずかしい。
464デフォルトの名無しさん
2008/12/29(月) 22:13:22 Javaの設計者はポインタの概念が理解できなかった。
ポインタで躓いたんだ。
そこで一大決心してJavaを設計した。
普通ならポインタの理解に努めるとこだろう。
だがそうしなかったことに多くの人々が魅了された。
もうポインタがわからないのは恥ずかしいことじゃない。
俺が悪かったわけじゃないんだ。
ポインタが悪かったんだ。
そしてJavaは伝説の黄金ツールとなった。
ポインタで躓いたんだ。
そこで一大決心してJavaを設計した。
普通ならポインタの理解に努めるとこだろう。
だがそうしなかったことに多くの人々が魅了された。
もうポインタがわからないのは恥ずかしいことじゃない。
俺が悪かったわけじゃないんだ。
ポインタが悪かったんだ。
そしてJavaは伝説の黄金ツールとなった。
465デフォルトの名無しさん
2008/12/30(火) 00:36:50 今日JRで大規模システムダウンが2件も発生してるが
これもJavaで書かれてるのか?
これもJavaで書かれてるのか?
466デフォルトの名無しさん
2008/12/30(火) 01:31:59 >>465
それはどうか知らないが、そうだとしたら今日も伝説を作るために頑張ったということだろう。
それはどうか知らないが、そうだとしたら今日も伝説を作るために頑張ったということだろう。
467デフォルトの名無しさん
2008/12/30(火) 01:46:19 PCに限って言えば.NETの方が遙かにJavaより軽いな
468デフォルトの名無しさん
2008/12/31(水) 18:02:03 Visual D Express Edition マダ?
469デフォルトの名無しさん
2008/12/31(水) 18:11:54470デフォルトの名無しさん
2008/12/31(水) 18:20:41 PC環境でのJavaのJITってあまり最適化されないのか、ネイティブや同じような技術の.NETと比較して速度面にどうしても不満が出るな。
組み込みとかだとそのあたりはどうなんだろう?
組み込みとかだとそのあたりはどうなんだろう?
471デフォルトの名無しさん
2009/01/01(木) 03:00:25472デフォルトの名無しさん
2009/01/16(金) 20:17:48 俺はlispに乗り換えた
473デフォルトの名無しさん
2009/01/21(水) 21:26:31 結局の処行き着く先はVBってのがよく分った
474デフォルトの名無しさん
2009/01/21(水) 22:33:03 >>473
それはない。
それはない。
475デフォルトの名無しさん
2009/01/22(木) 18:10:58■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「おこめ券は米以外の食品も買える。効果的な活用を」 地元で農水相 [山形県] [少考さん★]
- 【速報】「女芸人No.1決定戦 THE W」9代目女王にニッチェ! 7年ぶり3度目で悲願の優勝 [牛丼★]
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★11 [蚤の市★]
- 【芸能】『女芸人No.1決定戦THE W』 粗品が最後にバッサリ「優勝賞金1000万円にしてはレベル低い大会」 [冬月記者★]
- 今年の流行語大賞 『働いて働いて働いてまいります』が受賞で不快感… 過労自殺の遺族らが会見「家族にむち打つような行為だ」 [冬月記者★]
- 【沖縄】開業4ヵ月でこれは…“国民の税金”投入の『ジャングリア沖縄』で見た衝撃的な光景と、モチベーションが低い一部スタッフの現状 [ぐれ★]
- クズ「勉強頑張らなかった奴は一生DQNと一緒に肉体労働しろ」☚勉強頑張れるのも環境と巡り合わせなんだが? [783475554]
- 正直教師が授業する必要なくね?
- インド料理屋に抗議に行った
- 【正論】検察「山上よ、どんな事情があろうと暴力が許されない」 [442080748]
- 熱はないけど倦怠感があるんやが
- スマホゲ問い合わせ俺「ここでこんなことしたらバグった!」返答「アカウント情報と画面のスクショと操作手順をメールで送って」
