【肥大化】C++ を見捨てたヤシ 2人目【複雑化】

■ このスレッドは過去ログ倉庫に格納されています
2008/05/17(土) 21:07:51
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
2008/05/18(日) 12:17:53
リソースの解放は

Javaは try-finally
C#は using(){}
C++, D言語は RAII
Cは必要な箇所全部に記述
2008/05/18(日) 12:27:17
>>22
頻繁に失敗する可能性のあるタイプのもので
しかもループ内で行われるものであれば
効率を優先して論理値を返す関数でチェックする可能性もある。
2008/05/18(日) 13:03:14
そゆのはそもそも>>18with-マクロの対象じゃないと思う。
なんかコネクションはってプリペアードステートメント実行して結果をスキャンみたいなうだうだしたのを想定してた。
Uzeeeeってならね?
r1 = allocate_resource_A();
try {
r2 = r1.allocate_resource_B();
try {
r3 = r2.allocate_resource_C();
try {
....
} else {
r3.close();
}
} finally {
r2.close();
}
} finally {
r1.close();
}
2625
垢版 |
2008/05/18(日) 13:04:30
しまった。Javaスレかと勘違いしとった。ゴメン。
2008/05/18(日) 21:33:41
リソースの開放は、
必要なときに、必要なだけしてもらえる方法がありがたい
2008/05/18(日) 22:54:33
>前スレ1000
html化って今でもされてるの?
エフィリエイターに保管されることを html 化っていってるの?
2008/05/18(日) 22:57:16
C++ってロストテクノロジー的でいいね
2008/05/18(日) 22:58:05
再発掘されてるあたりそんな感じだね
31デフォルトの名無しさん
垢版 |
2008/05/21(水) 21:41:13
http://www.bagley.org/~doug/shootout/craps.shtml

As you can see, OCaml is actually faster than C++. OCaml has currying,
garbage collection, anonymous functions etc. built-in -- therefore,
you don't need to resort to extremely high-tech template programming
as you do in C++. OCaml can work as an interpreter, a compiler to a
portable byte-code, or a compiler to the native code. It makes us wonder
if C++ has any reason to exist (It's a very inflammatory remark, I'm
sorry. One can still wonder about that).

見てわかる通り、OCamlは実際C++より速いのです。OCamlはカリー化、
ガーベジコレクション、匿名関数などを有しています。内蔵(built-in)しているので、
それゆえ、あなたがC++でプログラミングするときにやっているような、凄くハイテクな
テンプレートを頼りの綱とする必要も無いのです。OCamlは、インタプリタとしても動きますし、
移植可能な(portable)バイトコードを吐くコンパイラ、そしてネイティブコードを吐く
コンパイラにもなります。このことは、C++なんて存在する価値があるのかという気になります。
(極端な意見でごめんなさい。そう考えている人も居るのです)
2008/05/21(水) 22:42:04
OCamlでOSを書けてから言いなって感じだな
2008/05/21(水) 23:08:23
ここで批判的に書かれているのはCではなくC++だよ。
たとえOCamlでOSが書けなくても、OSはCで書きゃいい、って返されて終わり。

C++批判の多くは「Cと○○があればC++なんか要らん」という形態を取っているから、
そこで「じゃあ○○で××(Cで書けばいいようなもの)を書いてみろ」を反論するのは
効果的ではない・・・というか空回り。
「言語なんて○○ひとつあれば十分」みたいな意見に対してはその反論でいいけど、
これはあまり居ないんだ。
2008/05/21(水) 23:21:54
OCamlよりも俺はF#が良い。
2008/05/22(木) 00:50:51
OCamlで仕事があったら考える。
2008/05/22(木) 00:53:17
まぁ、OCaml最強ってことで良いんじゃね?

ただ、最強が何であれ、UNIX系はC、Windows系はC++,C#、
Webサーバー関連はJava,Perl,PHPなどが
今後も主に使われて行くでしょうけどね。
2008/05/22(木) 00:54:23
>>35
考えてもらえるかは別として、仕事はあるみたいだよ
http://rikunabi2009.yahoo.co.jp/bin/KDBG00200.cgi?KOKYAKU_ID=2715900001&MAGIC=
2008/05/22(木) 01:08:34
そして「SMLで」と言われるわけですね
2008/05/22(木) 02:53:06
>>33
OS には アセンブリ言語/C だけじゃなく C++ も使われている訳だが
2008/05/22(木) 04:10:49
お前は何を言ってるんだ
2008/05/22(木) 08:10:55
>>38
面白い事を言ってるつもりかもしれんが、ググってからでも遅くはないじゃろう

http://www.janestcapital.com/ocaml/
2008/05/22(木) 09:07:56
まあたしかに関数型言語とか面白いとは思う・・けど・・

OS作るなんて大げさな話じゃなくてもさあ、低水準の入出力とかドライバとか
割り込みとかリアルタイム処理とかマルチスレッドとか並列処理とか
骨っぽいところは全部Cに任せて、おいしいロジック部分だけきれいに書いて
あとはOpenGLをラップしたライブラリでも呼んだデモ見せて「どーです、C++なんかと
変わらないスピードでこんなことまでできるんですよ♪」みたいなの多いよね。
(いや、OCamlはその点どうなのかは知らないけどw)

そんなんだったら俺はいらないな。全部CかC++で書いたほうがまだまし。
C++に取って代わる言語は、もっと整理された美しいものであるべきだろうけど
同時にCの切れ味も失ってほしくはないなー。
2008/05/22(木) 09:45:04
>>42
>マルチスレッドとか並列処理とか
>骨っぽいところは全部Cに任せて、

知らないのによくこれだけ騙れるな
さすがC++クオリティ

Erlang とか Haskell STM とか SML
Manticore でググってみよう
2008/05/22(木) 09:59:35
なんでそんな攻撃的なんだ・・? 少しは肩の力抜けよ。
ML勢はそのあたり手が出せないなんて一言も言ってないんだが。
2008/05/22(木) 10:49:27
>>38>>41の意味が分からないんですけど、
誰か教えて・・・。
2008/05/22(木) 11:48:44
そう言えば前にKYな香具師がC/C++の宿題スレにOCamlの
ソースを回答してフルボッコされていたな

マイナー言語のユーザーってこんなんばっかし
2008/05/22(木) 20:02:21
まぁKYのK==空気は、勢力の拡大によってしか得られないもので、
今現在弱い勢力が大人しくKを読んでたら、いつまで経っても弱小のままだからな。
ビラ配りとか反政府ゲリラと同じ。弱小勢力は常に「最大勢力から見たKY」にならなきゃ強くなれん。


・・・でも宿題スレはねぇなw
2008/05/23(金) 01:38:51
せっかく訂正してあげて丁寧にポインタまで並べたのに、
仕事から帰ってきたら意味不明な逆切れされてて俺カワイソス…
Erlang くらいは常識として知っておいても損はしないんだが…

>>45
>>37 に ML という言語の経験者の採用が載っている。
Lisp に CL と Scheme があるように、ML は大まかに
言って SML と OCaml がある。>>37 には ML としか
書いてないから >>38 は OCaml じゃなくて SML の
求人なんじゃないのと指摘している。実際の所は >>41
の通り OCaml で有名な会社なので、OCaml の仕事が
ある可能性は高い。」という話だよ。
2008/05/23(金) 02:22:08
>>47
そうではないと思う
出るのが単に遅すぎただけだよ
後に出せばそりゃ先行言語の欠点を取り除き利点を多く持った言語になるだろう

しかし勢力が弱いという事実が決定的な弱点だ
2008/05/23(金) 02:26:02
虎の威を借るって奴か
2008/05/23(金) 02:40:21
まあある意味極論すればC++はCの威を借る狐だ
いや極論しなくてもまんまか
しかしこれだけ主流になってしまえば後発の優れた言語が
その座を引きずり降ろす事は困難だろう
52デフォルトの名無しさん
垢版 |
2008/05/23(金) 03:05:54
C++は速いから好まれてると思う。
2008/05/23(金) 05:42:43
ていうかソースと機械語との対応が類推できるから、が大きいと思うな。
ノイマン型コンピュータ使ってる限り、どう書けば速くなりそうかが
わかりやすいC/C++が好まれるのは自然な気がする。
で、結果的に速いコードが書けるので職人プログラマに好まれる、と。
54デフォルトの名無しさん
垢版 |
2008/05/23(金) 07:15:08
>>53
あんたは、C++のソースがどういうコードに落ちるか想像つくのか。
そんなわけないだろ。
2008/05/23(金) 07:41:40
つく人多いと思うよ
そんなわけないって言う理由が分からない
2008/05/23(金) 07:52:56
想像つかなきゃ、アセンブリ出力を眺めるだけだな。
なるほど、職人プログラマに好まれるわけだ。
57デフォルトの名無しさん
垢版 |
2008/05/23(金) 07:52:57
>>55
よしわかった。
そこまで言うなら、boost::spiritを使い四則演算可能な電卓を作成、
これがどのようなコードに落ちるか予測しなさい。
期限は本日09:00まで。
2008/05/23(金) 08:05:15
お前と違って今から出社なので
2008/05/23(金) 08:15:18
spiritはC++単体で動いてるんじゃなくてなんかライブラリ呼び出してるんじゃなかったっけ
かなり高水準なことしてる部分だからそんなところのマシンコード誰も気にしないっしょ

仮想関数テーブルなんかが出てこない限りはアセンブリコードとの対応は
C++の場合わりとわかりやすいよ
2008/05/23(金) 08:20:40
>>59
> なんかライブラリ呼び出してるんじゃなかったっけ
> 仮想関数テーブルなんかが出てこない限りは
2008/05/23(金) 08:23:04
ん?なんかおかしいかな?
Cでたとえばprintfの中身の実装まで普通はコード気にしないのと同じだと思うけど
62デフォルトの名無しさん
垢版 |
2008/05/23(金) 08:27:05
>>61
いや、マジレスするのもはばかれるくらいなんだが、問題はそういうことじゃないだろ。
釣りのつもりじゃなかったら、とりあえずC++使ってみろ。
釣りなら、知ったか厨認定される前に釣りでしたってレスしとけ。
2008/05/23(金) 08:30:09
なんで?
おかしいならおかしいとこ教えてくれよ
64デフォルトの名無しさん
垢版 |
2008/05/23(金) 08:31:00
>>63
ということは、釣りではないんだな?
2008/05/23(金) 08:33:07
うんうん
あと俺、いちおうC++使ってるよ
2008/05/23(金) 08:34:34
>>57
55じゃないけど、C++ソースから機械語コードを想像って話で、
boostを出すのはおかしくない?
boostって、どうテンプレート展開されて、
どんなC++ソースになるか追い辛いから変態とか言われる訳だし。

それと電卓がどうってのも例として変な気がする。
今の文脈での想像って、クラスのメモリイメージ(仮想関数テーブルなども)、関数でのスタックの使用イメージ、
典型的な最適化イメージ、とかのことじゃないの?
67デフォルトの名無しさん
垢版 |
2008/05/23(金) 08:34:37
>>65
では、心置きなく言ってやろう。
知ったか乙!
2008/05/23(金) 08:35:30
spiritはテンプレートな
2008/05/23(金) 08:35:54
知ったかはあんたじゃないの?
おかしいならどこがおかしいのかはっきり言ってくれないとわかんないな
2008/05/23(金) 08:39:43
だからさ、テンプレートの本来の普通の動作としてコンパイラが処理できる範囲じゃなくて
中でライブラリ呼び出してるんだからあんまり適当な例じゃないんじゃねーのって言いたいんだけど

それでも間違ってる?
2008/05/23(金) 08:46:14
そもそも自分の書いたコードがどういう機械語に落ちるかって話であって
ライブラリ(テンプレートライブラリ含む)が内部で実装してるコードまで
追っていくんじゃきりがないから気にしないでしょ、って話もおかしい?
2008/05/23(金) 08:47:35
おかしくないと思う。
2008/05/23(金) 08:49:13
同じニーモニックなら同じマシンコードに落ちるとかも普通に思ってそうだな。
2008/05/23(金) 08:50:06
めんどくさい人だな。がんばって突っ込みいれてみたよ。
突っ込もうとして途中でやめた >60 の気持ちがわからんでもない。

> spiritはC++単体で動いてるんじゃなくてなんかライブラリ呼び出してるんじゃなかったっけ
いいえ。

> かなり高水準なことしてる部分だからそんなところのマシンコード誰も気にしないっしょ
わざわざ設定された例題について、気にする気にしないを述べる意味がわからない。
例題が適切かどうかは知らないけど。

> 仮想関数テーブルなんかが出てこない限りはアセンブリコードとの対応は
> C++の場合わりとわかりやすいよ
アセンブリコードとの対応が難しくなる線引きは仮想関数テーブルなんかではありえない。
関数アドレスを並べたものが対応するに決まってる。
2008/05/23(金) 09:12:05
> > spiritはC++単体で動いてるんじゃなくてなんかライブラリ呼び出してるんじゃなかったっけ
>いいえ。
そうなのか〜
どっかでboost::spiritはなんとかってルーチン呼んで利用してる、って書いてあった気がしたもので・・ごめんね

> わざわざ設定された例題について、気にする気にしないを述べる意味がわからない。
いや、だってさ、単純なものならともかく、一行書けば膨大なコードに展開される部分をもってきて
機械語想像しろ、ってのはちょっと違うとおもうんだけど。
ライブラリの出来を比較してるんじゃないんだからさ、言語本来の命令や構文で書かれた部分が
主体の例題じゃなければ、意味ないんじゃないの?

> アセンブリコードとの対応が難しくなる線引きは仮想関数テーブルなんかではありえない。
> 関数アドレスを並べたものが対応するに決まってる。
そんなの人それぞれじゃないの?トレースしにくくなるから嫌い、って人もいるでしょ
2008/05/23(金) 09:14:33
>>73
同じニーモニックなら同じマシンコードつーかオペコードに落ちるのが普通だと思うけど?
2008/05/23(金) 09:20:55
>>75
>> わざわざ設定された例題について、気にする気にしないを述べる意味がわからない。
> いや、だってさ、単純なものならともかく、一行書けば膨大なコードに展開される部分をもってきて
...
> 主体の例題じゃなければ、意味ないんじゃないの?

そう。例題として適切じゃなかったようには思う。
でも、それが言いたかったなら「気にしないっしょ」で伝わるわけないだろ。

>> アセンブリコードとの対応が難しくなる線引きは仮想関数テーブルなんかではありえない。
...
> そんなの人それぞれじゃないの?トレースしにくくなるから嫌い、って人もいるでしょ

59 の書き方では「人それぞれ」という意図は伝わらない。
あと、アセンブリコードとの対応の話と「トレースしにくくなる」とか
「嫌い」とかの話はまるでつながってないぞ。


総じて、読む人にエスパー能力を期待しすぎている。会話がしたいなら気をつけて欲しい。
2008/05/23(金) 09:27:49
>>71
>テンプレートライブラリ含む

これはおかしいだろ。
明示的に自分で書いたコードだろうがライブラリが暗黙的に
展開しているコードであろうが、少なくともコンパイル時に
生成されるコードは把握出来ないとな。
2008/05/23(金) 09:32:56
なに言ってるんだか・・
じゃああんたはマクロアセンブラでマクロとして実装されたライブラリを
アセンブル時に中身を全部把握してないとだめだとでも言うのかあ?
80デフォルトの名無しさん
垢版 |
2008/05/23(金) 09:41:45
いいことを教えてやろう。
極めた人間はどの分野でも一握りだ。
つまり数が少ない。
一方、入門者は多い。
言い合いになると極めた人間のほうが打ち負かされるのだ。
少なくともニチャンネルではそうだ。
ここでは数の論理が働く。
つまり、ニチャンネル的にはC++はテンプレート禁止。
ついでに仮想関数も禁止。
これでおk。
2008/05/23(金) 09:44:32
はいはい、自分は極めた人間で相手はバカでないと気に入らない、と。
言い負かされるのは俺様みたいに極めた人間は少ないからだ、と。
おめでたいねえ
82デフォルトの名無しさん
垢版 |
2008/05/23(金) 09:48:21
>>81
いや、>>78>>79のやり取りを見て書いただけだ。
おれは関係ない。
2008/05/23(金) 09:52:16
関係ないんならわざわざageてまでくだらないこと書くなよ
すっこんでろ
2008/05/23(金) 09:57:16
>>81
なにムキになってんの
2008/05/23(金) 10:04:05
アセンブリコードまで気にしてガリガリにチューナップしたいプログラムにboostは使わないでOK
2008/05/23(金) 10:04:23
機械語が想像つく派はテンプレートを普段使わないからだな。
しかも、機械語について語りつつも、ニーモニックが同じなら
オペコードも同じなどと述べちゃってるところをみると、
機械語も詳しくなさそうだ。
よって放置推奨。
2008/05/23(金) 10:10:27
違うのか?
特殊なアーキテクチャのモノならしらんけど、普通のCPUなら
ニーモニックとオペコードは1対1対応でしょ?
2008/05/23(金) 10:12:44
>>87
その程度の見識しかないならあまり偉そうな物言いは避けたほうがいいと思う。
これ豆知識な。
2008/05/23(金) 10:14:00
またかよ・・違うならどこが違うのかはっきり言ってくれ
偉そうなのはどう見てもおまえのほうだろ?
2008/05/23(金) 10:27:52
ニーモニックが同じでも対象 CPU やアセンブラが違えば違うオペコードになるだろう。
きっとそういうことさ。
2008/05/23(金) 10:35:37
そ、そんなことが言いたかっただけ・・? マジ?
2008/05/23(金) 10:35:59
機械語が想像つく派だけど、テンプレートを普段使ってる。
テンプレートの展開と機械語への変換は異なる問題領域だと思う。

大雑把にフェーズを分けると、
 プリプロセス → template展開・inline展開 → コンパイル
という感じで。

ただ、俺の言う「想像つく」と、他の人の言うそれの認識が
一致してないかもしれない。

ニーモニックのこと話してる人達も、
「同じ」ことの意味、前提がズレてるんじゃないの?
2008/05/23(金) 10:40:50
まぁあれだな
肥大化と言えばJavaの方が酷いだろ
C++は仕様はシンプルだぜ
2008/05/23(金) 10:46:04
C++ 言語仕様の肥大化大きすぎ、ライブラリーも肥大化しているが表面化していないのでOK。
Java 言語仕様はまあまあ、これから肥大化の可能性あり。
    クラスライブラリーが肥大化、統一場所が少ないので、場合によっては無秩序。
2008/05/23(金) 10:54:18
C++の場合「機械語が予想つく」ではなく
「機械語を予想できるコードを書ける」と言うべきではないかと
それが必要ないならテンプレートでも仮想関数でも何でも使えばよろし
手段は一つじゃないしそれをマが選べるのがC++の最大の強み
まあ適切に選べるだけの知識が無ければC++なんて複雑なだけのフリーク言語だろうけど
2008/05/23(金) 10:59:31
機械語を予想できることと、
テンプレートや仮想関数を使うことは
何も対立しないと思うけど。
2008/05/23(金) 10:59:43
>>87
違うCPUの方が一般的
2008/05/23(金) 11:05:48
>>97
いくらなんでもそれは無いだろ。
一般的にはアセンブリのニーモニックはオペコードは1対1。
↓の記事が間違ってるとは思わない。
http://e-words.jp/w/E3838BE383BCE383A2E3838BE38383E382AF.html

たとえばどの CPU のどのニーモニックに対して複数のオペコードが対応するの?
99デフォルトの名無しさん
垢版 |
2008/05/23(金) 11:20:06
>>98
ってことは、>>97がその程度の一般常識で勘違いしてる馬鹿または嘘吐きってことか。
2008/05/23(金) 11:25:00
なんでageる人って他人を叩くだけの中身のない書き込みするん?
101デフォルトの名無しさん
垢版 |
2008/05/23(金) 11:26:56
>>100
おれは>>97が正しいと思ってるし、叩いてない。
>>98の知ったかが非常に鼻についたので余計なレスしたかもしれんな。
2008/05/23(金) 11:28:04
>>89
>偉そうなのはどう見てもおまえのほうだろ?

フイタw全くだなww
2008/05/23(金) 11:47:00
ニモニックが同じでも対象レジスタ(≠オペランド)が変わるとオペコード変わるCPUが多い
2008/05/23(金) 11:56:08
ひとつのオペコードに複数のニーモニックがある場合も結構あるから
すくなくとも「1対1」なんて幻想にすぎない
2008/05/23(金) 11:59:10
>>103
そのCPUの名前教えてくれよ
多いというんだからいくつでもすぐに挙げられるんだろ?
2008/05/23(金) 12:00:13
>>98
そのリンク先でたらめで笑える
「原始的で構造が単純であるため、習得に時間がかかり」
論理が破綻してんじゃん
107デフォルトの名無しさん
垢版 |
2008/05/23(金) 12:00:51
>>105
おまらの大好きなia32だってその一つだろうに。

>>103-104
あんた親切にもほどがあるよ。
108デフォルトの名無しさん
垢版 |
2008/05/23(金) 12:01:33
>105
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ ,  /,   ,\  Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′  
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    >┻━┻'r‐'´
      ヽ_         |
         ヽ _ _ 」    

  ググレカス [ Gugurecus ]
2008/05/23(金) 12:03:06
そんな命令見たことないなあ
暗黙のアドレッシング、って概念を知らないんじゃないの?
2008/05/23(金) 12:03:35
>>105
ほとんどのCPUがそうだから例を挙げるまでもないだろ?
111デフォルトの名無しさん
垢版 |
2008/05/23(金) 12:04:20
結局、e-wordsなんか見て俺天才なんて言ってるやつが機械語が想像つく
なんて言ってるんだろ。
まったくやれやれだよ。
2008/05/23(金) 12:05:45
レベルが低すぎて話についてゆけない
2008/05/23(金) 12:05:52
MOV AX ほげ
とか書いたとき
実際にはMOV AXまでが命令で、オペランドは「ほげ」だけだから
同じMOVでもオペコードは当然一つにはならないCPUが多いよって話だよね?

みんな使ってるx86もそうだよね
114デフォルトの名無しさん
垢版 |
2008/05/23(金) 12:07:34
>>113
さぁ?
それは知らん。
2008/05/23(金) 12:10:02
やっぱりそんな話かよ・・くだらねー
ageる奴がもったいぶって言わないことっていつもこの程度だな
2008/05/23(金) 12:12:10
>>113
命令デコーダーレベルで考えてみて欲しい
bit単位でオペコードとオペランドに分けるならどう?
2008/05/23(金) 12:14:20
D使ってみて思ったけどC++まだ原液でいいよ
118デフォルトの名無しさん
垢版 |
2008/05/23(金) 12:14:35
念のためあらかじめ書いておくが、ここは二チャンネルだからな。
妙な親切心出すなよ。
煽られて答えを書くなんてもってのほかだぞ。
そうお前、お前が今書こうとしてることは想像がつく。
だがやめておけ。
そういうことは、金をとれるところで書け。
馬鹿に馬鹿にされたところで失うものはない。
2008/05/23(金) 12:16:34
x86はオペランドにイミディエイト使った場合とレジスタ使った場合で
オペコード変わるね。<ついでにレジスタ長でも変わる場合もある
2008/05/23(金) 12:17:32
MOVならMOVで、レジスタ指定やらアドレッシング修飾子やらまで
全部含めてニーモニックって言うんだよ。
でなきゃ1対1対応なんて誰も言うわけないだろ、常識的に考えて。
2008/05/23(金) 12:24:31
要はSSEを適切にはいてくれる
C♯が最強ということか
2008/05/23(金) 12:28:08
C#ってSSEを適切にはいてるけるのか? すまんソースプリーズ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況