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

[jfriends-ml 1594] Re: ポインタの定義



小薮です。

On Sat, 10 Mar 2001 01:03:47 +0900
in [jfriends-ml 1590] Re: ポインタの定義
Kazuya Maebashi <PXU00211@xxxxxxxxxxx> wrote:

> 案1)
>   「ええと、Javaにはポインタはないけど、代わりに参照という
>   仕掛けがあって、参照は、ポインタによく似てるけど、ポインタ
>   演算はできないし、変数の参照を取ることもできない」
> 
> 案2)
>   「うるさい。それはデマだ。Javaはポインタの言語だ。
>   ま、Javaのポインタは、ポインタ演算はできないし、変数の参照を
>   取ることもできないけど。」
> 
> このふたつ、意味的には *大差ない* と思うんですが。

そのとおりです。

> そして、どっちかと言うと後者の方がわかりやすいし、聞き手の印象に
> 残るだろうし、決してウソを言ってるわけでもないわけです。

いえ、ある意味、前者の方がわかりやすいと思います。

単に「デマだ」といってしまうと、世間で「Javaにポインタはない」
と言われている理由を単なるウソと誤解するでしょう。

私なら、「Javaにはポインタに相当するものとして参照があるけど、
これこれの点で違う」といった表現になりますかね。
「Javaにはポインタはない」という必要もないです。
っていうか、実際的な注釈として、「Javaにポインタがあるなし
議論というのもあるようだが気にしないように」と
付け加えるかもしれません。

「ポインタがある」「ない」の二元論に陥っちゃまずい
ですよ。Javaのアレは(Cの)ポインタと同じところも違う
ところもあるんだから。

「Javaにはポインタはない」という単純なキャッチフレーズは
キャッチフレーズとして強力でしたが多くの誤解を生んで
しまいました。
「Javaにはポインタがある」という言い方も同じ危険があるかと。
単純で強力な表現であるがゆえにまつもとさんの誤解を
誘発しましたね。

> >でもやっぱり私が思うのは。
> >結局前橋さんの文章も、とどのつまりは「ポインタがある」という
> >主張になってしまっていますよね。
> 
> ていうか、「Javaにはポインタがない」という言説に問題があると
> 思って、それを否定しようと思ったら、「Javaにはポインタがある」
> と言うしかないんじゃないでしょうか?

たとえば、ちょっと不謹慎な例で申し訳ないですが、
脳死状態の人を指して、「この人は死んでいるのか生きているのか」と
いう質問にどう答えるでしょう。とりあえずその人の現在の状態を
正確に伝えたいのなら、「死んでいる」「生きている」の
どちらの答えも誤解を生む恐れがあってまずいと思うのですが。

> >でも、上記の努力のための手段として「Javaにはポインタがある」
> >という表現を対抗として使うと別の問題が発生してしまうわけです
> >から、「Javaにはポインタがある」とは
> >            *主張しないほうがよい*
> >のではないでしょうか。
> 
> 「別の問題」とは?

たとえば、前橋さんの主張がまつもとゆきひろさんに
誤解されてしまいましたね。

> >初期の目的さえ達成されれば、Javaのアレには参照という名前が
> >すでにあって普及しているので、ポインタという表現を
> >普及させる必要はないと思うんですが・・
> 
> で、そういう主張は私はしていないのです。
> 
> 既に書いたように、「Javaにはポインタがない」という言説さえなければ、
> 「Javaにはポインタがある」なんて言わなくて済むのです。

この論点はちょっと保留させてください。


-----------------------------------
koyabu@xxxxxxxxxxxxxxxxx