- 1 名前:仕様書無しさん [2007/02/14(水) 15:14:25 ]
- 言語機能的にも実装的にもどっちが上なんですか?
- 603 名前:仕様書無しさん mailto:sage [2008/06/06(金) 23:27:18 ]
- JavaとC++の両方を高く評価しているやつなんて皆無だろ。
- 604 名前:仕様書無しさん mailto:sage [2008/06/07(土) 03:04:21 ]
- 本題からはズレるが、言語の優劣なんてプログラマには関係ない。
JAVAやC++を使うような連中は自分の意思で言語を決定できないからな。 どちらも四年制大学を卒業したプログラマが使う技術だ。 こういう連中は国家資格を取得し、メーカや独立系の企業で仕事をする。 自分が配属された部署がC++やってるなら、他に選択肢などない。 あと、現実的なこと言うと比較できるほどやってる人はいない。 CとC++が使えるPG、CとJAVAが使えるPGはけっこういる。 しかし、C++とJAVAを使い分ける人には会った事がない。 わざわざ2種類のオブジェクト指向言語を覚えるメリットは少ない。 あとはVBやRubyを触ったら熱が冷める。 その頃には、プロジェクト管理や契約書に関心がいくようになる。
- 605 名前:仕様書無しさん mailto:sage [2008/06/07(土) 06:41:54 ]
- >>601
>やっぱりどこいってもCとC++なんだな。 10年前の話? >>604 VBやRubyに変わられる事はありえないだろ。
- 606 名前:仕様書無しさん mailto:sage [2008/06/07(土) 07:42:58 ]
- >>604
俺はVBを触っていたけど、今はJavaが好き。 .NETは高級言語過ぎて内部で何が起こっているのかわかりづらいからなぁ。 トラブルが起きた時にはまる時間が長くなりがちな気がする。 Rubyってインタプリタだからそれこそ遅いんじゃないの?
- 607 名前:仕様書無しさん mailto:sage [2008/06/07(土) 10:56:51 ]
- >>604
おまいと一緒にすんなよw
- 608 名前:仕様書無しさん mailto:sage [2008/06/07(土) 11:00:03 ]
- 俺は.NETが割とお気に入り
JAVAと違って学ぶことが多くあるからな C++はジェネリックスがJAVAにも.NETにも搭載された時点で 存在価値が薄れた気がする いまさらAPI叩く必要もないしな
- 609 名前:仕様書無しさん mailto:sage [2008/06/07(土) 11:02:28 ]
- あとVBは業務アプリ専用の糞言語とだけ言っておく
- 610 名前:仕様書無しさん mailto:sage [2008/06/07(土) 12:10:08 ]
- >>607
.NETはあんまり知らんけど、 Javaでサーブレットしてた方が自分で設定すべきことが多くて 学ぶことあるんじゃないのか? Visual Studioとか使ってると、 何も知らなくても勝手にやってくれる部分が多いからなぁ。 >>609 確かに、 VBはExcelVBA以外はあえて使う事もないんじゃないかね。 >>604のVBを使ってJavaの熱が冷めた理由が本気でわからんw
- 611 名前:仕様書無しさん mailto:sage [2008/06/07(土) 12:19:57 ]
- >>610
.NETはあまり判ってなくても何となく組めるから勘違いされる
- 612 名前:仕様書無しさん mailto:sage [2008/06/07(土) 12:42:33 ]
- VBができると事務のお姉ちゃんにモテモテだからな。
たぶん。
- 613 名前:仕様書無しさん mailto:sage [2008/06/07(土) 13:00:01 ]
- ここでC++が、JAVAが良く判らなかったとか言ってる奴は
自分はアホですって告白してるようなもんだ
- 614 名前:仕様書無しさん mailto:sage [2008/06/07(土) 13:05:12 ]
- 判らないのはJAVAではなくJAVAの良さ
- 615 名前:仕様書無しさん mailto:sage [2008/06/07(土) 13:14:29 ]
- >>614
同じことだと思う。
- 616 名前:仕様書無しさん mailto:sage [2008/06/07(土) 13:39:39 ]
- >>614
自分でメモリ管理することの利点欠点と それがイベント駆動型アプリケーションにもたらす影響を教えて
- 617 名前:仕様書無しさん mailto:sage [2008/06/07(土) 14:54:37 ]
- >>614
詳細設計しかやったことない新人プログラマがいる現場なら必要。 新人にメモリ管理はちょっと重荷かも。 今は開発者のレベル差が激しいから言語仕様で保障されてるほうが良い。 あとは、自分でロジック書けば開発コストも増える。 知識ついてくれば自分でもできることは増えるけど 言語やミドルウェアに頼った方が開発コストは減る。
- 618 名前:仕様書無しさん mailto:sage [2008/06/07(土) 18:10:23 ]
- >>616
> 自分でメモリ管理すること利点欠点 これはJavaのメモリ管理に対してのC++のメモリ管理のことか? 利点 - 必要なくなったオブジェクトを即座に削除できるのでメモリの無駄が減る。 - デストラクタによって局所変数を即座に後処理することができる。 この仕組によりメモリ以外の一般リソースの後処理もできる。 これはオブジェクトの外で finally するより簡単である。 - new や delete のオーバーライドによってメモリ管理を簡単に変更できる。 - プールやスマートポインタなどによってオブジェクトの寿命を細かく制御できる。 また小さなオブジェクトのメモリ効率を良くすることができる。 - 基本型以外の型でも、必ずしも new する必要がない。 - GC のように不意に実行が中断されることがない。 - オブジェクトはある程度レイアウトを制御できるので他言語とリンクしやすい。 - 配置構文 new によって共有メモリや特殊なハードウェアを扱いやすい。 - ポインタ自体がオブジェクトなので Swap などの細かい操作が簡単である。 欠点 - new したら明示的に delete しなければならないことがある。 - ヒープメモリの実装によってメモリの断片化が起きやすい。 - オブジェクト所有権を意識していないプログラマはメモリリークを起こしやすい。 - オブジェクトの参照が入り組んでいるとダングリング参照を起こしやすい。 - ライブラリなどはオブジェクト所有権を明記していないと間違いを起こしやすい。 - 一般的なスマートポインタだと循環参照の扱いが難しい。 メモリリークの概念によっては GC を持つ言語でメモリーリークはある。 またオブジェクトが削除されないことが必ずしもメモリリークとは限らない。 > それがイベント駆動型アプリケーションにもたらす影響を教えて これは知らない。 C++メモリ管理とイベント駆動の関係で嬉しかったことも困ったことも記憶にない。
- 619 名前:仕様書無しさん [2008/06/07(土) 19:11:41 ]
- >言語やミドルウェアに頼った方が開発コストは減る。
つまりこういうこと。 C++はメモリ管理やロジックを自分でやる必要があるから、 JavaよりC++のプログラマの方が優れているなんていうやついるけど、 実はそんなものはちょっと教えれば大抵のJavaプログラマはすぐ習得する。 お勉強にちょっとC++をいじるのは良いかもしれないが、 開発コストを考えればJavaに軍配が上がるのは明らか。
- 620 名前:仕様書無しさん [2008/06/07(土) 20:00:56 ]
- JAVAで作られたプログラムとC++で作られたプログラム
どっちが高性能なの?
- 621 名前:仕様書無しさん mailto:sage [2008/06/07(土) 20:02:59 ]
- モノによる
はい、次。
- 622 名前:仕様書無しさん [2008/06/07(土) 20:17:10 ]
- 同じだけの時間をかけたものであればJava
同じだけの機能を持ったものならC++ だが、保守を考えるとやっぱJavaだろうな。
- 623 名前:仕様書無しさん [2008/06/07(土) 20:38:23 ]
- javaだろ
- 624 名前:仕様書無しさん mailto:sage [2008/06/07(土) 21:04:05 ]
- >>620
JAVAの性能に関する話題はタブーですよ。
- 625 名前:仕様書無しさん [2008/06/07(土) 22:27:38 ]
- 世界中で使われてるような評価の高いソフトウェアって
JAVAとC++どっちで作られてることが多いの?
- 626 名前:仕様書無しさん [2008/06/07(土) 22:54:37 ]
- >>625
Javaは新しいから、 昔からあるような評価の高いソフトでは そんなに多くは使われてないんじゃない? でも、オラクルは確かJavaとC両方使われてたんだっけな
- 627 名前:仕様書無しさん mailto:sage [2008/06/07(土) 23:17:07 ]
- 世界中で使われてるといったら
Word, Excel, PowerPoint, Photshop とかかな。 何で開発されているんだろうね。
- 628 名前:仕様書無しさん mailto:sage [2008/06/08(日) 09:32:42 ]
- 本業は別業界なんで、余裕の時間にバイトでプログラマーでもしようかと思うんですが、
どの言語を勉強すればいいでつか?
- 629 名前:葉猫 ◆Jz.SaKuRaM mailto:sage [2008/06/08(日) 11:11:09 ]
- VBAだな。 エクセルでマクロの記録をやったのを少ちずつ改良つればいいでつち。
- 630 名前:仕様書無しさん mailto:sage [2008/06/08(日) 12:06:14 ]
- キチガイコテはさっさと氏ねと
- 631 名前:仕様書無しさん mailto:sage [2008/06/08(日) 17:50:59 ]
- 途中、めんどくなって読んでないけど
簡単にまとめると、敷居が低いのがJavaで 使い込んでくると使いやすいのがC++って結論でおk?
- 632 名前:仕様書無しさん mailto:sage [2008/06/08(日) 22:15:33 ]
- 敷居とかではなく、ハードウェアに対する近さが違う。
それに実際にアプリ作るなら、どんな環境で開発するかも考えるべき。 C++はC言語をオブジェクト指向言語にしようという事で開発された言語。 ベースになってるC言語と同様に、OSやコンパイラだって記述可能。 Windowsで何か凝ったもん作るならVC++。 携帯電話やゲーム分野など、大抵の分野でC/C++の処理系が存在します。 Javaは「完全なオブジェクト指向言語」なので C++みたいに構造化言語みたいな使い方はできない。 あと、ハードウェアをあまり意識しないで良い。 難点はインタプリタ言語なんで重い。これでOSは書きたくない。 Webアプリを作るならミドルウェアも、マニュアルも豊富だし有力候補。 あと、両者とも決して敷居が低い言語ではないと思う。 どちらも構造化言語で必要になる知識(変数、文法、ライブラリ)のほかに 以下のような知識がないと仕事では使えないと思う。 ・オブジェクト指向の知識 ・プラットフォームの知識(WindowsでVC++ならMFCや.NET、JavaならJavaVM) ・システム化する対象の知識(ワープロや表計算、金融や流通などの業務知識) ・ソースコードのマネジメント知識(バグ管理やコーディング規約、バージョン管理など) あとはコミニュケーション能力が大事。 画面設計書、テーブル定義書には記述できないことが多いし 大規模開発になりやすい。 少しのコミニュケーションギャップがプロジェクトに大ダメージを与える。
- 633 名前:仕様書無しさん mailto:sage [2008/06/08(日) 22:28:53 ]
- C++の利点
- 高速で細かいところまで制御しやすい C++の欠点 - 学習が難しく機能が誤用される可能性が高い Javaの利点 - C++の欠点の反対 C++の欠点 - C++の利点の反対
- 634 名前:仕様書無しさん mailto:sage [2008/06/08(日) 23:45:28 ]
- >>632-633
ありがと。 特に 632の解説はわかりやすかった。
- 635 名前:仕様書無しさん mailto:sage [2008/06/09(月) 01:12:56 ]
- >>632
> あと、ハードウェアをあまり意識しないで良い。 これは嘘じゃないか? 思いっきり動作環境を意識しないとコード書けないと思うが。
- 636 名前:仕様書無しさん [2008/06/09(月) 02:15:55 ]
- JAVAのが初心者にはいいんだ
- 637 名前:仕様書無しさん mailto:sage [2008/06/09(月) 02:23:54 ]
- C++のSTLは洗練されてない
アルゴリズム関数とかダサい
- 638 名前:仕様書無しさん mailto:sage [2008/06/09(月) 11:58:32 ]
- >>637 もっと論理的に説明してください。
- 639 名前:仕様書無しさん mailto:sage [2008/06/09(月) 23:09:00 ]
- 俺もC++やっていたけど、STLはひどすぎたよ
Javaの方が何倍も効率いいし、やっていて楽しい
- 640 名前:仕様書無しさん mailto:sage [2008/06/09(月) 23:48:07 ]
- >>632
Javaはインタプリタといっても、 よく言われてるほど速度遅いやつじゃないぞ。
- 641 名前:仕様書無しさん [2008/06/09(月) 23:56:47 ]
- GC邪魔
- 642 名前:仕様書無しさん mailto:sage [2008/06/10(火) 00:22:17 ]
- >>641
…別に?
- 643 名前:仕様書無しさん mailto:sage [2008/06/10(火) 16:13:39 ]
- Java で 60fps を死守しなければならないアプリケーションの作り方って難しくない?
必要なオブジェクトを予め new しておいて後は一切 new しない方法しか思いつかないけど。 new のタイミング以外で GC が起きないという前提で。
- 644 名前:仕様書無しさん mailto:sage [2008/06/10(火) 20:47:38 ]
- >>637
その気持ち分かる気がする。 アルゴリズムの関数はいろいろあるけど、 copyとfind、for_eachとか使う頻度が高い関数は極少数。 もう少しよく使うものがあってもいいんじゃないかと思う。 具体的に何?と言われると考え込むけど。
- 645 名前:仕様書無しさん mailto:sage [2008/06/11(水) 16:53:40 ]
- STL はデータ構造とアルゴリズムが綺麗に分離されているのが凄いよね。
あれを考えた人は天才としか思えない。
- 646 名前:仕様書無しさん mailto:sage [2008/06/11(水) 17:32:02 ]
- >データ構造とアルゴリズムが綺麗に分離されているのが
いや、それってSTLを考えた人じゃなくて、template構文を考えた人。
- 647 名前:仕様書無しさん mailto:sage [2008/06/11(水) 19:47:58 ]
- STLってなに?
- 648 名前:仕様書無しさん mailto:sage [2008/06/11(水) 19:53:44 ]
- OTL
- 649 名前:仕様書無しさん mailto:sage [2008/06/11(水) 20:10:01 ]
- >>646
コンテナとアルゴリズムを分離してコンテナ以外に対してもアルゴリズムを 適用する方法は template の概念だけではなかなか思いつかないよ。 Stroustrup もこれに衝撃を受けて標準化を遅らせてでも STL を標準に入れた。
- 650 名前:仕様書無しさん mailto:sage [2008/06/12(木) 15:02:38 ]
- C++は言語仕様が汚く、複雑すぎるんだよな。
ソフトウェアに必要な「短くまとめるセンス」がない。 「簡潔さ」「スマートさ」「覚えやすさ」が無視されてる。 構造化言語ならC言語、オブジェクト指向言語ならJavaは うまくまとまってるが、C++はどっちつかずで使いづらい。 Unixのテキスト処理やファイル、OracleのSQLや GoogleMapsのインタフェースも「スマートさ」がある。 iPodやiPhoneも「スマートさ」「潔さ」がある。
- 651 名前:仕様書無しさん mailto:sage [2008/06/12(木) 21:29:23 ]
- Javaのどこがうまくまとまってるんだ?
混沌そのものじゃないか。
- 652 名前:仕様書無しさん mailto:sage [2008/06/13(金) 08:08:43 ]
- >>651
Javaを使って混沌になるってのは、 自分の腕がしょぼいといっているようなもんだぞ…
- 653 名前:仕様書無しさん mailto:sage [2008/06/13(金) 14:13:40 ]
- Javaは基本型とクラス型の機能が非対称すぎる。
- 基本型は参照を使えない - 基本型は Object のメソッドが使えない - それぞれメモリ管理の方法が違う - それぞれ型変換の方法が違う - クラス型はほとんどの演算子が使えない (なぜか String には加算演算子がある)
- 654 名前:仕様書無しさん mailto:sage [2008/06/14(土) 10:01:16 ]
- Simulaで基本型とクラス型の違いに不便を感じて
どっちでも同じ扱いができるようにしたC++。
- 655 名前:仕様書無しさん mailto:sage [2008/06/14(土) 11:28:25 ]
- >>653
>Javaは基本型とクラス型の機能が非対称すぎる。 >- 基本型は参照を使えない >- 基本型は Object のメソッドが使えない お前もう少しJava勉強してから出直してきた方が良いよ。
- 656 名前:仕様書無しさん mailto:sage [2008/06/14(土) 11:59:51 ]
- >655
えーと、intとIntegerを混同してたりしない? 653はその辺の話をしてるんだと思うが。 漏れもintをコンテナに突っ込む為にIntegerにしたり、 逆に計算するためintに戻すといった操作を必須とする 仕様はイケてないと思った。
- 657 名前:葉猫 ◆Jz.SaKuRaM mailto:sage [2008/06/14(土) 12:07:12 ]
- 全てをおっぱいおっぱいにちないで処理スピードのために型を残ちたJava、ダサ
- 658 名前:仕様書無しさん mailto:sage [2008/06/14(土) 13:03:24 ]
- >>656
してない。 てか、653と656はオートボクシング知ってるの?
- 659 名前:仕様書無しさん mailto:sage [2008/06/14(土) 13:21:37 ]
- てか、>>653は、文面から察するに、オートボクシング型どころか、
Integer型やDouble型の存在すら知ってるかどうか危ういんだが…。
- 660 名前:仕様書無しさん mailto:sage [2008/06/14(土) 13:23:58 ]
- 間違えた、オートボクシングのあとに
なぜか「型」がついてるのは気にしないでくれ。
- 661 名前:仕様書無しさん mailto:sage [2008/06/14(土) 13:33:40 ]
- >658
ほう、こんなものが追加されたのか。 4.0までしか使ってなかったから知らんかった。 でも↓は酷すぎ… ttp://d.hatena.ne.jp/nowokay/20071028 ttp://d.hatena.ne.jp/shawshank99/20080125
- 662 名前:仕様書無しさん mailto:sage [2008/06/14(土) 14:15:18 ]
- >>659 Autoboxing は最近知ったがな。
基本型のラッパーを使っていも、同じオブジェクトから作った2つのラッパーが 同じオブジェクトになるわけではないし。 しかも Integer は -128 から 127 は特別扱いされてややこしい。 Autoboxing は単にラッパーオブジェクトへの変換を自動化しているだけで 面倒な部分を隠しているだけ。ラッパーではなく基本型のオブジェクトで なければ混乱するだけ。 それに 5.hashCode() みたいな事ができるのか? できたとしてもいちいち Integer オブジェクトに変換されていたら重くてしょうがないが。 言語が特別扱いするクラスも増えて Java はどんどん複雑になっている。
- 663 名前:仕様書無しさん mailto:sage [2008/06/14(土) 14:50:52 ]
- > -128 から 127 は特別扱いされて
これは知らなかったが、だがこんなものは開発標準で規約を決めれば良いだけの話。 Javaのコードの簡潔性や、開発速度等のメリットから見たら小さな話。 5.hashCode()これは出来ないし、C++でも出来ないだろ。 C#なら出来るか? だが、それがどうしたというのか…。
- 664 名前:仕様書無しさん mailto:sage [2008/06/14(土) 15:07:39 ]
- >>663
> 5.hashCode()これは出来ないし、C++でも出来ないだろ。 > C#なら出来るか? > だが、それがどうしたというのか…。 基本型だけ Object を継承していないのが非対称ということ? C++ はもともと共通のベースクラスを持っていないので できなくても不自然ではない。 5.hashCode() みたいな書き方は Ruby ならできる。 C# は知らないが結構オブジェクト指向っぽくなっている ようなことは聞いたことがある。
- 665 名前:仕様書無しさん mailto:sage [2008/06/14(土) 15:42:40 ]
- >663
全然小さな話じゃないよ。 規約決めた所で、徹底不足だったら意味ないし、 知識として知っててもミスしないと言い切れない代物。 レビューでも注意深く見ないと気付けないだろうし、 動作テストでも検出できない恐れが十分あり得る。 これがIntegrなんてごく基本的なクラスに存在するのは かなり致命的だと思うが。
- 666 名前:仕様書無しさん mailto:sage [2008/06/14(土) 15:45:24 ]
- >663,664
ttp://www.ne.jp/asahi/techno/ostra/ccj/CShObjCJava-type.html C#はこれを克服し、基本型をなくしてしまった。 全ての型はクラスであるとしたのである。 intはSystem.Int32のエイリアス。 stringはSystem.Stringのエイリアス、そして配列までも System.Arrayのエイリアスだとしている。
- 667 名前:仕様書無しさん mailto:sage [2008/06/14(土) 15:57:06 ]
- >>665
>規約決めた所で、徹底不足だったら意味ないし、 C++だったらnewしたらdeleteしなきゃメモリリーク起こすの知ってるよな? それだって対策が徹底不足だったら意味ないし、当然ミスもありうる。 それに比べたら別にIntegerの問題くらい大した事はないだろう。 てか、>>661のページは面白おかしく書いてるだけであって、 実際の実務でそんなIntegerの使い方はありえない。 >>666 C#なんてJavaほどマニュアルも揃ってないし、微妙極まりないだろ。 Rubyなんてインタプリタだし却下。
- 668 名前:仕様書無しさん mailto:sage [2008/06/14(土) 15:59:23 ]
- >>665
>動作テストでも検出できない恐れが十分あり得る。 そんなのどんなバグでも検出できない恐れは十分にある。 >これがIntegrなんてごく基本的なクラスに存在するのは Integerは実はそれほど頻出するクラスでもないよ。 >かなり致命的だと思うが。 全然。
- 669 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:04:33 ]
- >667
メモリリークはツールなりデバッグ関数なりで、 動作テスト1回で簡単に検出できる。 何が最悪かって動作テストをきっちりやっても 防止できない所なんだよ。 そこが最悪か否かの境界線。 あとC#のマニュアルはMSDNで十分過ぎる。 Javaに倣ってソースからドキュメントを生成する仕組みもあったはず。
- 670 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:09:46 ]
- >>668
> Integerは実はそれほど頻出するクラスでもないよ。 Autoboxing 導入されたら知らないうちに頻出するよ。
- 671 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:12:29 ]
- C#は結構まとも
悪くないよ 一般的には.net依存なのが最大の難点になるけど
- 672 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:16:05 ]
- >>669
メモリリークがIntegerのそれより簡単に検出出来るなんて、どこにそんな根拠が? そもそもIntegerで==を使って比較なんてして、最後まで気づかないなんてありえない。 てか、Integerをそんな頻繁に使っていること自体ありえない。 悪いけど、うちでそんなソース書いてたら、すぐ直させるよ。 MapやListに使う事はあるが、外に出す時は必ずintに直すべき。 C#はマニュアル、開発環境ともにJavaに劣るよ。
- 673 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:21:25 ]
- >>670
Listとかに挿入する時に知らないうちにオートボクシング行われている。 …といいたいのか? オートボクシングが採用されたバージョンでは、同時にジェネリクスも採用されてる。 つまり実際にはList<Integer>などと宣言することがほとんどで、 知らないうちなんてありえない。
- 674 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:28:46 ]
- >672
メモリリーク検出用のツールとか関数というのがきちんとある。知らんの? ※適切なタイミングでメモリの仕様状態を確認するだけで分かる。
- 675 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:36:09 ]
- >672
>MapやListに使う事はあるが、外に出す時は必ずintに直すべき。 そうすると >653 >Javaは基本型とクラス型の機能が非対称すぎる。 >- 基本型は参照を使えない >- 基本型は Object のメソッドが使えない に戻ってくるわけで。
- 676 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:40:47 ]
- >>674
デバッグツールはcoreを解析する時くらいしか使ったことないな… >>675 だからそのデメリットが分からないのよ。 基本型とクラス型の二つがあったらなぜいけないのか。 C#やRubyに慣れすぎてて、Javaに違和感を感じてるだけなんじゃないの?
- 677 名前:仕様書無しさん mailto:sage [2008/06/14(土) 16:50:12 ]
- >>673
変数宣言の場所と変数を使う場所が離れているときは型チェックがあると助かるんだよ。 List<Integer>に int を突っ込むときはエラーを出してくれると助かるんだけどね。
- 678 名前:仕様書無しさん mailto:sage [2008/06/14(土) 17:01:53 ]
- >676
>C#やRubyに慣れすぎてて、Javaに違和感を感じてるだけなんじゃないの? 逆にJavaに慣れすぎてしまってるんじゃ… 例えばList<Integer>の各要素に+1するのに、わざわざ変換するのは面倒だろ? だからこそAutoboxingが導入されたんだろうが、>661の問題が発生するから >672の言うような運用でカバーせざるを得なくなり、Autoboxingのメリットは無くなる。 更にAutoboxingに頼らないのなら、>677の言うように暗黙の変換は無い方が 規約を遵守させるのには便利だ。 要するに>662の言うように >言語が特別扱いするクラスも増えて Java はどんどん複雑になっている。
- 679 名前:仕様書無しさん mailto:sage [2008/06/14(土) 17:15:39 ]
- >>678
俺はC#, C++, Javaどれも実務で使ったことある上で 比較をしてるんだが… まぁJavaが特別扱いするクラスが増えてるってのは認めるよ。 Stringの+=と、StringBufferのappendのメモリの扱いの違いとかもあるだろうし。 しかし、そのおかげで使用する側は簡潔なソースを素早く書けるようになっている事も事実。 うちではシステムはどんどんJavaに移行してるよ。 C#なんかはVisual Studioとかで使うとシステムが高級すぎて 逆に融通が利かなくなる事も多い。 リファクタリングとか環境に依存したりとかでね。
- 680 名前:仕様書無しさん mailto:sage [2008/06/14(土) 18:21:42 ]
- >>661
この仕様がどうこう、と言うより、こういう一貫性を失うような仕様を 安易に取り入れるような、美学を持たない人たちが言語仕様を作っている こと自体が嫌だなぁ。 もっとも、C++のauto_ptrの代入で、右辺値にも副作用がある、という 点でも、同種の嫌悪感を覚えたが。 (auto_ptrの場合は、無理に代入演算子をoverrideせず、明示的な名前の クラス関数にすればよかったと思う) まぁ美学だけじゃ食っていけないこともまた事実ですけど。
- 681 名前:仕様書無しさん mailto:sage [2008/06/14(土) 19:40:59 ]
- Integerはもともと==で比較することを想定していないからね。
つまり、equalsを使わなかった方が悪いという事。 127までとそれ以降の挙動の違いは、 普通にパフォーマンスの都合でしょう。 確かソートのアルゴリズムも、内部で要素の数に応じて バブルソートとクイックソートを使い分けていたと思う。 だから、その仕様を持ってJavaを悪く言うのは筋違いだと思う。
- 682 名前:仕様書無しさん mailto:sage [2008/06/14(土) 21:48:17 ]
- 速度だけの違いで済むならいいんだけどね。
Integer の場合、数値の比較なら equals() でもダメじゃないか? Long と比較したら常に false になるから。
- 683 名前:仕様書無しさん mailto:sage [2008/06/14(土) 22:08:47 ]
- >>682
だから基本型に直せって。 てか、ここでIntegerネタで粘着してるやつって何なんだ? からくり分かってるんなら気をつけてコーディングすりゃいいだけの話だろ。 -128〜127の件も、無駄なインスタンスが増えないように 工夫されて作られてるだけだろ。 Integer型と基本型が両方用意されているのも、 パフォーマンスの都合で基本型が残されているだけだろ。 Mapとかに入れる時用にラッパークラスも用意されているわけで。 こんな簡単なものの使い分けもできない馬鹿が、 これほどまでに多いのか? こりゃ日本のプログラマの扱いがひどくなるのも当然だよ。
- 684 名前:仕様書無しさん mailto:sage [2008/06/14(土) 22:11:16 ]
- >>680
一貫性がないって、 パフォーマンスのために、状況に応じて処理を変えるのは当然じゃないのか。 むしろ美学があると思えないようじゃ、あんさんの腕もたかが知れてるぞ。
- 685 名前:684 mailto:sage [2008/06/14(土) 22:27:05 ]
- なんか腹が立ってきたな…
- 686 名前:仕様書無しさん mailto:sage [2008/06/14(土) 22:36:49 ]
- >>684
> むしろ美学があると思えないようじゃ、あんさんの腕もたかが知れてるぞ。 君は C++ に美学を感じているのかい?
- 687 名前:684 mailto:sage [2008/06/14(土) 23:13:54 ]
- >>686
なんだと!? そりゃどういう意味だ。
- 688 名前:仕様書無しさん mailto:sage [2008/06/14(土) 23:27:57 ]
- C++は作者自身がs いやなんでもない
- 689 名前:仕様書無しさん mailto:sage [2008/06/15(日) 12:51:08 ]
- >>687
C++ の設計に美学を感じているのか、それとも美学を感じてないかという疑問。 俺も >>680 のように Java の設計には美学を感じていない。 Java と C++ の設計思想は間逆なので両方の設計に美学を感じることはないと思うが。
- 690 名前:仕様書無しさん mailto:sage [2008/06/15(日) 14:41:01 ]
- なんかわかりやすい自演がいますね
- 691 名前:仕様書無しさん mailto:sage [2008/06/15(日) 14:47:27 ]
- 漏れは極力makeの時点で不具合を検出できるか、
極力短い時間で書る(テストにより多く時間を割ける)のが 美学だと思うんだが。 その点Javaは中途半端だと感じた。
- 692 名前:仕様書無しさん mailto:sage [2008/06/15(日) 15:22:15 ]
- >>689
間逆ぅ?どこが? 同じオブジェクト指向だろ、いみわかんね。 >>691 中途半端どころか、 Javaは開発環境もテスト環境もかなり整っている言語なんだが。
- 693 名前:仕様書無しさん mailto:sage [2008/06/15(日) 15:23:39 ]
- てか、C++がmakeの時点で不具合を検出できるのなら、
Javaのeclipseの場合はコーディングしたそばから不具合検出できるがな。
- 694 名前:仕様書無しさん mailto:sage [2008/06/15(日) 15:38:52 ]
- 「eclipseが優れている」だったらJavaに拘らなくても良い気ガス
- 695 名前:仕様書無しさん [2008/06/15(日) 15:47:21 ]
- >間逆ぅ?どこが?
>同じオブジェクト指向だろ、いみわかんね。 レクサスとダイハツは設計思想が間逆ぅ?どこが? 同じ四輪自家用自動車だろ、いみわかんね。 ・・・と同じくらい、あなたの発言は滑稽ですが。
- 696 名前:仕様書無しさん mailto:sage [2008/06/15(日) 16:00:34 ]
- eclipseでJavaしか使ったことがない新人なんですよ。
JVMすら分かってないような厨房です
- 697 名前:仕様書無しさん mailto:sage [2008/06/15(日) 16:14:57 ]
- >>694
確かにほかの言語でもeclipseは使えるが、 Javaほどはどれもしっかりしてない。 >>695-696 はいはい、根拠を言えないで煽ることしかできない馬鹿は黙っててくださいね。
- 698 名前:仕様書無しさん mailto:sage [2008/06/15(日) 16:22:09 ]
- >>694
俺はC++のmakeの利点に対して、 Javaのeclipseの利点を出しただけなんだがな。 何でそれが「Javaの利点 = eclipseが優れている」になっちゃうのよ。 お前の論理回路大丈夫か?
- 699 名前:仕様書無しさん mailto:sage [2008/06/15(日) 17:12:29 ]
- ところでeclipseはIntegerを==で比較したら警告してくれるの?
- 700 名前:仕様書無しさん mailto:sage [2008/06/15(日) 17:26:18 ]
- どうだっけ?
FindBugs (プラグイン)で String の == は警告してくれた記憶あるけど
- 701 名前:仕様書無しさん mailto:sage [2008/06/15(日) 17:39:15 ]
- どうでもいいけどInteger厨は消えろクズ
- 702 名前:仕様書無しさん mailto:sage [2008/06/15(日) 18:16:15 ]
- >>697
Java と C++ の設計思想の違いが知りたければ '94 年ぐらいに書かれた D&E の 4章「C++ 言語の設計ルール」あたりを読んでみなよ。 面白いくらいに Java と反対だから。 第一 Java は C++ を批判する形で出てきただろ。
- 703 名前:仕様書無しさん mailto:sage [2008/06/15(日) 18:34:41 ]
- >>701
同意 Integerではまるような低レベルはさっさと消えろよ。 つーか、まだいたのかよ。
|

|