[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Javaとポインタ




前橋@Nifty です。

自宅からだと、諸般の事情により、スレッドが切れてしまいます。
ごめんなさい(_o_)

木下さん:
>なぜ、Javaの参照の概念をポインタと呼ばないかは、
>http://java-house.etl.go.jp/ml/archive/j-h-b/024634.html#body
>このへん(以降)の意見が参考になります.

ありがとうございます。読みました。

CORBAを使おうがRMIを使おうが、ポインタは「何かを指し示すモノ」
であって、別にアドレスではない、と私は思っているのですが、ま
あ、CORBAでは、ポインタの比較を==でできないのはしょうがない
ですね。

# C++なら、演算子のオーバーロードでごまかしてあるのでしょうか?

このスレッドでは結論が出ていないようなのですが、RMIではどう
なのでしょう? > 詳しい人

>後の意見の食い違いは「ポインタ」という用語の定義が曖昧なせいですね.
>みんなポインタというとCの「ポインタ変数」を思い浮かべるらしいので、
>それと混同されないように「参照」だと言い張るのではないでしょうか.

これは、そうかもしれません。C/C++の場合、ポインタは「実装上」
アドレスそのものですから。

でも、だから、ポインタでなく「参照」と呼ぶ、というだけならまだしも...
「Javaにはポインタはない」はいくらなんでも言い過ぎでしょう。

おかげで、「Javaで連結リストはどうやって書けばいいのですか?」
という定番の質問や、上記JavaHouseの最初の質問のような質問が
出て来るわけです。

># 内部的には同じ扱いであることが多いですが.

ん? C/C++ならそうですが、Javaの場合、ポインタは内部でも物理
的なアドレスではないですよね。もちろん実装によるのでしょうが、
アドレスを直接持っちゃうと、GCに支障がでるような。

># そして最近はいわゆるCのポインタも(アプリケーションプログラマの
># 立場からは)物理アドレスを差すわけではないので、アドレス演算を除
># いてはほとんど同じ概念といってよいですね.

私も今時のCのアプリケーションプログラマなので、ポインタは、
「何かを指し示すモノ」としてしか使いません。ポインタ演算っつー
のは、昔々コンパイラの最適化を手抜きするために付けた歴史的遺
物であって、今時こんなものを使うのは、邪道だと信じております。
# もちろん、syntax sugar としての添字演算子[]を使ったポイン
# タ演算は別として、です。

「Javaにはポインタはない」と言われると、「あなたはポインタを
アドレスのことだでも思っていたのですか?」と言い返したくなり
ます。

# でも、Cの場合、ひとたびバグると、ポインタがアドレスである
# ことを思い知らされるのであった(;_;)

>うういそがしいいい.休みたい...

お疲れ様です。私はもうお休みモードです(^^)

------------------------------------------------------------
  de 前橋和弥            maebashi@xxxxxxxxxx
                         http://member.nifty.ne.jp/maebashi/
------------------------------------------------------------