【肥大化】C++ を見捨てたヤシ 2人目【複雑化】
- 1 :デフォルトの名無しさん:2008/05/17(土) 21:07:51
- 前スレ
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
- 272 :デフォルトの名無しさん:2008/06/06(金) 23:44:16
- 確かにC++の複雑さに困っている人はいるのだろう
でもその人たちは他の言語では困らないの?
どの辺が境界なんだろう?
分母の差か?
- 273 :デフォルトの名無しさん:2008/06/06(金) 23:59:41
- 一つだけ突出してるから境界もクソも無いわな
- 274 :デフォルトの名無しさん:2008/06/07(土) 00:03:57
- でもケーニッヒルックアップだけでしょう?
- 275 :デフォルトの名無しさん:2008/06/07(土) 00:07:16
- 俺はすべての元凶はC++そのものじゃなくてプリプロセッサだと思ってる
- 276 :デフォルトの名無しさん:2008/06/07(土) 00:48:19
- >>272
肥大化するのは別にかまわないんだが、その都度「変態的」な
構文が追加されていってるのが問題なんじゃあるまいか?
lisp あたりはどんなに言語拡張しても基本は S 式で何とか
なってるじゃん
- 277 :デフォルトの名無しさん:2008/06/07(土) 06:19:37
- >>272
少なくとも、言語仕様レベルで
深入りしないようにしようという判断をした(テンプレート周りだが)のはC++が初めてだ。
普通にコードを書くのにEffectiveほにゃららの通読必須ってあたりで何か狂ってるんですよ。
ゲーム屋だけど、本当に代わりがないから使ってるに過ぎない。
- 278 :デフォルトの名無しさん:2008/06/07(土) 10:07:44
- >少なくとも、言語仕様レベルで
>深入りしないようにしようという判断を
>
>ゲーム屋だけど、本当に代わりがないから
深入りしなかったおかげでC++も使えるんだろ。
言語が今以上に複雑でコンパイラの実装が困難だったら
まともなサポートが得られず、
単に、C言語だけが選択肢になる。
言語の複雑さが仇になるのは、
主にアホが書いたソースをメンテするケース。
まともなメンバーで作る分には問題無い。
- 279 :デフォルトの名無しさん:2008/06/07(土) 10:27:03
- そして、そこでいう「アホ」程度ならそこら中にいるので、
つまりC++の複雑さはそこら中で「仇になる」わけだ。
- 280 :デフォルトの名無しさん:2008/06/07(土) 10:29:22
- >>272
分母の差かどうか知らんが、色々と選択してC++が最適だと思うケースに
C++を使う言うだけだと思うが。困ると言うよりかは要求に答えてくれるか?ってのが
重要だろうに。
漏れの職場だと自分だけの書きなぐり使い捨て速度はそれほど必要ないケースだと
Python使うし、ある程度みんなが使ったりメンテが重要だったりするケースはJavaで、
変態的(?)かつ、動作環境べったりでパフォーマンスが要求されるときにC++って
使い分けてる。
- 281 :デフォルトの名無しさん:2008/06/07(土) 10:30:16
- アホばかりの会社の問題を言語の問題にしたいわけですね、わかります。
- 282 :281:2008/06/07(土) 10:31:38
- >>279
- 283 :デフォルトの名無しさん:2008/06/07(土) 10:44:29
- >>282
現実にそこら中にいるのだから、
「会社の問題であって言語の問題ではないんだァ!」
とか押してもね。
1万人に1人が怪我をする道具で怪我をしたなら、流れ的にそいつの不注意とか不運の問題になるけど、
これがたとえば3人に1人が怪我をするとなると、この道具危ないよねっていう問題になってくる。
君個人が有能だったり、とても優れた職場しか知らずその辺りが当たり前だと思って生きてるなら、
それは素晴らしいことだし、ずっと続くことを祈るけど、その場合残念ながら、君は
「現実を全般的に捉えた話のできない人」ということになる。恵まれすぎている。
- 284 :デフォルトの名無しさん:2008/06/07(土) 10:57:04
- >3人に1人が
IT土方乙w
- 285 :デフォルトの名無しさん:2008/06/07(土) 11:15:01
- いや、たとえの数字に食いつかれてもなぁ・・・。
ていうかなんでそんな目ぇ血走らせてるの? 休日の朝から。
- 286 :デフォルトの名無しさん:2008/06/07(土) 11:16:03
- >>283
教習所にも行かせずに自動車使わせているようなものだな。
教育も何もせず、新人をいきなり実務に入れてそうだ。客も可哀想だ。
それにC++に向いてない奴は他の言語の仕事に、
プログラムに向いてない奴は資料作成/客先対応/
テスト/サポートデスクなどの仕事に回すことも考えるべき。
単にお前さんが悲惨職場しか知らないんだろう。
そんなに問題のある言語なら、これほど広まることもない。
- 287 :デフォルトの名無しさん:2008/06/07(土) 11:16:19
- 今時(?)C++を使うのは「神に選ばれた戦士」的な思い込みがあるのかもしれんが、
現場のPGなんてほとんどドカタだからなぁ。
まあ、とは言え言語の性にするのは美しくないけどな。
やっぱりアホが書いたソースならVBだろうがCOBOLだろうがイヤなモンはイヤだし。
- 288 :デフォルトの名無しさん:2008/06/07(土) 11:17:14
- >>285
>ていうかなんでそんな目ぇ血走らせてるの? 休日の朝から。
自分がそうだからといって、相手もそうだと思わない方がいいぞw
- 289 :デフォルトの名無しさん:2008/06/07(土) 11:19:06
- >そんなに問題のある言語なら、これほど広まることもない。
広まっていないと思うが。
- 290 :デフォルトの名無しさん:2008/06/07(土) 11:27:35
- >>285
察してやれよ。休日の広いフロアーに一人は寂しいぞ。
- 291 :デフォルトの名無しさん:2008/06/07(土) 11:29:36
- Joelの言ってる「5つの世界」でソフトウェアに対する要求も
プログラマの質も随分違うと思う
ttp://japanese.joelonsoftware.com/Articles/FiveWorlds.html
日本だと一番C++が使われてるのって何だ。フリーソフトとゲームか?
昔ならCOBOLやVB、今ならWebやってるような
土方の現場には、そりゃC++なんて要らないでしょ
- 292 :デフォルトの名無しさん:2008/06/07(土) 11:45:40
- 数で言うならC++はフリーソフトとかゲームだろうなぁ。
デバドラとかハードべったりの専用ソフトの現場もC++が普及しているけど、
これもドカタじゃないとか言うのは違うと思うが。
- 293 :デフォルトの名無しさん:2008/06/07(土) 11:52:11
- むしろハード屋さんはCかと思ってた
ゲームみたいに抽象度と複雑性が高い上に性能要求も高い分野で
他に適当な選択が無いからC++なのかな、と
まあ日本にも商用パッケージ一応あるけどな
社内以外で誰も使ってないRDBとかw
- 294 :デフォルトの名無しさん:2008/06/07(土) 12:19:58
- HiRDBだったっけか?
日立に仕事たのむとHP-UXにOracleを納品してくると言うプライドの無さが
ステキだった印象しかないんだが。
伝え聞くところによるとあのドライバの出来の悪さは特筆モノだったようだが。
まあ、これこそドカタが作った見本なのかもしれん。
- 295 :デフォルトの名無しさん:2008/06/07(土) 15:47:27
- 3人に1人が怪我をする様な機械なんて、普通にあるじゃん
自動車なんて、その筆頭だろう
- 296 :デフォルトの名無しさん:2008/06/07(土) 16:06:43
- またたとえの数字に物言う馬鹿が出た。
- 297 :デフォルトの名無しさん:2008/06/07(土) 16:55:15
- 例えになってないから突っ込まれる
それに、ボケられたら突っ込まなくちゃ、ボケた相手に失礼だし
- 298 :デフォルトの名無しさん:2008/06/07(土) 17:16:37
- の割には、まったく突っ込みになってないからなぁ。
新たなボケのつもりなら超つまらないし。
- 299 :デフォルトの名無しさん:2008/06/07(土) 17:23:51
- 自動車のたとえを持ち出すなら、
あっちの自動車(C++)とこっちの自動車(他言語)の事故発生率が
まるで違う、前者の事故多すぎ、というのが、この話への正しい当てはめ方だからな。
>>295が「例えになってないから突っ込まれた」例だよね。
- 300 :デフォルトの名無しさん:2008/06/07(土) 17:26:48
- C++ を仕事で使うのに免許を必要として欲しい。
- 301 :デフォルトの名無しさん:2008/06/07(土) 17:47:28
- >>299
例えがかわっとるw
元の例えに近づけるなら
「四輪車は転ばないから安全、しかし、二輪車は転ぶから危ない」
だろw
- 302 :デフォルトの名無しさん:2008/06/07(土) 18:23:00
- >>301
いいえ。
- 303 :デフォルトの名無しさん:2008/06/07(土) 18:42:10
- >>283
優秀な人材だけが集まる企業なんて無い
ぼんくらを優秀な人材にする企業は有る
優秀な人材をぼんくらにする企業が大多数だけどな
- 304 :デフォルトの名無しさん:2008/06/07(土) 21:53:46
- 他の言語というのはJavaなんかを念頭に置いてる?
Javaはきれいですか?肥大してませんか?
D?
Dはまぁ悪くないか
でも小さいとはいえないな
- 305 :デフォルトの名無しさん:2008/06/07(土) 22:17:01
- 新しい言語が単純なのは当たり前
C++ は D&E を読めば少しは簡単に感じるようになるよ。
なぜそのように設計をしたかを詳しく説明しているから。
- 306 :デフォルトの名無しさん:2008/06/07(土) 22:27:30
- Javaは型のパラメタ化が不十分だからリフレクションとダウンキャストのカオスが必要なんだよな
- 307 :デフォルトの名無しさん:2008/06/07(土) 22:53:00
- >>305
世の中には良い言語設計者と悪い言語設計者がいるのだよ。
どれだけ後から言い訳の本を出しても埋まらない溝がある。
- 308 :デフォルトの名無しさん:2008/06/07(土) 22:54:06
- そういえば C++ のクロージャの構文ってどんなだったっけ?
- 309 :デフォルトの名無しさん:2008/06/07(土) 22:57:10
- >>307
言い訳とかいってる時点で読んでないのが丸わかり。
あるいは、自分が受け入れたくない理由のことを言い訳と言うんだ、と思ってるお馬鹿さんか。
- 310 :デフォルトの名無しさん:2008/06/07(土) 23:20:18
- どんな本を書いても設計が悪いのが覆るわけじゃないからな
敗者の弁なんて誰も読みたくないだろ
- 311 :デフォルトの名無しさん:2008/06/07(土) 23:25:35
- D&Eが出たのは'94年だしもっと古い文献を引用しているよ。
こんなに古いのにJavaの特徴に否定的なのは面白いな。
- 312 :デフォルトの名無しさん:2008/06/07(土) 23:26:01
- それだから人間また同じ失敗を繰り返す。
失敗談から学ぶのもいいじゃないか。
- 313 :デフォルトの名無しさん:2008/06/07(土) 23:26:51
- >>305
>D&E を読めば
C++ を必死に勧める人間はいつもこう言うね。
攻略本を読まないと面白さが分からないゲーム
みたいでアホらしい。まあこの場合は攻略本を
読んでも全く面白味がない訳だが。
- 314 :デフォルトの名無しさん:2008/06/07(土) 23:29:21
- C++の設計が悪いと言う人が想定している設計が良い言語とはなんなんだ
ほんとはC++のどこが悪いのかもわかってないんでしょ?
多分C++以外の言語も理解できないんでしょ?
- 315 :デフォルトの名無しさん:2008/06/07(土) 23:29:59
- なにそのアンサガ
- 316 :デフォルトの名無しさん:2008/06/07(土) 23:31:40
- C++ がロマサガだったら世界はもっとハッピーだったろうなあ
- 317 :デフォルトの名無しさん:2008/06/07(土) 23:32:36
- C++に限らず特定のものを個人の評価に依存する状態で必死に勧める人間は
他人を見下して優越感に浸りたいだけの様な気もする。
- 318 :デフォルトの名無しさん:2008/06/07(土) 23:37:57
- >>314
たぶんHaskellとか言いだすんだろうな。
で、実際にHaskellをバリバリに使ってるかというとそういうわけではない、と。
- 319 :デフォルトの名無しさん:2008/06/07(土) 23:39:40
- 仕事でいまさらVBとかCとか非力な言語使いたくないからC++を薦めてる。C++使って楽しようぜ。
- 320 :デフォルトの名無しさん:2008/06/07(土) 23:39:59
- 攻略本はEffective 〜のほうだろ。
D&Eはどうしたらこんなアレな出来になるかという過程を書いた読み物として
C++知らない、使う気のない人間でも楽しめると思っている。
(俺が初めて読んだのもC++よく分かっていない頃だったし)
これ読んでもC++がどうしようもない言語だという思いは変わらない。
- 321 :デフォルトの名無しさん:2008/06/07(土) 23:42:44
- >>313
つまり、ボクは攻略本を読んでも理解できないほど頭が可哀相、という自己紹介ですね。
- 322 :デフォルトの名無しさん:2008/06/07(土) 23:43:34
- Windows だけで良いなら C++ が良いんじゃないの
熱狂的に勧誘する気が知れないが
- 323 :314:2008/06/08(日) 00:20:08
- やっぱりないんかい!
あんだけ煽ったのに
- 324 :デフォルトの名無しさん:2008/06/08(日) 00:31:47
- >>277
>ゲーム屋だけど、本当に代わりがないから使ってるに過ぎない。
まあそれが現実だよね。
良い物だけを使って仕事ができるならそれが一番だけど。
- 325 :デフォルトの名無しさん:2008/06/08(日) 00:42:54
- C++ には数々の変態的要素があるが、
確かにネイティブコンパイルするタイプの言語で
代替となる言語は存在しない。
D もガベコレのせいで代替とはなれない。
- 326 :デフォルトの名無しさん:2008/06/08(日) 00:49:57
- >>325
そうだよね
マルチタスクOSで走るアプリケーションでもStop The Worldが許容できないケースは結構あるからね
- 327 :デフォルトの名無しさん:2008/06/08(日) 00:58:42
- D&Eとか読んだほうがいいよ
C++のすばらしさを分かりやすく説明しているから
- 328 :デフォルトの名無しさん:2008/06/08(日) 01:07:44
- >>327
俺はそれよりもC++0xの提案が洗練されていくさまを見ると良いと思う
彼らは賢明だしいい仕事をしているよ
予定は遅れてるけどね
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2597.html
- 329 :デフォルトの名無しさん:2008/06/08(日) 01:18:41
- >>325
Dは有力候補ではあるんだけど、仕事で使うのは無理だろうね
- 330 :デフォルトの名無しさん:2008/06/08(日) 02:12:51
- そろそろ C++1x になる日も近いな
- 331 :デフォルトの名無しさん:2008/06/08(日) 03:40:19
- >>315
アンサガと違ってコレクターはいない。
- 332 :デフォルトの名無しさん:2008/06/08(日) 05:20:31
- 俺はC++と心中するぜ
あばよ、達者でな
- 333 :デフォルトの名無しさん:2008/06/08(日) 05:33:57
- 無茶しやがって…
- 334 :デフォルトの名無しさん:2008/06/08(日) 10:25:10
- >>330
大丈夫、まだC++0Aから0Fまで(ry
- 335 :デフォルトの名無しさん:2008/06/08(日) 10:31:10
- 日本が独自に拡張を行ったC++平成がリリース
- 336 :デフォルトの名無しさん:2008/06/08(日) 14:04:35
- EC++の再来か
- 337 :デフォルトの名無しさん:2008/06/13(金) 00:02:48
- Mozilla 素敵
http://developer.mozilla.org/ja/docs/C%2B%2B_Portability_Guide
- 338 :デフォルトの名無しさん:2008/06/13(金) 00:29:19
- ほほう、面白いな。
でも、あまり古いコンパイラに束縛されるのも考え物だな。この辺は臨機応変かな。
- 339 :デフォルトの名無しさん:2008/06/13(金) 10:51:15
- >>337
C++大好き派なんだけど、こういうのが逆に一番効くな(´Д`;)
これをもって、「こんなに制限されるなら、
初めからCで書いた方が良くね」って言われたら中々反論し難い・・・。
俺がC++の開発でいつもおかしいと思ってるんだけど、
何でC++ソースからネイティブバイナリに一気に変換するんだろうか・・・。
cfrontは例外が実装(Cのソースで妥当なオーバヘッドで)出来なくて
逝ったらしいけど、各プラットフォームのコンパイラが、
例外に対応した C+0.1 くらいの中間言語を用意すれば、
開発者PC上で C+0.1 までは変換しておける。
そうすればnamespace、テンプレート、実行時型情報、inline最適化などは、
開発者PC上のコンパイラ側の問題になる。
役割分担せずにフルスペックでやろうとするから、
こんなアホな状況になったと思うんだよな〜。
- 340 :デフォルトの名無しさん:2008/06/13(金) 11:09:03
- 表現が変だったので訂正。
各プラットフォーム用のフルスペックのC++コンパイラを用意せずに、
C+0.1 くらいの中間言語(禿げ達で策定)のコンパイラだけ用意すれば良い。
ってことね。
- 341 :デフォルトの名無しさん:2008/06/13(金) 11:12:09
- C++の実行形式作成には、
linkerもC++対応が必要なことは理解できてる?
あまりよく知らないcfrontの話は混ぜないで考えた方がいいよ。
- 342 :デフォルトの名無しさん:2008/06/13(金) 11:18:34
- 具体的にどんなの?
名前マングリングとかの話なら、
必要最小限を中間言語で扱えばいいし。
リンカも含めても良いけど、
フルスペック実装しようとするのが間違いって俺は言ってる。
- 343 :デフォルトの名無しさん:2008/06/13(金) 11:19:39
- 教えて貰う態度じゃないw
- 344 :デフォルトの名無しさん:2008/06/13(金) 11:27:41
- >>343
煽りに来ただけなら、
別に教えて頂かなくても結構だよ。
- 345 :デフォルトの名無しさん:2008/06/13(金) 11:54:40
- マングルはリンカのC++協力必要ないだろ。
そのためにフラットな名前にマッピングしてるんだから。
- 346 :デフォルトの名無しさん:2008/06/13(金) 20:04:02
- C++に必要だったのはCのリンカやコンパイラ資産を使えること、
だから今言ってもしょうがない。
中間言語に変換するコストだって20年前なら馬鹿にならなかっただろうし、
そんな言語をもう一つ作るような手間のかかることしてたらISO規格になれず
マイナー言語で終わっていただろう(と言うような事をD&Eでは繰り返し述べている)。
つーか結局の所それなんてC++/CLI?ってことになるんじゃ。
- 347 :デフォルトの名無しさん:2008/06/13(金) 21:09:13
- >>346
流石に斜め読みし過ぎです・・・。
最初のC++コンパイラcfrontにとって
実質C言語を中間言語とするものだった。
でも例外を実装しようとしたとき、
スタック巻き戻しなどがC言語の表現では出来なかった。
(コスト度外視すればもちろん出来るけど)
そこで、直接ネイティブコードを作ることで
問題を解決したんだけど、
その方法でなく、C言語に必要最小限の拡張を加えたものを
「cfrontのために」用意する方法でも良かったんじゃないかと。
そうすればマイナーな環境において、
「完全なC++コンパイラ」を用意しなくても、
「ちょっと拡張されたCコンパイラ」を用意するだけで
済んだのでは、という話。
今何か言った所で現実が変わることは無いってのは
分かってるけどね。
あと、D&Eで書かれてたのは、
あの時代に理想の言語を作ろうとしてたら、の話だよね。
C++/CLIは現実主義ベースだと思うけど。
- 348 :デフォルトの名無しさん:2008/06/13(金) 21:14:29
- LLVM の C++ は一旦 C にコンパイル出来るみたいね
ストラウストラップには無理でも他の人間がやれば出来る
- 349 :デフォルトの名無しさん:2008/06/13(金) 21:22:32
- >>348
> LLVM の C++ は一旦 C にコンパイル出来るみたいね
病院行ってこい。
- 350 :デフォルトの名無しさん:2008/06/13(金) 21:23:11
- 何言ってんの?
- 351 :デフォルトの名無しさん:2008/06/13(金) 21:33:11
- 試したことないから、まるで実用にならないの知らないみたい。
- 352 :デフォルトの名無しさん:2008/06/13(金) 21:35:16
- 何言ってんの?
- 353 :347:2008/06/13(金) 22:02:14
- >>348
ググって読んでもどんなツールかいまいち分からなかった。
薄くラップしたバイナリ作る・・・みたいな感じ?
ともかく、どんなCのソース出すか興味あるんで使ってみるよ。
- 354 :デフォルトの名無しさん:2008/06/13(金) 22:21:24
- >>351
専ブラどれ使ってるの?
- 355 :デフォルトの名無しさん:2008/06/13(金) 22:40:15
- >>353
C++→Cじゃなくて、
C++→LLVM→Cだからひどいソースだよw
- 356 :デフォルトの名無しさん:2008/06/13(金) 22:57:45
- そういう話じゃないだろ
- 357 :デフォルトの名無しさん:2008/06/13(金) 23:05:30
- 例外を有効にすると壊滅的に遅いからデフォールトはオフ。> LLVM
巻き戻しポイントで常にsetjmp。
- 358 :デフォルトの名無しさん:2008/06/13(金) 23:17:17
- http://llvm.org/docs/FAQ.html#translatec++
そう書いてあるね。ストラウストラップごめん。
今度はもう少しまともな言語作ってくれな。
- 359 :デフォルトの名無しさん:2008/06/13(金) 23:26:10
- ちょっと疑問に思ったんだが、最初C++はCのトランスレータとして
誕生したよな。
そんで例外処理がCだけでは記述不可能なのでネイティブコン
パイラが作られたと聞いてるんだが、LLVMは例外処理をどのように
吐き出してるの?
- 360 :デフォルトの名無しさん:2008/06/13(金) 23:30:41
- あ〜やっぱ遅いのか・・・。残念。
まぁ、手があるならcfrontでやってるはずだしね。
>>359
setjmp/longjmp
コスト無視ならsetjmp使わなくてもどうにでも実装出来るよ。
- 361 :デフォルトの名無しさん:2008/06/13(金) 23:47:48
- >>360
サンクス。やっぱそれしかないよね。
MinGW用のバイナリが出てるみたいだから遊んでみるかな
- 362 :デフォルトの名無しさん:2008/06/14(土) 07:05:24
- LLVMのC backendは、
Cへのトランスレータだけだった頃のcfrontと同じリンク時の問題抱えているよ。
LLVMは言語独自の機能のロードタイムサポート持ってるんだけど、
ネイティブコンパイラはcrt0.sなんかも使ってかなりトリッキーな事してるから。
しかしこの話題はスレ違いではw
- 363 :デフォルトの名無しさん:2008/06/14(土) 09:17:14
- そんなに面倒という話を聞くと、Windowsが例外処理を直接提供するというのも頷ける。
- 364 :デフォルトの名無しさん:2008/06/14(土) 09:48:29
- ネイティブ・コンパイラや
例外の機能を持っているC--を中間言語に使うなら何も問題ない。
- 365 :デフォルトの名無しさん:2008/06/14(土) 11:04:32
- デクリメントかよw
- 366 :デフォルトの名無しさん:2008/06/14(土) 11:20:59
- これだな。
http://www.cminusminus.org/
LLVMもCに変換して実行しないなら、
C++のコンパイラ何の問題もない。g++改だし。
- 367 :デフォルトの名無しさん:2008/06/14(土) 20:48:15
- 環境に応じて言語が拡張していくものはすきじゃないな。
- 368 :デフォルトの名無しさん:2008/06/14(土) 21:22:57
- 環境って?
いや、言語が拡張ってことは、
所謂OSとか処理系とかのこととは違うのかなって思って。
- 369 :デフォルトの名無しさん:2008/06/14(土) 21:31:32
- >>367
環境に応じて拡張されるのはライブラリで、言語仕様は変更しない。C++はマジでそれを実践している。
文字列のクラスを例にすると、メモリが潤沢な環境ではstd::stringを使い、メモリの少ない組み込みでは社内ライブラリの文字列クラスを使うなど選択できる。
- 370 :デフォルトの名無しさん:2008/06/14(土) 22:48:21
- allocatorいじるとか。
- 371 :デフォルトの名無しさん:2008/06/14(土) 23:00:42
- つきつめていくと、もう人が複雑雑多な文法を覚えて
ちまちまコード書くという、非生産的作業を繰り返す
のではなく、それは機械にやらせて人間は仕様だけ
考えるというようにならなきゃいけないんだろうな
- 372 :デフォルトの名無しさん:2008/06/14(土) 23:44:32
- >>371
すると、もっと複雑な仕様を人間がちまちま書くことになって、今までどおりになるんだろな。
- 373 :デフォルトの名無しさん:2008/06/15(日) 02:22:37
- >>367
hosted / freestanding environmentのことかな?
- 374 :1/2:2008/06/15(日) 09:47:18
- 昔々、Sunにとある厨が居た。
彼はC言語の研修でポインターでつまづくような無能で、無論C++など理解出来なかった。
プログラマーとしては全く使い物にならんということでネットワークエンジニアとして使われていた。当然役には立たなかったが、サーバー運びや配線や小間使いぐらいは出来た。
この世にポインターがあるから自分がそんな境遇に陥ったのだと不満を募らせた彼はポインターを憎悪し、ポインターの無い言語があればいいのに、と夢想するようになった。
彼はその夢想言語をJAVAと名付け陳腐な企画書を出したが、すべて無視された。
そんなある日、どうせ役には立たないんだからと、しつこいNetscape社の営業を追い払う仕事を任された。もちろん権限は一切なく、ただNetscape社の営業の話相手をし、すべてを断るだけの仕事だ。
彼は毎日のようにNetscape社の営業と無駄話をした。彼にとってそれは、愚痴や不平不満をこぼす絶好の機会だった。
Netscape社の営業は当然のように彼に同意した。彼の境遇に同情し、彼の才能を認め、褒め称えた。
そして誰も耳を傾けなかった夢想言語JAVAの話になるとNetscape社の営業は強い興味を持ち、ブラウザーに搭載したいと言い出した。当時のNetscape社は、動きのあるページを作る案を求めていた。
夢想言語JAVAが現実のものになる。彼は天にも昇る気持ちになり、全面的に協力を申し出た。が、やはり何の役にも立たなかった。すべての設計、策定、実装はNetscape社によって行われた。
Netscape社は、夢想言語JAVAを「何処でも全く同じに動く言語」としてブラウザーに搭載しようとしたのだ。
これを聞いて驚いたのはSunの役員達だ。直ちにNetscape社と交渉し、JAVAはそもそもSunのものであることを主張し始めた。
交渉の結果夢想言語JAVAの最初の実装はJavaScriptと改名することになり、SunのJAVAとは独立したNetscape社の言語となった。
- 375 :2/2:2008/06/15(日) 09:47:49
- Sunは直ちに「何処でも全く同じに動く言語」の現実性を調査し、仮想マシンを使うことで可能であることを検証した。
また夢想言語JAVAの詳細を厨に尋ね、規格をまとめ……ようとした。というのは、厨の頭の中には「ポインターを使わない」の他には支離滅裂な妄想以外何も無かったからだ。
役に立たない彼を「夢想言語JAVAを広める為の広報」に追い出し、夢想言語JAVAではなく現実的なJAVA言語の設計が行われた。
だが現実的設計にはいろいろと難があった。その度に開発部は厨に尋ね、その意向を可能な限り反映する努力を行った。しかし無能な厨の意向を反映することは困難を極めた。
その中で最も大きな障害となったのが、多重継承の禁止である。
未だにSunは公式に認めていないが、JAVAが多重継承を禁止する決断をさせたのは、実はMicrosoftの寄与するところが大きかった。
Microsoftは既にMFCとCOMによって多重継承が抱える問題を解決していたからである。
その後も厨は(何度出入り禁止を喰らっても)設計に口を出し、そして開発部はその意向を可能な限り反映する努力を行ない続けた。
特に厨が主張するコーディング規約は支離滅裂を極め、ゴスリンは「それまでに書かれたコードを書き直す量が最も少なくなるコーディング規約」をまとめる必要に迫られた。
この時にまとめられた何の意味も無いコーディング規約は後に、それを知らなかった企画部によって改めてまとめられJAVAの標準のコーディング規約として発表された。
ゴスリンはこの時の心境を「JAVAが最高だと生涯言い張り続ける覚悟を決めた」と述懐している。
厨は熱心に広報活動を行っていたが、役に立ったのは最初だけだった。すごい言語が出来る、ということを印象付けた後は、何の役にも立たなかった。
開発には近寄ることすら許されず、広報からは役立たずの烙印を押された。彼は再びネットワークエンジニアとして保守管理部に戻った。
今では彼は毎日何百ものLEDを見張って、消えたらそれに対応するハードディスクドライブを交換する仕事をしていると言われている。名前は記録されていない。
- 376 :デフォルトの名無しさん:2008/06/15(日) 10:38:46
- ハイハイワロスワロス
〃∩ ∧_∧
⊂⌒( ・ω・)
\_っ⌒/⌒c
⌒ ⌒
- 377 :デフォルトの名無しさん:2008/06/15(日) 11:04:52
- >>374>>375
妄想怖えーよ
- 378 :デフォルトの名無しさん:2008/06/15(日) 11:41:05
- >>374-375
おもしろい妄想だなw
- 379 :デフォルトの名無しさん:2008/06/15(日) 12:04:58
- >>374-375
ポインターでつまづく奴が、
ポインターの概念だらけのJavaを作るのは矛盾してるだろw
つーかjavaの前身のOak涙目w
- 380 :デフォルトの名無しさん:2008/06/15(日) 13:22:01
- まぁポインターなんて使わなくて済むなら
そっちの方が良いにきまってる
- 381 :デフォルトの名無しさん:2008/06/18(水) 09:08:10
- >>374>>375
ポインタの概念を理解できていないのは、むしろお前だ。
- 382 :デフォルトの名無しさん: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++プログラマからしたらデフォルトが仮想関数だったら不便極まりないよ
- 390 :デフォルトの名無しさん:2008/06/24(火) 20:19:33
- > デフォルトでオーバーライド可能
いかにも馬鹿が言いそうなキモ仕様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というんじゃない?
- 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()をどう書くの?
- 404 :デフォルトの名無しさん:2008/07/03(木) 03:22:11
- intの交換にtmpてどんな初心者だよ
- 405 :デフォルトの名無しさん:2008/07/03(木) 04:11:45
- aとbが同じアドレスかどうかをチェックするぐらいなら汎用的な方法でいいと思う。
- 406 :デフォルトの名無しさん:2008/07/03(木) 06:06:10
- >>404
どうやるの?
- 407 :デフォルトの名無しさん:2008/07/03(木) 06:56:38
- このネタ定期的に見るな
定番過ぎて逆に知られてないのかね
- 408 :デフォルトの名無しさん:2008/07/03(木) 07:08:03
- >>407
>>405の定番の指摘の後でバグ付きのソース出すとは勇気あるなw
- 409 :デフォルトの名無しさん:2008/07/03(木) 10:50:20
- 参照渡しがあれば、ポインタはなくともswap()は書ける
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のオブジェクト変数が、
実質的に演算不可のポインタであることが分かると思います。
- 411 :デフォルトの名無しさん:2008/07/03(木) 15:06:44
- >>410
> Javaのオブジェクト変数が、
> 実質的に演算不可のポインタであることが分かると思います。
そういうあやふやでいい加減な理解はドブに捨てたほうが良い。
A a = new A();
A b = a;
とするとき、
bはaを指しているのではない。bとaが同じオブジェクトを指しているだけだ。
Javaにはポインタは存在しないから、別の変数を参照する方法は存在しない。
Perlのリファレンスもポインタとは違うものだが、別の変数を指すことは出来る。
- 412 :411:2008/07/03(木) 15:19:21
- まあ、Javaのobject変数がobjectのinstanceへのポインタのようなものであり
そのように実装されている、というのは正しい。
ただしそれは言語の実装詳細であって、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/ポインタ_(プログラミング)
- 415 :デフォルトの名無しさん:2008/07/03(木) 16:15:54
- >>414
えーと、どっからごっちゃにしてるという話が出てくるんだ?
別に論理的に任意な位置情報(無効なものを含む)を自由に指せないからとか
演算が出来ないからJavaにはポインタが無いと言ってるんじゃないよ。
単純に「他の変数を指す」方法を提供していないからポインタが無いと言ってるの。
それは実際にはポインタよりはstrictなリファレンスで出来ることだが、
要するにJavaはリファレンスすら提供していないのよ。
- 416 :デフォルトの名無しさん:2008/07/03(木) 16:17:05
- >>411
そういうあやふやでいい加減な理解は
ドブに捨てたほうが良いと思います。
A b = a;
とするとき、
aに入っているのがポインタとしての値だからこそ、
bとaが同じオブジェクトを指すようになるわけです。
- 417 :デフォルトの名無しさん:2008/07/03(木) 16:19:11
- >>416
そんなことは分かった上で、「aと同じものを指す」方法はあるが、
「aを指す」方法は無いからポインタは無いと言っているわけだが。
アホですか?
- 418 :デフォルトの名無しさん:2008/07/03(木) 16:25:17
- 繰り返すが、
言語内部の実装でポインタが使われていることと
言語仕様がポインタを提供していることは全く別の問題だ
Javaは言語仕様としてはポインタを提供していないし、
前者をもって、その言語がポインタを提供しているとは間違っても言えないし
言わない
そういうことで言うのなら、LISPにもBASICにもポインタはあるのだろうよ
- 419 :デフォルトの名無しさん:2008/07/03(木) 16:26:55
- ポインタ=アドレス演算子ですか。そうですか。
アホですね。
- 420 :デフォルトの名無しさん:2008/07/03(木) 16:29:26
- >>419
別にアドレス演算子である必要は無いだろ
抽象的には、リファレンスは束縛されている別の名前に対するエイリアスであれば
良い。つまり、メモリアドレスとは何の関係も無い話だ
そして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
- 422 :デフォルトの名無しさん:2008/07/03(木) 16:36:14
- >>421
それ、内部的にポインタで実装されている「参照型」というカテゴリの型が
存在します、というだけだろ
- 423 :デフォルトの名無しさん:2008/07/03(木) 16:41:06
- おまいら、話の発端って
>>374-375のポインタが「理解出来ない」奴がjavaを作った
というネタに対して
>>379-381のようなポインタの概念はあるからそれは無理
ってツッコミじゃないの?
- 424 :デフォルトの名無しさん:2008/07/03(木) 16:47:11
- 見たいものしか見えないのな
- 425 :デフォルトの名無しさん:2008/07/03(木) 16:59:08
- つまり、Javaのobject変数は、有効な object instanceを指すか、
「何も指さない」かの二択の、非常に限定されたreferenceなんだよ
「ポインタ」ではない
- 426 :デフォルトの名無しさん:2008/07/03(木) 17:17:53
- ポインタとポインタ演算の違いが分からない奴には、
何言っても無駄のようだな。
- 427 :デフォルトの名無しさん:2008/07/03(木) 17:20:11
- 演算ができないだけでなく、
・別の名前(変数)を指せない(その程度のindirectionの手段するら提供していない)
・無効なものを指せない
こんなものを「ポインタ」と呼ぶことこそ強弁だろ
- 428 :デフォルトの名無しさん:2008/07/03(木) 17:27:19
- >演算ができないだけでなく
演算が出来ないからだよ。
アドレス演算子も文字通り演算だ。
>無効なもの
null
- 429 :デフォルトの名無しさん:2008/07/03(木) 17:29:31
- >>428
nullは「無効なものを指している」のではなく、「何も指していない」ことを
示しているんだよ
それと、C++やPerlのリファレンスぐらい知って語ってるのか?
アドレス演算子が無くとも別の名前に対するエイリアスは作れるだろうが。
Javaでは作れないけどな。
というか、エイリアシングの問題を避けるために、そのようなことは
出来ないようにしてある。
- 430 :デフォルトの名無しさん:2008/07/04(金) 02:08:53
- なんか「Javaを見捨てた香具師」スレかと思たw
その争点がポインタってのも面白いな
いや煽り地味てしまったが、俺のような三下には興味深い話題です
- 431 :デフォルトの名無しさん:2008/07/04(金) 06:29:36
- もう分かってるのだろうけど、争点がずれてるし。
・JAVAも(内部で)変数をポインタで指している
・JAVAは(言語仕様でCのような)ポインタをサポートしてない
暗黙の前提条件は忘れて、双方折れるべき。
- 432 :デフォルトの名無しさん:2008/07/04(金) 07:11:57
- >>427
> ・別の名前(変数)を指せない(その程度のindirectionの手段するら提供していない)
これは>>429の言うエイリアスですが、
これはCのポインタもPascalのポインタも出来ません。
たぶん言葉を間違えているのだと思いますが。
変数のアドレスがファーストクラスのオブジェクトであることを言いたいのでしょう。
- 433 :デフォルトの名無しさん:2008/07/04(金) 10:19:34
- JAVAの文法は分からないが
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が初期化されてないからエラー)
- 435 :デフォルトの名無しさん:2008/07/04(金) 10:51:08
- それは、困ったちゃんだなぁ
b.x = 10;
としたら
a.xも10ってなられると、使い道が無いじゃん
JAVA使えねぇ
- 436 :デフォルトの名無しさん:2008/07/04(金) 10:59:42
- >>431
記号表では変数をポインタで指しているだろうが、
ボックスモデルのことを言っているのなら、変数がオブジェクトのインスタンスを
指していると言うべきじゃないのか
それと、あんたの主張は俺の主張と全く同じものに思えるのだが、
どう「折れ」ればいいんだ
>>432
うん、ちょっといい加減過ぎた
Cのような言語はシンボルテーブルの名前を弄れるわけではないし
シンボリックリファレンスとハードリファレンスを混同しているような
言い方になったな
> 変数のアドレスがファーストクラスのオブジェクトであることを言いたいのでしょう
ポインタといえば普通はそのようなものを指すと思うんだが、違うのか
「アドレス」でなくとも、何らかの形で変数のlvalueが扱えれば良いんだが
Javaはそのような手段を提供していない
単に参照型がボックスモデルで実装されているというだけで、
そんなことを言ったらLispのconsセルだってそうだろう
- 437 :デフォルトの名無しさん:2008/07/04(金) 11:31:53
- >>436
> ポインタといえば普通はそのようなものを指すと思うんだが、違うのか
つ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は汎用的な参照の仕組みを提供しているのではなく、参照型を
常にハンドルを通じてユーザに扱うようにしてあるというだけだ
- 439 :デフォルトの名無しさん:2008/07/04(金) 12:05:47
- >>438
> PascalのポインタとJavaの参照型は違うんじゃねえのか?
そっくりですよ。
最初からあるし。> Pascalのポインタ
(* @で変数のアドレスを取れるのはベンダー拡張です *)
- 440 :デフォルトの名無しさん:2008/07/04(金) 13:38:05
- >>436, >>438
自動変数のアドレスを取る演算子が無いとポインタとは言えないの?
CにはC++の参照は無いから、方法は & だけだよね。
もし仮にC言語に & が無くて、
char* p = malloc(...);
f(p);
free(p);
のようにmallocするしか*型の値を作れないとしたら、
Cにポインタは無いってことになる?
- 441 :デフォルトの名無しさん:2008/07/04(金) 15:12:06
- >>440
任意の型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の場合は、さらに、
・参照型はヒープのみに配置できる。
となってます。
だからスタック上のオブジェクトは共有できない問題や
参照外れの問題がなくなってます。
- 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"
- 445 :デフォルトの名無しさん:2008/07/04(金) 17:23:32
- × new String
○ new StringBuilder
- 446 :デフォルトの名無しさん:2008/07/04(金) 18:30:24
- >>444
ヒープの中身限定どころか、その配列の中身しかマネージできない
「ポインタ」かよw
ポインタが無い言語で、ポインタの代用として使われてた昔ながらのテクニックだな
Javaですら、そのようなことをやる必要は滅多に無いだろ
次は配列を使ってメモリマネージャを構築するのか?
Cでオブジェクト指向のプログラミングは可能だが、
Cをオブジェクト指向言語であるとは言わないだろが
その種の詭弁だな
- 447 :440:2008/07/04(金) 18:40:30
- 俺の質問にも答えてくれないかな。
- 448 :デフォルトの名無しさん:2008/07/04(金) 22:58:44
- >>447
おう。
「プギャー(AA略」
次どうぞ
- 449 :デフォルトの名無しさん:2008/07/04(金) 23:25:01
- 答えられないなら
無理してまでそんな寒いレスしなくて良いよw
- 450 :デフォルトの名無しさん:2008/07/04(金) 23:50:28
- おう。
すまん。
- 451 :デフォルトの名無しさん:2008/07/05(土) 11:35:09
- >>440
質問の意味が不明すぎる
mallocが返すのは何だよって話だ
- 452 :デフォルトの名無しさん:2008/07/05(土) 11:45:01
- まだいたのかよw
(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; ... }; なんてクラスもある。
- 457 :デフォルトの名無しさん:2008/10/01(水) 11:29:14
- 結局、後継はどれなんだ……?
#はあんまり好きになれんかった。
Dはいい感じだと思ったけども。
- 458 :デフォルトの名無しさん:2008/10/28(火) 06:46:42
- >>417
aもbもポインタだろjk
- 459 :デフォルトの名無しさん:2008/12/27(土) 21:31:50
- 今更だが
>>246
>>248
Phenom X2で同一のアルゴリズムをシングルスレッドプログラムを
マルチスレッドに変えただけで2.2倍以上の速度が出た訳だが。
恐らく、キャッシュが共有されていることが原因で、ランダムアクセスを頻発する
場合は逆に下がる可能性はあるかもしれない。
ところで、問題です。以下のコード中のaとbはC++98仕様上では
何型と何型になるのが適当でしょう?
typedef int T;
struct Struct
{
T a;
typedef char T;
T b;
};
答えメル欄
- 460 :デフォルトの名無しさん:2008/12/27(土) 22:05:34
- >>459
T a;でTという名前が使われた(この時点では::Tでint)後に、
typedef char T;でStruct内でTの表すものが変化したためアウト (3.3.6)。
- 461 :デフォルトの名無しさん: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);
みたいなコードを説明するには、どうしてもポインタと参照を
区別して説明しないとキツい。必要に応じて言い分けるだけ。
- 463 :462 :2008/12/28(日) 11:38:20
- 済まん大口叩いた割にひどいミスを書いた
begin=strstr(buff,"[");
end=trstr(buff,"[");
じゃなく
begin=strstr(buff,"[");
end=trstr(begin,"]");
だったお恥ずかしい。
- 464 :デフォルトの名無しさん:2008/12/29(月) 22:13:22
- Javaの設計者はポインタの概念が理解できなかった。
ポインタで躓いたんだ。
そこで一大決心してJavaを設計した。
普通ならポインタの理解に努めるとこだろう。
だがそうしなかったことに多くの人々が魅了された。
もうポインタがわからないのは恥ずかしいことじゃない。
俺が悪かったわけじゃないんだ。
ポインタが悪かったんだ。
そしてJavaは伝説の黄金ツールとなった。
- 465 :デフォルトの名無しさん:2008/12/30(火) 00:36:50
- 今日JRで大規模システムダウンが2件も発生してるが
これも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:54
- >>467
俺の貧弱なノートでは.NETは十分重いっす
PowerShellにしろ、F#にしろ、アホみたいに起動に時間がかかり、
とても常用する気にはなれません
- 470 :デフォルトの名無しさん:2008/12/31(水) 18:20:41
- PC環境でのJavaのJITってあまり最適化されないのか、ネイティブや同じような技術の.NETと比較して速度面にどうしても不満が出るな。
組み込みとかだとそのあたりはどうなんだろう?
- 471 :デフォルトの名無しさん:2009/01/01(木) 03:00:25
- >>469
PowerShellに関してはngenすれば全く問題なくなる
F#は知らん
- 472 :デフォルトの名無しさん: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
- >>472
defmacro かわいいよ defmacro
- 476 :デフォルトの名無しさん:2009/01/23(金) 13:35:39
- >>470
C# Mono JITだとGCJと同じくらい遅いけどね。
123 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
取りに行ったけどなかった。次は一時間後に取りに行くです。新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)