1 名前:デフォルトの名無しさん [2018/04/29(日) 04:48:48.62 ID:BgWXrKyR.net] どうなのよ
730 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 22:43:52.02 ID:IjUNQuw2.net] Javaチップww有ったなそんなん 詳しく知らないんだけどあれまだ有るん?
731 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 22:58:21.26 ID:VGxfIZN6.net] >>697 お前さん、何が目的でデタラメばらまいてるの? JavaのGUIが遅かったことじゃなくてデスマのほうな
732 名前:デフォルトの名無しさん mailto:sage [2019/08/01(木) 23:10:53.20 ID:Phw6FYmd.net] デスマってなんか格好いいよね
733 名前:デフォルトの名無しさん [2019/08/02(金) 06:15:58.69 ID:swRQgnJn.net] 実際人が死ぬしな
734 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 06:21:24.09 ID:BaYi5hrp.net] 来年5Gだろ?組み込み系でJAVAより使い勝手のいいLot向け言語ってなにさ?
735 名前:デフォルトの名無しさん mailto:sage [2019/08/02(金) 06:23:45.03 ID:DB/RmtTt.net] そらもうbrainfu*kよ
736 名前:デフォルトの名無しさん mailto:sage [2019/08/03(土) 08:30:09.31 ID:039XoTnQ.net] >>708 マジレスすると2013年ごろになくなった。
737 名前:デフォルトの名無しさん [2019/08/03(土) 23:21:53.96 ID:OrktCgG7.net] LWJGLはつかいずれーな まともなフレームワーク誰も作らない不思議
738 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 00:49:33.17 ID:ASl+awT6.net] >>709 Javaブームの頃は、ほぼJava案件=デスマーチ。大手SIerはみんな騙された。 MSが訴えられて、爆速MS製JVMがWindowsから削除されて、死ぬほど糞遅いSun製JVMしか使えなくなった。 そんなこともすら知らないとかキミはまだ生まれてないんじゃないの?w ゆとりでしょw 今度はgoogle訴えてgoogleもjava排除中だし。
739 名前:デフォルトの名無しさん [2019/08/04(日) 01:15:58.19 ID:CdruCQ6v.net] >>716 Java案件デスマがあったことなんか疑ってないわ。逃げるなよ。 ソース出してみな。 「Javaが遅いからデスマになった」のな
740 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 01:16:20.17 ID:t2/7h0Wq.net] でもライセンスフリーは魔法の言葉だったな 遅いSUM製JVMでも新規案件が山ほど有った 大手メガバンクもCOBOL捨ててJavaに移行した ほとんどのメガバンクが移行してからOracleはライセンスフリーを捨てた ライセンスフリーで使い続けるにはいつどうなるか分からないサードパーティーJDK使え、となった サードパーティーJDK使うのは中小企業だけ
741 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 01:17:05.42 ID:t2/7h0Wq.net] >>718 SUN製ね、訂正
742 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 01:36:01.22 ID:ASl+awT6.net] >>717 無職にもほどがあるぞ。ここでいちいち個別に案件の名前なんか出せるわけないだろ。 IBMでもNTTデータでもhpでもNECでも日立でも富士通でも大手SIerに一人もSEの知り合いすらおらんのか、無職め。
743 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 01:44:29.66 ID:H36VmsGT.net] 具体案件名なんて要らん 常識ならあなたじゃない他者の言及がどっかにある筈でしょ
744 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 01:54:47.43 ID:ASl+awT6.net] >>721 リアル低学歴か。自分で何一つウラも取らずになに捏造認定してんだ? ここでそのてめぇちぃせえマスかいてる暇があったら当時のスペックのサーバ調達して SUNのJVMインストールして解析なり逆アセすりゃ済む話じゃねーのか、チンカス君。 大先輩が経験したことを語ってやってんのに何も調べもせずになにが捏造だよ? てめーは何様だ。 ネットに有り触れてる高速化テクニックはおれたちが解析した結果なんだよ、能無しゆとり君。
745 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 02:02:04.01 ID:Cnh1NFJK.net] 喧嘩ならよそでやれよ。 JavaにだまされSiにだまされ人生棒に振ったオジサン達
746 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 02:40:29.33 ID:oeCo2OUF.net] ますます低能だったんだなあと確信に至る
747 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 02:45:35.08 ID:3RAtruOZ.net] 大先輩は人生苦労してそう
748 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 04:37:33.82 ID:qiievtHx.net] COBOLから移行しただけでも功績でしょー
749 名前:デフォルトの名無しさん [2019/08/04(日) 05:11:32.88 ID:ZbV/ufew.net] 引き継ぎの際に 「自分はJavaをよく分かってないまま作ってしまった。まじスマンかったm(_ _)m」 って言われたことあった。 元々家電用だったのにね
750 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 15:03:00.19 ID:CdruCQ6v.net] >>722 そこまで丁寧に謝ってくるなら許してやるよw
751 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 15:04:18.70 ID:c5/HAfRl.net] >>728 どの辺が誤ってんの?
752 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 21:30:34.39 ID:BHPfCqIK.net] COBOLからの移行だと、たとえば、どんなところが、デスマ要因なんですか? 画面系? バッチ系?
753 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 21:38:15.89 ID:FBEttc/s.net] COBOLはphpでいうとrequireでいろんなファイルを読み込みまくるだけで読み込み元が推測でしかわからないから全部知らないと更新できない だから一部分だけを直すために非常に努力が必要ですぐデスマ化するらしい
754 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 21:44:15.18 ID:FBEttc/s.net] 答えになってませんね すみません
755 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 21:54:09.57 ID:BHPfCqIK.net] >>731 phpが出てくるということは、webアプリなんですか?
756 名前:デフォルトの名無しさん [2019/08/04(日) 22:09:57.05 ID:UJJJT209.net] 京都市はバッチの移行でトラブってたような COBOLはメインフレームのOSと密結合で性能出してそうだから 汎用OSに載せ替えるってだけでも大変そう怖いわー
757 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 22:11:15.64 ID:FBEttc/s.net] 先に書いたことはCOBOLの開発の難しさを聞かれたと読み間違えました 通信をしてATMで操作する部分はかなりWEB的になってきたと聞いたことがあります javaへの書き換えだけなら簡単らしいとも聞いたことがあります 難所と思われたOOPにするところも予想よりもうまくいったらしいです
758 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 22:24:38.44 ID:BHPfCqIK.net] >>734 レガシーだと、固定長ファイルの読み出しと、書き出しだから、JAVAだと、面倒くさいかな?
759 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 23:14:53.67 ID:CdruCQ6v.net] よっぽど太古のシステムじゃない限りストレージはRDBになってて 固定長に見えるところは単なるスタブだからあんまり関係ないんじゃないかな 帳票なんかは工数かかるだろうな
760 名前:デフォルトの名無しさん mailto:sage [2019/08/04(日) 23:27:57.02 ID:7855nA4b.net] opencobolに変えるだけでもこえーわな。。
761 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 00:22:56.78 ID:Y4sutQH7.net] >>734 京都市の件は現行COBOL仕様が不明確のまま、移行しようとしたから それでテスト工数が京都市が許容した容量超えて金かかる、となったから裁判になった
762 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 00:25:29.08 ID:Y4sutQH7.net] >>735 COBOL→Javaと言ってもオブジェクト指向なんて使ってないから
763 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 00:29:20.35 ID:Y4sutQH7.net] >>736 ,737,738 プログラムから直接SQL発行する仕組みなんてしなければ、見た目固定長ファイルの様に扱う事は出来ると思う 帳票はPDF化前提だと面倒だろうね OpenCOBOLでも基本的なCOBOL言語仕様はほぼ同じ 問題は現行システム仕様がドキュメントとして
764 名前:cってるか、でしょう [] [ここ壊れてます]
765 名前:デフォルトの名無しさん [2019/08/05(月) 01:00:27.02 ID:pr2JGkDM.net] >>730 COBOLというか昔の汎用機はモノから仕様が読み取れない。 COBOLをJavaに置き換えるという発想が間違っている。COBOLの代替はリレーショナルデータベース。 Javaはデータ中心アプローチと相性が悪い。
766 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 01:07:51.71 ID:Y4sutQH7.net] >>742 そういう事 COBOLをJavaに置き換えると言う発想そのものが間違い
767 名前:デフォルトの名無しさん [2019/08/05(月) 01:42:01.66 ID:pr2JGkDM.net] COBOLはCOBOLだけでシステムが作れてしまう奇跡の言語だった。 汎用機が高性能だったためにできた芸当。 日本でも業務システムのオープン化は、Oracle化でオラクル社製品で置き換えていた。 オラクル社自体がJavaを初めのころから推していたから、COBOLはJavaに置き換えるという誤った認識が広まった。 オラクル社がJavaアプレットでフロントエンドを作り、Oracleがバックエンドを担当した。ユーザーに見えている部分がJavaだったから、システムがJavaでできていると思うのは自然の流れだったな。
768 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 21:43:29.86 ID:QGWqgRvH.net] COBOLの代替がRDBってどういうこっちゃ RDBなら汎用機+COBOLでも使ってたでしょ SQLって言いたいのかな?
769 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 23:28:08.65 ID:8dcl4yVn.net] 恐らくSQL(PL/SQL) 全てPL/SQLでカバー出来るとは思わんけど、ある程度は可能 ゆえにOracle導入したらCOBOLをPL/SQL+ProCOBOLへ移行する方が妥当だったと思う それをOracleの売り文句に騙されてJavaに移行したのが運のツキ
770 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 23:39:55.73 ID:QGWqgRvH.net] PL/SQLってエントリー・照会・帳票印刷みたいなアプリ作れるんだっけ?
771 名前:デフォルトの名無しさん mailto:sage [2019/08/05(月) 23:56:48.81 ID:+3dfihmm.net] どういう売り文句をしたらPL/SQLとJavaを 間違える羽目になるんだ?
772 名前:デフォルトの名無しさん [2019/08/06(火) 00:08:11.56 ID:O7BMVgZP.net] OracleはOracle Databaseだけで何でもできる。言語としてはほとんどPL/SQL。WebアプリケーションもOracleだけでできる。Application ExpressはロジックにPL/SQLを使う。昔はOracle FromsやOracle ReportsがJavaアプレットだったが、専用Javaアプレットを生成する言語はPL/SQL。
773 名前:デフォルトの名無しさん [2019/08/06(火) 00:15:28.83 ID:O7BMVgZP.net] >>748 オラクル社は1990年代からサン・マイクロシステムズのJavaに深く入りこんでいて、協力・補完関係だった。 Javaの最大の理解者、利用者がオラクル社で、Oracle製品群だった。 日本では国(IPA)がなぜかストアドプロシージャ等のRDBMSの機能を無視する(理解できていない?)ので、Javaとリレーショナルデータベースを切り離したがる。 欧米ではSQLインジェクション対策にストアドプロシージャの利用をあげるが、日本のIPAはそこをなぜか削っている。
774 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 00:22:07.08 ID:e1FxPxZC.net] 確かにOracleがJava推しだったのはJavaデスマーチ大量発生の背景にあるかもね 90年代後半〜2000年代前半にこれからはJavaだ!EJBだ!みたいな流れになって Javaなんてよく知らんようなSIerもこぞって参戦して死屍累々
775 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 01:08:44.88 ID:KExpnEed.net] あれだけ世界的なJavaブームがありながらなぜサーバサイドしか残らなかったのか。 速度的に数キロバイトのhtmlテキスト吐く程度でやっとだったから。 PenII 200MHzで走らせてるのに体感的に1MHzの6502より遅い。AppleII以下の性能。
776 名前:デフォルトの名無しさん [2019/08/06(火) 01:47:16.45 ID:O7BMVgZP.net] >>752 それは的外れだな。昔のWindows上で仮想マシンを動かして、プログラムは中
777 名前:ヤコードだから、仮想マシンの起動するのに時間がかかり、マシン語でもないコードを実行しているのだから仕方ない。 いまでもマイクロソフトがプログラムを実行形式ファイルにしたがるのは、Windowsの評価が下がらないように気を使っているから。 実行ファイルにするとそのPCに最適なマシン語を用意できないから、.NET Frameworkで作ったものは、マシン語にコンパイルされたJavaコードよりも遅いことがある。 JavaもリレーショナルデータベースもPCの性能、ネットワークの速度が足らない状況で、理想を求めて時代を先走ったせいでコンピュータに疎い人間から叩かれた。 [] [ここ壊れてます]
778 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 01:55:05.34 ID:nCnvS7DE.net] あのsql文法が理想なのかと・・・
779 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 01:58:39.86 ID:o2t23Jfk.net] 今のPCならJVMは問題無く動く まあ、昔は遅かったよ ゆえにライセンスフリー以外でJava使う以外にはメリット無かったな メインフレームデータベースをRDB(Oracle)に移行する作業でHI-UX(日立UNIX)でProCOBOLでプログラム作って盛大にバッチ処理してRDB更新してたな 当時はJavaなんか遅くて使えんかったわ で、クライアントPCからはEXCELとAccessで画面作ってVBAで表示 COBOL→Javaってどういう理由で持て囃されたのか全く分からんかったな JVMが早く動かせる様になってもProCOBOLにコンバートするのが効率良かったハズなのにね
780 名前:デフォルトの名無しさん [2019/08/06(火) 03:09:48.79 ID:O7BMVgZP.net] >>754 SQLの構文の元はIBMが考えたもので、オラクル社が発案したものではない。 オラクル社はビジネス優先なので、新しい言語をいちから作ったりしない。 SQLはIBM案から拝借、PL/SQLはAda言語から拝借した。 ちゃんと当時の時流にのっていて、オラクル社の選択眼は優秀。マイクロソフトはこの逆で選択眼がなく、独自に作り出して自ら首をしめる文化がある。マイクロソフトもビル・ゲイツを知っている世代がいなくなって、ようやくまともになってきた。
781 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 09:48:33.00 ID:AXpVqYDr.net] >>756 >マイクロソフトもビル・ゲイツを知っている世代がいなくなって、ようやくまと>もになってきた。 というか、ナデラになってから高度技術の会社から Apple みたいな一般向け の会社になった感じがする。
782 名前:デフォルトの名無しさん [2019/08/06(火) 11:34:34.73 ID:O7BMVgZP.net] ?
783 名前:デフォルトの名無しさん [2019/08/06(火) 11:35:19.19 ID:O7BMVgZP.net] アップルとマイクロソフトでは比較にならない
784 名前: mailto:sage [2019/08/06(火) 20:59:04.82 ID:8XRNqqzS.net] ということは、Java で書いてネイティヴを吐ければ万時OKなんでしすね!これは商機?
785 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 21:29:03.82 ID:e1FxPxZC.net] >>752 JITコンパイラ最適化でCより速いとか持て囃されてたの知らんのか
786 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 21:38:41.16 ID:UwyVLCQy.net] 世界的にはJavaStoreがあるじゃないの?
787 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 21:39:58.32 ID:YeggTUc0.net] >>761 まあ色々怪しい条件でだけどね
788 名前:デフォルトの名無しさん [2019/08/06(火) 22:22:03.24 ID:O7BMVgZP.net] >>760 ずっと前からそうだよ。
789 名前:デフォルトの名無しさん [2019/08/06(火) 22:28:24.61 ID:O7BMVgZP.net] C言語が速いというのはいまでも希に聞くが、C言語が速いのではなくて、マシン語だから速いんだけどなw CやC++で作ってしまうとむしろ遅いコードを作ってしまいかねない。ハードウェア、特にCPUは常人では理解できない世界になっているから、コンパイラが優秀、そのコンパイラがそのアーキテクチャを知り尽くしているかがカギ。
790 名前:デフォルトの名無しさん [2019/08/06(火) 22:31:23.42 ID:O7BMVgZP.net] JavaのVMはハードウェア、OSを作っている会社が作っている場合は最適化されるので、問題も起こりにくい。
791 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 22:31:29.61 ID:YeggTUc0.net] >>765 前半と後半が矛盾している
792 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 22:39:23.01 ID:fIsBh/Ce.net] 配列のレンジチェックいちいちしないから早いんじゃないの?
793 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 22:53:40.60 ID:KExpnEed.net] >>761 Javaブームの頃、JDKにまだJITコンパイラは入ってないぞw
794 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 23:01:33.
] [ここ壊れてます]
795 名前:47 ID:e1FxPxZC.net mailto: >>769 お前デタラメばっかり言って何がしたいんだよ 荒らしてるだけならNGすっぞ [] [ここ壊れてます]
796 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 23:06:34.64 ID:pzsqCCUt.net] Ruby では、 JRuby(Java 実装系)のJIT は、百万回からコンパイルされる。 一千万回(実行時間で、1秒)では、なんと、MRI(C 実装系)よりも速くなる! このように最適化では、Java は数十年も研究してるから、C よりも速くなる!
797 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 23:11:32.43 ID:KExpnEed.net] >>770 wikipに書いてることはデタラメなのか。さすがJava信者。オカルトですw しかもCより速いとか言ってる時点でIT音痴を露呈しているw
798 名前:デフォルトの名無しさん mailto:sage [2019/08/06(火) 23:18:00.63 ID:YeggTUc0.net] >>771 jrubyってjava byte codeにJITコンパイルしてたりするんじゃね c版もJITしないと不公平だろ
799 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 00:04:28.53 ID:TFdvD26l.net] >>772 お前、この前からデタラメ書いてる荒らしだろ もう相手すんのやめるわ 勝手に勝利宣言してくれ
800 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 00:42:19.23 ID:t70RBRmA.net] JITコンパイラはJavaの思想に反している。 ネイティブ変換は既にVM上で走ってないし、Write once, run anywhere じゃなくなる。 つまり偽Java。
801 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 01:03:25.80 ID:oFNxTEYn.net] >>772 wikipediaになんて書いてあんの? J2SE 1.3 (2000年5月8日) HotSpot Java仮想マシンが導入
802 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 01:24:55.84 ID:t70RBRmA.net] Sunが訴訟しまくったことにより、2000年には世界的に既にJavaブームは終わっており、 IT音痴の日本だけはなぜかこれからはJavaだ、Javaだと言ってる状況だった。 2000年頃にはPen4、2GHzにもなりCPUの速度は10倍以上速くなっている。 これでもまだJavaを走らすには遅すぎた。後のCoreアーキまで待たねばならなかった。
803 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 01:29:12.70 ID:hgZOchGN.net] キチガイのデタラメ続くな
804 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 03:21:51.02 ID:CtX/cgRv.net] ハードの進化がJVMの欠点を隠した、と言う事 2005ぐらいまではJavaアプレットでお絵かきして遊んでたぐらいだった ここ数年でJavaへ移行する大型プロジェクトが多かったが、一段落ついたらライセンス化された 無料で新規にプロジェクト組むのは色々有って増える事は無い 減るだけだろう
805 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 03:39:24.56 ID:CtX/cgRv.net] みずほ銀行が合併3行の内紛でCOBOLからJavaへ移行がぐちゃぐちゃになって何とかシステム移行出来たのが、つい最近 と、同時にリストラ発表で人員削減 Javaになったシステムは稼働ライセンス契約が開始 そのみずほ銀行から天下りした社長の7Payはプログラムソース漏洩で個人情報漏洩発覚 安易に時流に乗って必要な分析怠ると色々事件発生するこの業界 おまけにみずほは韓国へ資金援助しており回収不能、今後も投資するとか言ってる サグラダファミリアみたいなシステム作って無駄になる可能性出て来た
806 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 07:25:21.69 ID:9Ff0DYo3.net] >>768 C/C++コードが Java や C# より速いのは、配列のレンジチェックだけでなく、 GC を使ってないことがかなり大きい。
807 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 07:32:40.22 ID:9Ff0DYo3.net] >>781 もう一つは、ヒープを使わなくて済む場合には、(native)スタックや 構造体に直にオブジェクトや配列などを埋め込むから。 Javaなどは、一般オブジェクトや配列は new Txxx などのように 必ずヒープから確保するのでここにかなりのオーバーヘッドが発生する。 また、N 個のデータがある場合、C++で1回 delete すると、O(1)で済むが、 Java/C# で、参照型変数 = null; などとした場合には、最悪、O(N)位かかってしまう 事があるらしい。それは、GC が N 個のデータを全て walk してしまうことが あるから。 だから、データの量が増えた場合でも C++ は速度低下が余り起きずに安定して速いのに 対し、Java/C# ではどんどん遅くなる場合がある。それは GC があるから。 >>760 上記の事があるので、Java/C# は、native binary に直しても速くならない。 なぜなら、O(1)とO(N)の違いは「速度のオーダーの違い」で、いくらバックエンドの コードやCPU自体を高速化しても埋まらないから。
808 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 07:43:20.47 ID:9Ff0DYo3.net] >>782 O(x)という記号の意味を大体書いておくと、 O(1) = データ量Nが大きくなっても処理時間に変化が起きない。 O(N) = データ量Nが大きくなると、処理時間がNに比例して大きくなっていく。 もう少し厳密に書くと、delete pXxx や rXxx = null にかかる処理時間を f(N) と表した時、 O(1) : lim_{N->∞) ( f(N) ) < 一定値 O(N) : lim_{N->∞) ( f(N) / N ) < 一定値 ということです。これらは数学の解析学や微分積分学のランダウの記号といいます。
809 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 09:14:38.12 ID:+jdcPadD.net] モダンC++対マネージコード:パフォーマンス対生産性 https://www.infoq.com/jp/news/2012/04/native_vs_jit/ まず、JITコンパイルは主要な問題ではありません。根本原因はずっと基本的なことです。マネージ言語は基本的にパフォーマンス効率がぎりぎりの時でさえも、それを犠牲にして、プログラマーの生産性を最適化するよう、意図的に設計上のトレードオフを行なっています。 マネージ言語の設計者は、設計のためにパフォーマンスよりも安全性の道を選びました。例えば、配列の境界外の要素にアクセスするのは、無効な操作であり、プログラムの実行を終了させます。クラッシュしたり、攻撃可能なセキュリティホールを作ることがないようにしています。 2つ目に、たとえJITが唯一の大きな問題であったとしても、JITは普通に最適化するコンパイラー程良くなることはありません。なぜならJITコンパイラーには、速いことが重要であり、最適化したコードの生成を気にしていないからです。 「予防」と「治療」にはいつも避けがたい、基本的な差があります。パフォーマンスの最適化となると、C++はいつも「予防」を選び、これまで述べた英雄的な努力とそれ以上によって、マネージ言語は「治療」を選びます。 しかし、古くから諺である予防はいかなる治療にも勝るは、絶対です。予防には勝てません(その理由の1つは、最初に予防した後に治療ができるからです。しかし逆はできません)。 もしパフォーマンスとコントロールを一番大事にするなら、それを一番優先するように設計されている言語を使うべきです。それだけです。
810 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 10:09:26.43 ID:ASXtr64t.net] >>783 自己レス。厳密に言うと、記号に微妙な誤りがあって、N個のデータがあった時、 ・C++ の delete pXxx の一回当たりの平均速度を f(N) ・Java/C# の rXxx = null; の一回当たりの平均速度を g(N) とすると、O(1)、O(N)はなく、 f(N)〜1 // 常に g(N)〜N // 最悪ケース と書いたほうが
811 名前:良かった。 g(N)=O(N) と g(N)〜N は、意味が違っていて、前者は、N が十分大きい場合に、 実行時間が最悪でも N に比例。後者は、実行時間が N が十分大きい場合に N に比例。 言い方を帰れば、=O(N)という記号は、(Nが大きい場合の)上限値、 〜Nという記号は、Nが大きい場合の漸近値を表す。 [] [ここ壊れてます]
812 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 10:10:18.74 ID:9Ff0DYo3.net] >>785 誤:とすると、O(1)、O(N)はなく、 正:とすると、O(1)、O(N)ではなく、
813 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 10:18:39.48 ID:9Ff0DYo3.net] >>783 したがって、こう書けます: g(N)〜1 = データ量Nが大きくなっても処理時間に変化が起きない。 g(N)〜N = データ量Nが大きくなると、処理時間がNに比例して大きくなっていく。
814 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 17:53:59.16 ID:laWGGkJb.net] swing使ってる人って少ないんでしょうかね。 ラベルとかボタンの日本語フォントが汚すぎて泣きたい。
815 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 17:55:00.63 ID:JJ71BbCv.net] >>788 以前、使ってたよ。
816 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 18:45:40.88 ID:CtX/cgRv.net] Swingなんてまだ使ってる所有るんだなw あのUIは個人的には凄い嫌だわw
817 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 20:42:35.75 ID:L/Kq497P.net] >>785 配列をソートするとき。中身がオブジェクトの場合、実際にメモリ交換が起きるのは、参照アドレスだけになるんですか? C++の場合は、意識して、クラスの参照アドレスを配列にいれないと中身が移動するので遅くなるはず。 また、リスト、マップ、ベクター(C++では、STL)では、どうなんでしょうか?
818 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 20:47:07.34 ID:nHUnBCAO.net] >>791 そういう場合普通indexだけソートしない?
819 名前:デフォルトの名無しさん [2019/08/07(水) 22:34:26.29 ID:QJP7bLCl.net] >>775 その現在では否定されているフレーズを使うのはJava信者の特徴
820 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 23:10:43.71 ID:9QksBaox.net] >>791 Javaの場合は、原則的には実態ではなく参照だけの入れ替え(交換)になる。 実体の入れ替えは、同じメンバ同士の値を交換することによって 行えなくは無い。しかし、その場合でも Object 系のメンバについては 参照だけの交換が基本。ただし、実は Shallow Copy と Deep Copy の 違いなるものがあって、深く交換することも可能は可能。 今言ったメンバ同士の交換を、Object系のメンバについても「再帰的に」 繰り返せば、Deep Copy(今の場合は交換だけど)といって深い複製や 交換も可能は可能。
821 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 23:30:55.27 ID:9QksBaox.net] >>794 C++の場合は、もともとの言語設計では参照カウンタ方式が使われないので、 自前で参照カウンタを設けたりスマートポインター系を使わない限りは、 「Copy」しないとプログミングしにくい場合がある。 その部分に関して(だけ)は、Javaの方がC++より効率が良い感じがある。 つまり、参照を何度でも複数の参照変数に入れても言語処理系が 参照カウンタが0になった時に勝手に解放してくれる手軽さがあるから。 C++だと参照カウンタを明示的に使わない限りは自動解放してくれないので コピーして使うほうが楽になる傾向があったりする。必ずしもそうでも無いけど。
822 名前:デフォルトの名無しさん mailto:sage [2019/08/07(水) 23:51:33.69 ID:XXtLvM+5.net] つまりC++のほうが遅くなるんですね
823 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 00:22:27.09 ID:au+Ad+En.net] >>795 C++で、new は簡単だけど、deleteするタイミングは難しいですね。 結果、小さなクラスや、小さな配列は、何も考えずに、配列や、stl::list 等 にぶち込むのでコピーになっていますね。たぶん。
824 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 00:49:39.24 ID:kZ+216R/.net] >>796 その部分に関して(だけ)はどうしてもC++の方が効率が下がりがちでは有る。 自動delete機能のあるか無いかの違いがプログラムの仕方そのものにも影響を与え て、C++は本来必要の無いコピーをしがちになりがち
825 名前:。 [] [ここ壊れてます]
826 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 00:52:36.86 ID:kZ+216R/.net] >>798 但し、実際にやってみるとC++はコピーも速く出来がちなので、本来効率の悪い はずのコピーであってもJavaのGC方式を使ってコピーを減らしたものようりも 結果的にはだいぶ速い事が多い。実際今こっちでやってるプログラムは、 C++で書いていてDeepCopyを結構使ってるけど、JavaでShallowCopy使った ものよりもはるかに速く動作している。
827 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 01:01:20.58 ID:kZ+216R/.net] >>797 なお、C++のstd::list はリンクリストなので、要素の実体のコピーは滅多に 伴わないため効率は高い。 1つのオブジェクトが色々な場所から不規則に参照されている場合、 静的に delete すべきタイミングを予想する事は難しいことが多い。
828 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 01:04:16.53 ID:WU4h/4mO.net] そんな必死にC++の優位性を説かなくても普通の人は分かってるから大丈夫ですよ
829 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 12:20:46.68 ID:au+Ad+En.net] Windows でさくさく動く入力画面を、Javaで作ろうと思ったら、何を使えばいいんですか?
830 名前:デフォルトの名無しさん mailto:sage [2019/08/08(木) 12:23:53.23 ID:g7vMnjY9.net] Javaはインタラクティブな環境には向いてない