トップページ⇒tech
1001コメント376KB

[mustang] 次世代Javaの動向 3 [dolphin]

■ このスレッドは過去ログ倉庫に格納されています
000112006/09/03(日) 05:09:50
前スレ
次世代Javaの動向 2
http://pc8.2ch.net/test/read.cgi/tech/1147881822/

前々スレ
【Java】次世代Java・J2SE1.6の動向【Mustang】
http://pc8.2ch.net/test/read.cgi/tech/1081698555/

2006年秋にMustang Java SE 6がリリース予定
(現在ベータ2)
0153デフォルトの名無しさん2006/09/07(木) 21:57:05
竹島は日本固有の領土
0154デフォルトの名無しさん2006/09/07(木) 22:00:39
竹島は明治時代からの日本の領土
0155デフォルトの名無しさん2006/09/07(木) 22:27:49
>>151
爆破したあとで海だけとればいい。
韓国のやってることは、
あんなちっこい島に無理矢理人を住まわせて
環境破壊して連絡船まで作ってるっていう赤字で
無駄で間抜けなことをやってまで
アホで必死すぎるからなw


0156デフォルトの名無しさん2006/09/07(木) 22:29:35
>>152
それはまるで、C言語厨がC++を使うときに、
クラスを作ると遅くなるとわめくのとかわらないと思う。
STL使ったらC++使う意味がないとか意味不明なこと漏らす連中とか
0157デフォルトの名無しさん2006/09/07(木) 23:12:20
>>149
まず、転置に'や`を使うのは不適切なケースだろう。だが、それは演算子オーバーロード
特有のものではない。例えば、メソッドだって、ある奴はtransposeという名前をつけるだろうが、
別の奴はtransとつけるかもしれないし、さらに面倒くさがりのやつはtrやtという名前をつけるかもしれない
また、乗算に関しても、メソッドに置き換えても全く同じことが成り立つ。以下、>>149の後半部分
に関して、*をmultiplyとして置換したもの。あと、「オーバーロード」だとメソッド定義の場合は不自然なので、
「定義」と置換した。

> ある奴は、multiplyを行列型どうしの乗算として定義する。
> だが、ほかのある奴はmultiplyを行ベクトル、列ベクトルどうしの内積として定義する。
> ほかのある奴は、ふたつの行列の個々の要素どうしを掛け合わせた行列型を返すように定義する。

と、このように全く同じことになる。もちろん、multiplyHogeHogeと修飾することで意味を明確にする
ことはできるだろうが、ここではそのようなことがプログラマに期待できない状況の話をしている
はずなので、無意味
0158デフォルトの名無しさん2006/09/07(木) 23:19:57
>>127
Jarの場合はメモリ中で展開するから。
あと、セキュリティマネージャーを使うような設定にしてると、バラの場合は
classファイルをロードするたびに・・・
0159デフォルトの名無しさん2006/09/08(金) 00:15:03
>>119
お前もしかしてCVS使ってない?
ファイル作ってコミットしたら削除するのに手間が掛かるから抵抗あるよな。

Subversion使えば楽だぞ。ディレクトリ移動や削除に何の抵抗もない。

もしSubversion使っててファイル作成にそれだけ抵抗あるなら、愚かとしか言いようがない。
0160デフォルトの名無しさん2006/09/08(金) 05:18:12
>>130
否定したいがために無理な話をでっちあげるのはよせ。
「Classに対しては再定義できる、primitiveに対してはできない」というルールだけでOK。
primitiveでの演算子再定義なんか、必要あるわけねーだろ。

>するととたんにC++やC#の二の舞となるわけだ。
>あとはストラウストラップが指摘した問題だな。
だからその問題とやらを具体的に挙げろって何度もいってんだろ。挙げられないということは、おまえだって知らないんじゃねーか。

>>132
>(例えば、+なら可換であるとか)
なんでそんな必要があるの?それは勝手な思い込みじゃね?
例えばRubyのStringクラスでの * 演算子はまったく可換じゃないけど、だれも文句を言わないし、問題になったこともない。
可換であることを期待される場合とそうでない場合があるというだけだと思う。

>演算子オーバーロードそれ自体が悪いわけじゃなく、演算子オーバーロードの正しい使い方についてあまり啓蒙されなかったのが真の原因
なるほど。できれば正しくない使い方をもっと紹介してくれるとうれしい。
0161デフォルトの名無しさん2006/09/08(金) 05:28:55
>>140
>この二つのメソッドを演算子オーバーロードした場合、どう区別つけるんだ?
何をどう区別したいのかが読み取れないけど、strとsbを区別したいなら、変数の型をみればいい。
メソッドの動作(appendのように破壊的かconcatのように非破壊的か)を区別したいなら、ドキュメントを読めばいいし、これはメソッドでも同じ問題が起こりうることであり、演算子固有の問題ではない。
メソッド名(concatとappend)を区別したいなら、
* C++やRubyのように演算子を直接定義する言語なら、メソッド名は関係なので区別する必要はない。
* Pythonのように演算子と対応するメソッドが一意に決まっている言語なら、ひとつの演算子に複数のメソッドが対応することはないので、区別する必要はない。

>>157
>それは演算子オーバーロード特有のものではない。
禿堂。メソッドでも起こる問題を、さも演算子オーバーロード特有の問題のように話すバカ大杉。
これだから、Java屋はJavaにない機能はすべて(ry
0162デフォルトの名無しさん2006/09/08(金) 05:59:01
http://journal.mycom.co.jp/articles/2005/11/10/javaone1/
去年の JavaOne Tokyo の話によれば演算子オーバーロードが
dolphin に入るのは かなり望み薄だし、次世代Javaの動向と関係がない
演算子オーバーロード関連は他所のスレでやって欲しいぞ。

> これだから、Java屋はJavaにない機能はすべて(ry
最終的に これが言いたいだけの奴も居るみたいだし。
01631572006/09/08(金) 08:19:25
>>160
> 例えばRubyのStringクラスでの * 演算子はまったく可換じゃないけど、だれも文句を言わないし

* (積)は元々数学的に引数が可換な演算子じゃない。行列積とか考えてみればわかる。
+演算子について言っているのなら正しいけど、(Rubyの)Stringは最初期の頃からある
組み込みライブラリだから、変な風に定義されちゃっても大多数は普通は特に考えずに受け入れる。
あと、歴史的事情で、Stringの連結に+を使う言語が既に一般的だったというのもあるだろう。
ちなみに、「文字列連結演算子は可換でないのに+なのは変だ。*であるべきだ。」という主張は時々聞く。
少数派だけど。

> なるほど。できれば正しくない使い方をもっと紹介してくれるとうれしい。

正しく無い使い方なんて山ほどあるだろうけど(変なメソッド名の付け方がいくらでもあるのと
一緒)、例えば、+ - * /演算子で、引数を破壊的に変更するのは、おそらく正しく無い使い方だろう。
0164デフォルトの名無しさん2006/09/08(金) 14:10:15
>>162
なんだよ、返答につまったら逃げるのかよ。
それはいいからストラウストラップが指摘した問題とやらを紹介してくれよ。
反対派の根拠がそれなんだろ?ちゃんと紹介しないからしょぼい理由ばっかりなんだよ。

>>163
>正しく無い使い方なんて山ほどあるだろうけど(変なメソッド名の付け方がいくらでもあるのと
>一緒)、例えば、+ - * /演算子で、引数を破壊的に変更するのは、おそらく正しく無い使い方だろう。
はげどう。あと、+= と << を混同しているケースもある。Rubyの場合だけど。
0165デフォルトの名無しさん2006/09/08(金) 22:12:02
>>157
演算子オーバーロードで冗長な分かりやすい”演算子”をつける方法を教えてくれないか?

これだから石頭は困る
01661572006/09/09(土) 00:14:45
>>165
何が言いたいのかよくわからん

> もちろん、multiplyHogeHogeと修飾することで意味を明確にする
> ことはできるだろうが、ここではそのようなことがプログラマに期待できない状況の話をしている
> はずなので、無意味

と書いたのは
multiplyHogeHogeなどのように冗長に書くことで、メソッド名では(通常の演算子と違って)
意味を明確にすることができるが、ここで論じているのはプログラマがそのような適切な
名前付けをしてくれることが期待できない場合の話なのだから、そのことについて論じるのは
無意味だと言いたかったのだが。
ちなみに、Haskellでは普通の関数でも、``で囲むことで、1 `add` 2のように中置演算子として
扱うことができる。同じような仕組みをJavaでも使うことで、「演算子」であっても、冗長な
名前を付けることができるだろう。
0167デフォルトの名無しさん2006/09/09(土) 00:39:07
>>164
どうでもいいが反対「派」とかいってひとまとめにひっくるめるのは止めろ。
おまえも賛成「派」なんて呼ばれたいのか。

おれはどっちかというと反対だが、別にC++がどうこうじゃなくて、なんでも
かんでも文法を拡張することに慎重でありたいだけ。
例えばコレクションもいずれは配列のようにアクセスできるようになる日が
くるかもしれんが、言語仕様を変更して採用するかどうかについては、
ぎりぎりまで十分に検討してもらいたいと思う。

言語仕様をどんどん変更されたら、言語としての安定性が疑われる。
PHPなんかひどいだろ。
Javaは言語仕様は小さく、ライブラリは豊かに、でいいと思うんだがね。

その上でもし仕様変更がなされたら、おれは文句も言わずに喜んで使うよ。
むしろ「楽になった」と喜んで喧伝するかもしれん。
それがなんか悪いか? 散々慎重なこといっといてこれだからJava厨は、と
言われてもしらね。変更に慎重になることと、慎重に検討した結果導入された
ものを使うことは別に衝突しない話だと思うがね。

そんなわけでオーバーロードが導入されようがされまいが、こんなもめるという
ことは、まだ十分に検討されてない事柄だということだけはわかった。引き続き
数年かけて検討すればいいよ。
Java 7の話に戻してくれんかね?
0168デフォルトの名無しさん2006/09/09(土) 02:00:42
>>167
よくできました!
この感想文には100点を差し上げましょう!
0169デフォルトの名無しさん2006/09/09(土) 06:33:38
>>165
なんだ、[]や+の意味がわからないのか。そういうレベルとは知らなかった。議論の前提を間違ってた。正直済まんかった。

>>167
開き直り乙。おまえのいいたいことはわかったから、ストラウストラップが指摘した問題をよろしく。
それから議論の発端をちゃんと読んでね。

>>168
開き直り乙。仲間ができてよかったね。
0170デフォルトの名無しさん2006/09/09(土) 07:55:37
で、>>169はどれを書いたの?
0171デフォルトの名無しさん2006/09/09(土) 09:06:19
>Javaは言語仕様は小さく、ライブラリは豊かに、でいいと思うんだがね。
もはや言語仕様小さくないだろう。Java7になればもっとひどくなるだろうし。
0172デフォルトの名無しさん2006/09/09(土) 11:14:05
>>167
> おまえも賛成「派」なんて呼ばれたいのか。
別にかまわないけど。何が問題なの?

> それがなんか悪いか? 散々慎重なこといっといてこれだからJava厨は、と
> 言われてもしらね。変更に慎重になることと、慎重に検討した結果導入された
> ものを使うことは別に衝突しない話だと思うがね。
悪いね。「変更に慎重」なことと、理由をこじつけて否定することはまったく別のこと。
今までの反対派の発言をみてみろ、まず「演算子の再定義は悪」という結論があって、そのために無理な理由をつけて反対しているだけじゃん。
これのどこが「変更に慎重」なんだよ。そう言いたいんだったらそれらしい議論しろっつーの。
おまえが「ストラウストラップがこういう問題を指摘してるんだけど、それはどうしたらいいと思う?」とでも書けば「変更に慎重」ということにもなるよ。
しかしおまえらは、はなから「Javaは正しい」「演算子オーバーロードは悪」という結論ありきで話してるじゃん。
そして、そのための理由を無理にこじつけて、それらを論破されて、それを今になって「変更に慎重」とか、もうアホかと。

> 言語仕様をどんどん変更されたら、言語としての安定性が疑われる。
> PHPなんかひどいだろ。
言語仕様の安定性と、ライブラリや実装の安定性を混同している。
PHPで安定しないのは後者。前者は安定している(PHPの仕様は4→5で大きく拡張されたが、それはJavaでも同じ)。
実装が不安定だからといって、勝手に言語仕様まで同じにするな。

>>168
この感想文には「まけおしみ」というタイトルをつけましょう。
0173デフォルトの名無しさん2006/09/09(土) 12:09:33
>>172
> 理由をこじつけて否定することはまったく別のこと。
なんか知らんけど、 「理由をこじつけて否定」されたから
腹がたってムシャクシャしてやったのであって、
次世代Java とは関係がない話って事だね。

> それらしい議論しろっつーの。
次世代Javaの動向とは関係がない話題だから ここでやるのはスレ違い

マ板のスレにでも行って愚痴れば?
01741572006/09/09(土) 12:20:21
>>164
本題とは関係無いが、Rubyだと+=演算子はユーザが定義することはできず、x = x + yの
シンタックスシュガーのはずなので、<<とは混同しようが無いと思うんだが。
0175デフォルトの名無しさん2006/09/09(土) 13:28:05
オーバーロードの議論は結局
(f+g)(x)は読みやすいか?
まで遡るのでやっても無駄と思われ
0176デフォルトの名無しさん2006/09/09(土) 20:33:47
たとえば演算子をオーバーロード出来たとする
すると、どんなにメソッド名を付けることが上手いプログラマでも、
+演算子のオーバーロードを使う場合が出てくる
これままぁいい

問題なのは、このときに自分の定義した+演算子と他人の定義した+演算子が
厳密には異なる動作をする可能性があるのが問題
これはドキュメントを読めばいい、というレベルの話ではなく、
間違いなく可読性(というか即読性?)が低下する

さらには、C++風に記述した*演算子(つまりoperator*)には名前が1つしかないのが問題
これでは行列型どうしの乗算なのか、内積なのか、外積なのか即、判断ができない
これが多分>>149が言いたかったこと
いまだと、メソッド名によって操作の内容が容易に判断できる

確かに駄目プログラマオンリーなら、演算子がオーバーロード出来ようと出来まいと関係ない
でも、世界は駄目プログラマだけじゃないので、演算子がオーバーロード出来てしまうと
上に書いたような事態に陥る

まぁ、Javaに演算子のオーバーロードが追加されるなら、
何らかのメソッドにアノテーションかなんかで実現してほしい

@AddOperator
public Hoge add(Hoge hoge) { ... }
01771762006/09/09(土) 20:36:16
それよりも、package private/protectedなinterfaceがほしい今日この頃
例えばRunnableインターフェイスをprotectedにすると、
runは外部から呼び出せないことになるので、
今のようにstartを呼ばなければいけないところをrun読んだりするミスがなくなるし
0178デフォルトの名無しさん2006/09/09(土) 21:28:18
>>173
劣勢になったら「スレ違い」宣言かよ
それはいいからストラウストラップのやつよろしく
0179デフォルトの名無しさん2006/09/09(土) 21:49:26
>>178
ストラウストラップのは>>149,176がいってるやつ
たしかD&Eで言ってたような・・・うろ覚えスマソ
ただ、ストラウストラップ自体はそこまで演算子の多重定義を否定してなくて、
あくまでそういう意見もいる、ってこと
まぁPuzzlersとか読む限り、俺もJavaに演算子の多重定義はいらないかな、と思う
>>176の案だったらまだ許せるけどね

あと、176よ、package privateなinterfaceは今でもあるぞ?
0180デフォルトの名無しさん2006/09/09(土) 21:59:55
なるほどぐぐったらすぐ出てきたよ
粘着している元ネタはこれか

ttp://www.kh.rim.or.jp/~nagamura/misc/stroustrup-interview.html

どう読んでもネタだわこりゃw
0181デフォルトの名無しさん2006/09/09(土) 22:01:46
>>175すばらしい!
0182デフォルトの名無しさん2006/09/09(土) 22:23:28
>>180は確かにネタだがこういうネタが通用する背景には
C++の言語仕様に辟易しているPGが多いっていう真実が隠されてるわけだね
ネタだからといって演算子オーバロードが良いとはいえないわけだ
「賛成派」の>>172には支持理由を是非とも熱く語ってほしいね
0183デフォルトの名無しさん2006/09/09(土) 22:37:04
同じ次世代を目指しているから、D言語の人たちはどう思ってるかのぞいてみたら?
0184デフォルトの名無しさん2006/09/09(土) 23:12:54
>>180 は多分C++使い始めの奴らが「わかるわかる」って言い出す内容だと思うんだ。
C++のプロはそんなこと絶対思わない。

じゃぁ、C++のプロってのは実プロジェクトにそんなに必要なのか?って言えば…。

いらないよな。
0185デフォルトの名無しさん2006/09/09(土) 23:46:21
>>157
> >>149
> まず、転置に'や`を使うのは不適切なケースだろう。だが、それは演算子オーバーロード

ちょっとまったーーーーーーーーーーーーーー!!!
MATLABやOctave使ったことあるか?
MATLABやOctaveでは行列の転置に'を使うんだぜ。
A = [1 2 3; 4 5 6; 7 8 9];
って行列があったとき
B = A'ってやると
Bの中身は [1 4 7; 2 5 8; 3 6 9]になって

B = | 1 4 7 |
   | 2 5 8 |
   | 3 6 9 |

て表示されるんだぜ。


> 特有のものではない。例えば、メソッドだって、ある奴はtransposeという名前をつけるだろうが、
> 別の奴はtransとつけるかもしれないし、さらに面倒くさがりのやつはtrやtという名前をつけるかもしれない

それはまた違う問題だ。Javaにはpackageの概念があるんだから、
メソッドの名前が乱立しても、名前空間の衝突は起きないだろー

0186デフォルトの名無しさん2006/09/09(土) 23:48:26
>>160
無理な話じゃないさ。
面倒なことになるから、どうしても導入したければ、
もっと頭をつかえっていっときたい。
enumや可変長引数を導入したときのように。
Genericsを導入したおかげでありゃうまいことやってくれたって思ったよ。
0187デフォルトの名無しさん2006/09/09(土) 23:51:23
>>162
> http://journal.mycom.co.jp/articles/2005/11/10/javaone1/
> 去年の JavaOne Tokyo の話によれば演算子オーバーロードが
> dolphin に入るのは かなり望み薄だし、次世代Javaの動向と関係がない
> 演算子オーバーロード関連は他所のスレでやって欲しいぞ。
> > これだから、Java屋はJavaにない機能はすべて(ry
> 最終的に これが言いたいだけの奴も居るみたいだし。

みたいだな。

これみると、キッパリと否定されてるようだしw つか、C#でもつかってろってw
【レポート】JavaOne Tokyo 2005 - 見えてきたDolphin、Mustangのさらに向こう
Dolphin世代のJavaはどうなる? (MYCOMジャーナル)
"Peter氏は、今後もJava言語にはさらなる拡張が加えられると宣言する一方で、
Javaでサポートされる可能性のない機能の代表格として以下のようなものを挙げている。

* 多重継承
* 演算子オーバーロード
* AOP(Aspect Oriented Programming)
* プリプロセッサ/マクロ
* 多重ディスパッチ
* 複数返り値"
http://journal.mycom.co.jp/articles/2005/11/10/javaone1/


AOPが導入されないのはちょっと残念かもしれないけどAspectJでうまい使い方があるし
使い道も限られてるからまあいいかってとこだね
0188デフォルトの名無しさん2006/09/09(土) 23:52:37
>>164
JavaOne TokyoでJava開発者が主張していることを
あげただけで逃げになるのかw

小学生かお前はw
0189デフォルトの名無しさん2006/09/09(土) 23:54:43
>>167
オーバーロードのことで揉めるのは
C++厨やC#厨の連中がなんとかしてJavaをこき下ろしたいだけだろ。
なぜそんなことするのかわからんけど。
そんなにJavaが嫌いだったらC#かC++でも使っていればいいのに。
0190デフォルトの名無しさん2006/09/09(土) 23:55:16
>>169
お前の粘着っぷりには笑った
0191デフォルトの名無しさん2006/09/09(土) 23:55:28
>>170
ナイスツッコミw
0192デフォルトの名無しさん2006/09/09(土) 23:59:58
>>172
> 今までの反対派の発言をみてみろ、まず「演算子の再定義は悪」という結論があって、そのために無理な理由をつけて反対しているだけじゃん。
> これのどこが「変更に慎重」なんだよ。そう言いたいんだったらそれらしい議論しろっつーの。
> おまえが「ストラウストラップがこういう問題を指摘してるんだけど、それはどうしたらいいと思う?」とでも書けば「変更に慎重」ということにもなるよ。
> しかしおまえらは、はなから「Javaは正しい」「演算子オーバーロードは悪」という結論ありきで話してるじゃん。

まてまて、それはお前の被害妄想だよw
まあ、落ち着けw

> そして、そのための理由を無理にこじつけて、それらを論破されて、それを今になって「変更に慎重」とか、もうアホかと。

おいおい、泣くなよw よしよし、ぼくちゃん虐められてたんだね、よしよしw

> > 言語仕様をどんどん変更されたら、言語としての安定性が疑われる。
> > PHPなんかひどいだろ。
> 言語仕様の安定性と、ライブラリや実装の安定性を混同している。
> PHPで安定しないのは後者。前者は安定している(PHPの仕様は4→5で大きく拡張されたが、それはJavaでも同じ)。
> 実装が不安定だからといって、勝手に言語仕様まで同じにするな。
名前空間もない致命的な欠陥に加え、import宣言も実装されないあのPHPがJavaと同じっておいおいw
__autoloadって何だよあのアホ仕様w

だったらさ、キミの大好きなPHPにも演算子オーバーロードをつけてくれるように頼んで皆よw
> >>168
> この感想文には「まけおしみ」というタイトルをつけましょう。

いや、お前のほうが負け惜しみのタイトルに相応しいレスを繰り返しているよw
>>168のレスは的を得ているし、すっきりするし説得力があるしレスとしては賢明なほうだと俺は思うぞ。
0193デフォルトの名無しさん2006/09/10(日) 00:00:23
C#って演算子オーバーロードあるの?

かなり萎えた。
0194デフォルトの名無しさん2006/09/10(日) 00:00:33
>>173
> >>172
> > 理由をこじつけて否定することはまったく別のこと。
> なんか知らんけど、 「理由をこじつけて否定」されたから
> 腹がたってムシャクシャしてやったのであって、
> 次世代Java とは関係がない話って事だね。

ワロタ。ムシャクシャしたC#厨がJavaスレにイチャモンつけてるのかw

0195デフォルトの名無しさん2006/09/10(日) 00:01:18
>>175
読みにくい。

よって、Javaに演算子オーバーローディングは要らない。
0196デフォルトの名無しさん2006/09/10(日) 00:03:18
>>176
もし仮に演算子オーバーロードをJavaに実装するなら、
アノテーションだけでなく、演算子に名前空間とアクセス権、演算子の優先順位、結合力もつけるべきだな。
0197デフォルトの名無しさん2006/09/10(日) 00:22:25
>>193
あるよ。
しかもC#2.0ではめちゃくちゃな仕様が増えた。
?演算子がオーバーロードされたし。
0198デフォルトの名無しさん2006/09/10(日) 00:24:41
演算子のオーバーロードって結局、
メソッドをグローバル化することに他ならないんだと思う。

このオブジェクトに対するこの操作は全員が把握してしかるべきもの
と思われるものに対してのみオーバーロードが許されるべき。

Javaでは「全プロジェクトにおいて許されるものはStringの+ぐらいである」
というスタンスで進んでる。

C++では「いろんなプロジェクトで特有のものがあるだろ」
ってスタンスで進んでる。

俺は、Javaのスタンスで一向に差し支えないと思う。
なぜなら、演算子のオーバーロードの情報がグローバルに共有されることが稀だから。
01991572006/09/10(日) 00:26:27
>>185
MATLABは使ったことあるよ
でも、Matlabのそれは言語組み込みの演算子だから、演算子オーバーロードとはまた違う問題じゃないの?
そりゃ、MATLABユーザなら、他の言語でその演算子を見たときに、すぐに転置を表すものだと
理解できるかもしれんが、普通は無理だろ

> Javaにはpackageの概念があるんだから、

同じ機能のメソッドが別の名前だったり、同じ名前で別の機能を持つメソッドがあったときに
ユーザが混乱するかどうかという話なので、名前空間の話は無関係
02001572006/09/10(日) 00:29:19
>>198
メソッドをグローバル化って何?名前空間のことを言っているのなら、
全然違うと思うが。演算子と言っても、名前空間をもてないわけじゃないし。
0201デフォルトの名無しさん2006/09/10(日) 00:30:13
いい加減、C++厨は演算子にどれだけ情報量があるか気づけ。
高々1文字・2文字でどのように処理の意味を表現するのだ?

既に他分野で暗黙的に利用されている意味以外での利用
がどれほど保守性を下げるのか理解して言っているだろうな?
0202デフォルトの名無しさん2006/09/10(日) 00:35:45
>>198
それじゃ、結局、
オーバーロードした演算子にアクセス権を設定することはできないのか・・・
0203デフォルトの名無しさん2006/09/10(日) 00:36:46
>>199
お前、本当にMATLAB使ったことあるのかw
0204デフォルトの名無しさん2006/09/10(日) 00:47:52
>>199
おいおい、あのさ
演算子に名前空間はつけられないんだろ。それとも、つけられる仕様にできるのか?
名前空間がつかなかったら、異なる定義の演算子どうしの衝突がおきるだろう。

メソッド名に演算子が使えるだけという程度ならまた異なる話だがな。

メソッドと演算子との違いもわからんのか。メソッドは
add()という加算用インスタンスメソッドがあるなら、x+yは
x.add(y)と表現するわけだろう。

それを、演算子にしたいがために x + y としたいわけだな?

そのことでお前がこういったことについて聞くが
 「例えば、メソッドだって、ある奴はtransposeという名前をつけるだろうが、
 別の奴はtransとつけるかもしれないし、さらに面倒くさがりのやつはtrやtという名前をつけるかもしれない
 また、乗算に関しても、メソッドに置き換えても全く同じことが成り立つ。」

お前の主張した、「演算子をメソッドに置き換えても全く同じ事が成り立つ」
ためには

x.add(y)はx.+(y)と置き換えた場合に限る。
(このケースの場合、()や.の定義も再定義しなければC++でもコンパイルエラーになるがな。)
だがC#やC++の演算子のオーバーロードは x.+(y)とはならない、あくまでx+yだ。
これでお前は自分のいっていることがおかしいことに気づいたか?



02051572006/09/10(日) 00:48:58
>>203
どういう意味?
MATLABの行列転置演算子は組み込みのものだと思っていたのだが、違うの?
0206デフォルトの名無しさん2006/09/10(日) 00:49:11
>>201
奴はC++厨じゃなくてC#忠だよ。

C#とマイクロソフトに忠誠を誓う男、C#忠だ。
経験豊かなすごうでなC++厨だったらもっとましなことを言うはず。


0207デフォルトの名無しさん2006/09/10(日) 00:49:50
>>205
お前、さっき急いで「MATLAB 転置」でググッただろw
0208デフォルトの名無しさん2006/09/10(日) 00:50:52
>>176
>問題なのは、このときに自分の定義した+演算子と他人の定義した+演算子が
>厳密には異なる動作をする可能性があるのが問題
だからそれはメソッドでも起こる問題だってんだろ。
自分が定義したメソッドfoo()と他人が定義したfoo()が異なる動作をするなんてしょっちゅう。
メソッド名がかぶっても問題ないのは、双方が異なるクラスで定義されているからであり、それは演算子でもおなじこと。

> *演算子(つまりoperator*)には名前が1つしかないのが問題
> これでは行列型どうしの乗算なのか、内積なのか、外積なのか即、判断ができない
複数の動作が考えられるなら、演算子をつかわずすべてをメソッドにするか、または代表的なひとつだけを演算子にしてのこりはメソッドのままにしとけばいい。
演算子オーバーロードができるからといって、なんでもかんでも演算子にする必要はない。
普通に考えればわかることだろ。はなから否定することしか考えてないから、そういう考えしかできないんだよ。
02091572006/09/10(日) 00:52:22
>>204
別にC++/C#の演算子オーバーロードに限定して言ったつもりは無いんだけど
例えばRubyだと、演算子の定義とメソッドの定義は全く等価だし

後半は言っていることが全く意味不明。そりゃ、C++/C#において、メソッド呼び出し
と演算子呼び出しのシンタックスが違うことくらいわかってるがな。一体何が言いたいのやら
0210デフォルトの名無しさん2006/09/10(日) 01:00:15
>>192
まてまて、話をよくよめ。JavaとPHPの言語仕様が同じといってないだろ。言語仕様が大きく拡張されたという点で同じといってるだけ。
「言語仕様をどんどん変更されたら、言語としての安定性が疑われる。PHPなんかひどいだろ。」
→「PHPでは5になるときに大きく変更されたけど、それはJavaも同じ」
→「import宣言も実装されないあのPHPがJavaと同じっておいおいw」←いまここ

>>196
そんな複雑なのいらない。そこまではだれも望んじゃいない。
02111572006/09/10(日) 01:01:27
>>207
別にググって無いんだけど。…今ググッてみたが、MATLABにも
演算子オーバーロードあるのか。知らんかった。それに関しては
間違ってたので、謝罪する。
ただ、どちらにしてもMATLABで'が転置を表すのは、言語仕様あるいは
処理系に組み込みで定義されてるからであって、他の(MATLABのように
'が転置を表すことが一般的に認知されていない)言語のユーザがそれを転置
演算子としてオーバーロードするのが適切かは別問題だろう
0212デフォルトの名無しさん2006/09/10(日) 01:08:27
>>198
>演算子のオーバーロードって結局、
>メソッドをグローバル化することに他ならないんだと思う。
意味不明。

>>201
記号には十分な情報量あるよ。+や-で処理の意味を十分表せてる。
やっぱり四則演算の記号すら知らないんじゃないの?

>>204
ちょー意味分からん。
定義のしかたは>>176の方法でもなんでもいいからさ、例えば x + y があったら、コンパイラが型の情報とメソッド定義とをみて、x.add(y) とかに変換してくれればそれでいいじゃん。

>x.add(y)はx.+(y)と置き換えた場合に限る。
どうやったらこんな話になるのやら。
0213デフォルトの名無しさん2006/09/10(日) 01:10:51
>>208
> >>176
> >問題なのは、このときに自分の定義した+演算子と他人の定義した+演算子が
> >厳密には異なる動作をする可能性があるのが問題
> だからそれはメソッドでも起こる問題だってんだろ。
> 自分が定義したメソッドfoo()と他人が定義したfoo()が異なる動作をするなんてしょっちゅう。
> メソッド名がかぶっても問題ないのは、双方が異なるクラスで定義されているからであり、それは演算子でもおなじこと。

>>204をもう一度読み直してから出直してこい。
0214デフォルトの名無しさん2006/09/10(日) 01:12:14
>>210
その「いまここ」という用語使いたがるところがゆとり世代のバカっぽくていいね。
0215デフォルトの名無しさん2006/09/10(日) 01:18:21
あいかわらずJavaユーザは、Javaにない機能はイラネですか。10年同じことを繰り返してるんだなあ。
クロージャも導入されたら、とたんに手放しでマンセーするんだろうなあ。

あのさ、別に演算子オーバーロードがJavaに導入されようがされまいがどうでもいいけど、でもJavaユーザが主張している拒否の理由はどれも根拠が弱いよ。
LispもPythonもRubyも演算子の動作を再定義できるけど、それぞれ別のやりかたでうまくやってる。
そういうのを知らずに、たんに自分が知らない機能を嫌ってるだけじゃね?

COBOLerがCOBOLから離れられないように、Java-erはJavaから離れられないのね。
0216デフォルトの名無しさん2006/09/10(日) 01:19:04
>>176
演算子オーバーロードやるならinterfaceにして欲しいような気もする。

interface 四則演算<T>{ //あるいは更に縛って四則演算<T extends 四則演算<T>> とか
 T add(T v); T subtract(T v); T multiply(T v); T divide(T v);
}
緩いほうで Hoge extends 四則演算<String> されると、
hoge + str の意味が、四則演算無しの時と有りの時で
文字列連結か演算子オーバーロードかで変わっちゃったり、
変わらない場合は演算子の優先順位が面倒だったりしないかな、とか思った。

後は .Comparable で <, <=, >, >= 使えるようにするとか……
でも、これは参照型の ==, != が同じ参照かを比較するのと相性悪いような。

ついでに
interface Indexer<I, E>{ void set(I index, E element); E get(I index); }
とか。 List でやったら autoboxing が発生しまくるような気もする。
0217デフォルトの名無しさん2006/09/10(日) 01:19:01
>>176
>問題なのは、このときに自分の定義した+演算子と他人の定義した+演算子が
>厳密には異なる動作をする可能性があるのが問題
だからそれはメソッドでも起こる問題だってんだろ。
自分が定義したメソッドfoo()と他人が定義したfoo()が異なる動作をするなんてしょっちゅう。
メソッド名がかぶっても問題ないのは、双方が異なるクラスで定義されているからであり、それは演算子でもおなじこと。

> *演算子(つまりoperator*)には名前が1つしかないのが問題
> これでは行列型どうしの乗算なのか、内積なのか、外積なのか即、判断ができない
複数の動作が考えられるなら、演算子をつかわずすべてをメソッドにするか、または代表的なひとつだけを演算子にしてのこりはメソッドのままにしとけばいい。
演算子オーバーロードができるからといって、なんでもかんでも演算子にする必要はない。
普通に考えればわかることだろ。はなから否定することしか考えてないから、そういう考えしかできないんだよ。
0218デフォルトの名無しさん2006/09/10(日) 01:20:53
>>212
> >>198
> >演算子のオーバーロードって結局、
> >メソッドをグローバル化することに他ならないんだと思う。
> 意味不明。
> >>201
> 記号には十分な情報量あるよ。+や-で処理の意味を十分表せてる。
> やっぱり四則演算の記号すら知らないんじゃないの?
> >>204
> ちょー意味分からん。
> 定義のしかたは>>176の方法でもなんでもいいからさ、例えば x + y があったら、
> コンパイラが型の情報とメソッド定義とをみて、x.add(y) とかに変換してくれればそれでいいじゃん。

認識が甘いな。
お前みたいな演算子オーバーロードを崇拝するバカは
フィッシング詐欺や甘い誘いに騙されやすい奴に実にそっくりだよ。
お前の例で聞くが、
x + y / z と書いたら、

x.add(y.divide(z)) と期待通りに動くように設計できるか?
x.add(y).divide(z)と間違えないだろうな。


0219デフォルトの名無しさん2006/09/10(日) 01:24:55
>>212
> >>201
> 記号には十分な情報量あるよ。+や-で処理の意味を十分表せてる。
> やっぱり四則演算の記号すら知らないんじゃないの?

おまえは>>201の意図していることを理解できていないみたいだな。
>>201の例を俺が代弁するとだな。

ある言語では定義できる演算子が100種類。
定義できるメソッド名に使用できるアルファベットはもちろん26+10種類以上。
ただしメソッド文字数は256文字まで。

あるクラスを数十定義したとする。
それぞれ異なる振る舞いをするメソッドであり、
そのメソッドの数を数えると200もあった。

そこで、それぞれのメソッドをそれぞれ異なる演算子として定義したくなった。
そこでそれぞれのメソッドに次々と演算子を定義してゆくが・・・・

演算子が足りない!!!!!!!
演算子が足りないためにこれ以上演算子のオーバーロードができない!!!!!!!!!

こんな事態に陥ったら本末転倒だろう


0220デフォルトの名無しさん2006/09/10(日) 01:27:42
>>215
> あいかわらずJavaユーザは、Javaにない機能はイラネですか。10年同じことを繰り返してるんだなあ。
> クロージャも導入されたら、とたんに手放しでマンセーするんだろうなあ。

その根拠は? まさかGenericsがC++のtemplateと同じものだと勘違いして、
「JavaユーザはC++templateをマンセーしてる!」とかアホなこと言ってるんじゃなかろうなw

> あのさ、別に演算子オーバーロードがJavaに導入されようがされまいがどうでもいいけど、でもJavaユーザが主張している拒否の理由はどれも根拠が弱いよ。
どう根拠が弱いのかね。説明できないではどうにも説得できないな。
そもそもJavaはLispやPythonやRubyと違って強く型付けされた言語だってことを忘れていないかね。
そこをよく見れば、演算子オーバーロードがどういう問題を引き起こすかわかるはずなんだが。
0221デフォルトの名無しさん2006/09/10(日) 01:28:38
>>216
それだったら、アノテーションにしてもかわらんだろ。

そもそもアノテーションというのは
java.lang.Annotationインターフェースを継承したものなんだから。
0222デフォルトの名無しさん2006/09/10(日) 01:32:25
>>216
> >>176
> 演算子オーバーロードやるならinterfaceにして欲しいような気もする。
> interface 四則演算<T>{ //あるいは更に縛って四則演算<T extends 四則演算<T>> とか
>  T add(T v); T subtract(T v); T multiply(T v); T divide(T v);
> }
> 緩いほうで Hoge extends 四則演算<String> されると、
> hoge + str の意味が、四則演算無しの時と有りの時で
> 文字列連結か演算子オーバーロードかで変わっちゃったり、
> 変わらない場合は演算子の優先順位が面倒だったりしないかな、とか思った。
> 後は .Comparable で <, <=, >, >= 使えるようにするとか……
> でも、これは参照型の ==, != が同じ参照かを比較するのと相性悪いような。
> ついでに

それだと、また新たな問題が出てくるな。
Comparableインタフェースを実装したある奴が作ったクラスではcompareTo()を
不等号演算子にオーバーロードしているが、
Comparableインタフェースを実装してはいるが、他のある奴が作ったクラスでは、
演算子のオーバーロードを一切していなかったとき、それぞれのクラスから
オブジェクトを作って、それら二つのオブジェクトを不等号演算子で比較したとき、
何が起こると思う? C++どころかC#でも抱えている問題なのだが。

JavaはRubyみたいな言語と違って型に強い言語なんだぜ。下手なことをやると
C#と同じように痛い目を見るんだぜ。
0223デフォルトの名無しさん2006/09/10(日) 01:34:15
>>216
それ、かなりいいね。そして、インターフェイスを理解している証拠だ。
0224デフォルトの名無しさん2006/09/10(日) 01:36:31
>>221
言わなくても判ると思ったんだけど
アノテーションの方が自由な演算子オーバーロードが出来そうだよ。

同じinterfaceは複数回継承できないから、
例えばMatrix3D implements 四則演算<Matrix3D>, 四則演算<Vector3D>{...}とか出来ないし。
0225デフォルトの名無しさん2006/09/10(日) 01:37:50
>>217
> >>176
> >問題なのは、このときに自分の定義した+演算子と他人の定義した+演算子が
> >厳密には異なる動作をする可能性があるのが問題
> だからそれはメソッドでも起こる問題だってんだろ。
> 自分が定義したメソッドfoo()と他人が定義したfoo()が異なる動作をするなんてしょっちゅう。

まだわかっていないようだね坊や。
もう一回>>204の最後の方をよくよんでごらん。


> メソッド名がかぶっても問題ないのは、双方が異なるクラスで定義されているからであり、それは演算子でもおなじこと。
> > *演算子(つまりoperator*)には名前が1つしかないのが問題
> > これでは行列型どうしの乗算なのか、内積なのか、外積なのか即、判断ができない
> 複数の動作が考えられるなら、演算子をつかわずすべてをメソッドにするか、または代表的なひとつだけを演算子にしてのこりはメソッドのままにしとけばいい。

それじゃ本末転倒だな。中途半端で、結局混乱を招くし、演算子で定義されていないメソッドのほうを
頻繁に使うことになると、一方の演算子が宝の持ち腐れになってゴミ同様となる。

だから、Javaに無理して演算子オーバーロードなんてつける必要がないんだよ。
そもそも、+演算子を勝手にオーバーロードされたら、toString()メソッドと+がうまく機能しなくなるわな。
オブジェクトをString型オブジェクトと+で連結すると、暗黙のうちにオブジェクトがtoString()メソッドを呼び出して
文字列化するっていうJavaに昔からある機能が、突然使えなくなってはあとあとバグを生み出すもとになりかねないわけだが。

0226デフォルトの名無しさん2006/09/10(日) 01:41:22
Javaでは 四則演算<Matrix3D>と四則演算<Vector3D>は異なるクラスとして
扱われるのだが。
0227デフォルトの名無しさん2006/09/10(日) 01:41:50
A<Integer>はA<?>のサブクラスっていうようにな
0228デフォルトの名無しさん2006/09/10(日) 01:42:43
>>222
あぁ悪い。>>216の中段は、既存の参照型の ==, != を再定義しない前提で書いてる。

既存の参照型の ==, != を再定義できるようにするって方向もあるのかもしれないけど、
個人的な意見としては、参照型の ==, != を再定義すると躓く奴が多そうなので勘弁して欲しいかな。
それでなくても質より量な感じで投入されてくる人多いし。
技術的理由というより、政治より(?)な理由だけど。
0229デフォルトの名無しさん2006/09/10(日) 01:45:35
>>228
他人に逃げるなといっときながら、
>222のレスについてはちゃんと読まずに誤魔化して逃げかw
0230デフォルトの名無しさん2006/09/10(日) 01:51:40
>>204
自分の事しか言わないこういうトンデモちゃんが電波の代表なんだろうな。
上手くぼろを出さないように知ったこというだけで、適当にあしらわれて終わりなのに、
本人はそれにまったく気がついていない・・ ケケケ
02311572006/09/10(日) 01:58:52
>>226
ダウト。基本的に別の型であるというのは確かにそうなんだが
Java Genericsの実装がErasure方式なせいで、メソッドのオーバーロードやインタフェース
の実装や例外クラスなどいくつかのケースで、同じクラスとみなされてしまう
>>224は自分じゃないが、
> Matrix3D implements 四則演算<Matrix3D>, 四則演算<Vector3D>{...}とか出来ないし。
と言っているのは、もしこれがコンパイルできると、型パラメータ情報が消去されて、
Matrix3D implements 四則演算, 四則演算{...}と等価になってしまい、クラスファイルの
仕様に反してしまうから。
0232デフォルトの名無しさん2006/09/10(日) 01:58:53
>>230
Javaを知っている程度で実際は大して使えないSEなんじゃないか。

それも給料低いわりには重労働で時間拘束もひどい。

重圧に耐えられず、ここで八つ当たりしてるんじゃねぇ・・

Java関連のスレに頻繁に顔出してるしな。

そういう奴は、どこでも同じだし、そのうち過労で死ぬんじゃねぇの?ケケケ
0233デフォルトの名無しさん2006/09/10(日) 02:03:20
>>226
erasureのせいで実行時は四則演算<Matrix3D>と四則演算<Vector3D>は
同じ型に成り下がるので、>>224のはコンパイルエラーになる。

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.5
> A class may not at the same time be a subtype of two interface types
> which are different invocations of the same generic interface (§9.1.2),
> or an invocation of a generic interface and a raw type naming that same generic interface.
0234デフォルトの名無しさん2006/09/10(日) 02:07:19
>>230, >>232
どうしようもなくなると語尾にケケケとつて
サクラな自作自演乙
ストラウストラップがいってたことってなんだよを連呼して
しつこく演算子オーバーロードに拘って八つ当たりしていたのは一体誰だろうねw
0235デフォルトの名無しさん2006/09/10(日) 02:13:58
>>234

俺達の合言葉にケチつける気か、お前は?

お前の気に食わないことにイチイチ脊髄反応している時点で、
お前が粘着ザコなんじゃないか? ケケケ

一回氏ね! ケケケ
0236デフォルトの名無しさん2006/09/10(日) 02:21:42
>>215
> クロージャも導入されたら、とたんに手放しでマンセーするんだろうなあ。
クロージャの出来が良ければ遠慮せずにマンセーするよ。
それで何か悪いの?
0237デフォルトの名無しさん2006/09/10(日) 02:22:44
>>226
matrixとvectorは数学では同じように扱ってもプログラム上では両者は違うでしょ?
それを型で表していると考えると納得できるかな?
0238デフォルトの名無しさん2006/09/10(日) 02:28:58
>>236
散々悪口だけ言って、生意気なんだよ。
そういうのは悪い奴の典型例で一回氏ね!

ところで、口だけでお前は一体何が出来るんだ? ケケケ
0239デフォルトの名無しさん2006/09/10(日) 02:31:48
>>238って、ひょっとしてツンデレなのかも? と思ってしまった。
0240デフォルトの名無しさん2006/09/10(日) 03:32:16
大昔のgoslingの演算子オーバーロードに関する見解を見つけて見た。
http://web.archive.org/web/19990202050412/http://java.sun.com/people/jag/FP.html#overloading

例があがってるのは、
・二項演算子は右辺と左辺を交換可能である事もあるけど、
メソッド呼び出しはそうじゃないから、例えば左辺にプリミティブが現れた場合
1/m を m.divideReverse(1) に変換する、みたいにしないといけない。
交換可能ってだけなら @Commutativeみたいなアノテーションつければ良いような気もする。
1/m を m.divideReverse(1) ってのはそれだけじゃ無理だけど。

・今更==をequals()の呼び出しにできない。
immutableな型なら問題にならないって書いてあるけど、良いのかな?
mutableな型よりは問題少なそうだとは思うけど。

・構文解析の問題。
例えば (p)+q みたいに単項+演算子付きのqをp型にキャストするとも、
qと括弧付きのp との加算とも取れる曖昧な式が出現した時に、
今までのJavaではプリミティブ型かどうかでチェックしてたけど、
他の方法でチェックする必要が出るらしい。
良くわからんけど互換性を考えつつ別のチェック方法考えるってのが大変なんかな?
0241デフォルトの名無しさん2006/09/10(日) 03:45:48
>>240
最後のって、単純に可視な変数かどうかでチェックすれば良いような気もするけど……

それじゃダメなんか?
0242デフォルトの名無しさん2006/09/10(日) 04:22:09
>>239


ケケケ

0243デフォルトの名無しさん2006/09/10(日) 09:15:47
クロージャや関数型は望んでる奴が沢山いるだろ。
enumやジェネリクスだってそうだった。

けど演算子オーバーロードは違う。
「混乱するなら使わなきゃいいだけ」
って言うにはあまりにも厨房の
「俺って出来る奴」的プライドをくすぐる機能だ。
02441572006/09/10(日) 09:44:23
>>243
俺も別に今のJavaに無理して演算子オーバーローディングを導入する必要
は無いと思ってるが

> 「混乱するなら使わなきゃいいだけ」
> って言うにはあまりにも厨房の
> 「俺って出来る奴」的プライドをくすぐる機能だ。

はあんまりだぜ。確かにC++では厨房が変な使い方をした場合も多かっただろうけど、
実際に有用な局面もそれなりにある。例えば、事務処理系のプログラムや数値計算系のプログラム
などを多く書く人にとってみれば、BigDecimalや行列などの演算をメソッド呼び出しで書くなんて
耐えがたいだろう。それがどれだけ嫌かはintやdoubleなどのプリミティブ型でも+などの演算子を使う
ことが許されず、全部をadd,subtractなどのメソッド呼び出しで書かなければいけないとなったときの
ことを想像してみるとわかりやすいだろう。
他にも、DSL(Domain Specific Language)を作るのにも演算子オーバーローディングは有用。
見たことのある例だと構文解析器を構築するためのフレームワークを言語内に構築するとか。
んなもんParser Generator使えばいいじゃないかと言うかもしれんが、Parser Generatorは
構文定義中に埋め込まれたプログラムが変でも関知しないせいで、生成されたコードを
コンパイルする段階になって初めてエラーが報告されるなど、面倒な部分がある
0245デフォルトの名無しさん2006/09/10(日) 11:30:35
javaのenumは、stateA | stateBが出来なくて使いづらい。
これも演算子オーバーロードなのかもしれんが。
EnumSetじゃね…。
0246デフォルトの名無しさん2006/09/10(日) 11:36:07
なるほど>>245
0247デフォルトの名無しさん2006/09/10(日) 11:47:34
>>245
Javaのenumでそんなことは出来ないだろ。
public enum State {
HOGE {
public void func() { ... }
},
PIYO {
public void func() { ... }
};
public abstract void func();
}
とかで、
State state = State.HOGE State.PIYO;
state.func();
はどうなるの?どっちも呼び出す?
そもそもそういう用途にはenumを無理して使うより、
public static final intでいいと思うんだが。
0248デフォルトの名無しさん2006/09/10(日) 12:12:45
>>245
それの解決は、演算子オーバロードというよりも
EnumSetのシンタックスシュガーで逃げる解決方法がいいと思うな・・・

演算子の意味はやっぱり固定にして欲しいし
>>244 で上げてる問題の解決には
演算子オーバロードにこだわる必要ないしな
プリプロセッサで何とかなる程度だから、マクロでもいいんじゃない?
+、*とかの既存の演算子を使う事はないと思う
まぁ、問題を演算子オーバロードの是非からマクロの是非にすり替えてるだけかもしれんが。
0249デフォルトの名無しさん2006/09/10(日) 12:16:40
>>235
ついに「死ね」と言いだしたか。
随分短気だな死者プチュwww
0250デフォルトの名無しさん2006/09/10(日) 12:17:34
>>239
いや、こいつはC#って死滅しちゃうの?スレで大暴れしていた
あのバカM$厨だよw
0251デフォルトの名無しさん2006/09/10(日) 12:23:35
>>241
P p = new P(??????); //?には何かが入るとする。
Q q = new q(??????); //?には何かが入るとする。

p+=((((((((((-p++)))))))))*+q*(p*(q/(p*(q/(p+q))))

こんなのが出た場合、ちゃんと解析できるかな?

0252デフォルトの名無しさん2006/09/10(日) 12:24:13
>>243
> クロージャや関数型は望んでる奴が沢山いるだろ。
> enumやジェネリクスだってそうだった。
> けど演算子オーバーロードは違う。
> 「混乱するなら使わなきゃいいだけ」
> って言うにはあまりにも厨房の
> 「俺って出来る奴」的プライドをくすぐる機能だ。

でたでた、うぬぼれC#厨お得意の機能w
■ このスレッドは過去ログ倉庫に格納されています