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

■ このスレッドは過去ログ倉庫に格納されています
2008/05/17(土) 21:07:51
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
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を適切にはいてるけるのか? すまんソースプリーズ
123デフォルトの名無しさん
垢版 |
2008/05/23(金) 12:41:52
>>120
そろそろ勝利宣言か釣りでした宣言しとけよ。
2008/05/23(金) 12:50:15
もうage厨の因縁はお腹いっぱい
わかってないならとっとと逃げればいいのに・・・
いい加減に荒らすのはやめてくれないか
125デフォルトの名無しさん
垢版 |
2008/05/23(金) 18:50:35
Dはc++の悪い部分を引き継いでるから駄目だろ
ありゃ流行らんわ
なんでc++がクソと言われてるのかわかってないね
2008/05/23(金) 19:24:18
C 系列の言語では D は JavaScript に次いで良い言語だと思うよ
2008/05/23(金) 19:51:21
Dが流行らないのは、単に「移行しやすさ」を軽視したからだと思う。
2008/05/23(金) 20:01:36
Erlangって常識なのか?
メチャメチャマイナーだとしか思わないのだが。
2008/05/23(金) 20:07:02
プログラムを書く人の間ではかなり知られているよ
2008/05/23(金) 20:14:18
訳本も出たし知られてはいるが、Erlangで10万行以上コード書いたことある人このスレにいる?
C/C++ならほぼ全員そうだと思うが。
2008/05/23(金) 20:19:16
>>130
>Erlangで10万行以上コード書いたことある

また見当違いのハードルを考えついたなw
2008/05/23(金) 20:25:15
>>131
いや日常的に使っている人がいるのかなと。

参考書の写経 + それの改造 でたくさん写経or改造する人なら
延べ1万行くらいわりとすぐ行くだろうから「勉強しただけ」かなって。
2008/05/23(金) 20:28:55
勉強しない奴の言う事か?
2008/05/23(金) 20:33:20
いや、俺はErlangはほんの少しだけ見ただけで詳しいことは
全然分からないレベルだから君の言う事はその通りなんだけど、

>Erlang とか Haskell STM とか SML
>Manticore でググってみよう

とか書いてる人は、これらをバリバリ実用した上で言ってるのかな、と
思ったんだよ。いろいろマイナーで特殊なことが出来てスゴいなって。
2008/05/23(金) 20:40:20
>>134
おまい、結局ググってないだろ…
だから質問のポイントがずれてるんだよ
2008/05/23(金) 20:44:46
>>135
またe-wordsか。
2008/05/23(金) 20:45:40
>>42に対しての>>43もズレてるけどな
2008/05/23(金) 20:46:35
>>135
まあ、俺は
>Erlang とか Haskell STM とか SML
>Manticore でググってみよう

と言われた人ではなく、”ほぼ”今北状態で>>130がこのスレでの最初のレスなんだがね。
まあ並列処理はC向きとか言われてErlangとか、HaskellのSTMとか言ったのでしょうが。

で実際に並列処理を上記のやつでみんなバリバリやってるのか知りたかっただけっす。
俺個人の予想は実際にやる時はみんなC/C++の方を使っているのではないかという
事だったので。
2008/05/23(金) 20:49:33
>>137
確かにな。ちょっと水準が違うよな。
>>43は「並列処理」「マルチスレッド」という言葉にだけ食い付いただけな感じがするな。
2008/05/23(金) 20:51:07
>>137
おかしな言いがかりは止めて下さい
2008/05/23(金) 20:51:26
何度か書いているけど、言葉の定義と前提がズレてる。
>>42が言ってる並列処理と>>43が言ってる並列処理は別物。

文脈から分かりそうなものなんだけどな。
2008/05/23(金) 20:54:48
ふーん、文脈ねえ…
俺は >>42 は何も知らないで単語を並べただけに見えるけど
一見ランダムに見えても規則性があるとか?
2008/05/23(金) 20:55:36
パフォーマンスのための並列処理と、
ロジック構築のための並列処理だ。
大枠の手段は同じだけど、
目的は異なり、交換不可能。
2008/05/23(金) 20:57:54
>>142
おまえやっぱり唯の煽りだなwwwww
最近関数型言語関係のスレに出没してるwww
2008/05/23(金) 20:59:43
>>138
>で実際に並列処理を上記のやつでみんなバリバリやってるのか知りたかっただけっす。

いやだからググれって。自分で調べるのは絶対にしない主義か?
Erlang はエリクソン内部では使われているらしいが後は twitter で
使われてるくらいだ。他は研究プロジェクトレベルなんだから
バリバリ使っている訳が無いだろ。そもそも >>42 はデモとか
言ってる時点でバリバリ使ってるという話じゃないのは文脈から
分かりそうなものなんだけどな。

もう一回書くけど、見当違いな質問をする前にググれよ…
2008/05/23(金) 21:00:42
>>144
いいからお前が言うな。
2008/05/23(金) 21:00:57
>>42の文脈でコア数を大きく超える並列は無意味、むしろマイナス。

>>43の文脈で、コア数は関係無く、むしろ多数の並列処理を低コストかつ簡易に記述出来なければ意味がない。
2008/05/23(金) 21:01:39
>>147
エスパー、もっと詳しく!
2008/05/23(金) 21:04:32
ググレと書いてるやつは、自身もググって書いてるのだろうから、
相手するだけ無駄だといい加減気が付いたほうがいい。
2008/05/23(金) 21:06:54
>>149
そういう書き込みが一番無駄だな
スルーも出来ないし反論も出来ないのは辛そうだね
2008/05/23(金) 21:08:59
>>150
>>150
2008/05/23(金) 21:09:09
>>150
反論する必要ないんだよ。
おまえは一生懸命ググって反論してろ。
2008/05/23(金) 21:11:01
>>148
俺は未知の情報を得た訳でなく、レスから推測しているだけだ。

>>42の「低水準」から「並列処理」には一貫性がある。
カーネル領域、役割についての話。
主に>>33の言う形態に反応したと予想。

>>43はそれに対して、並列という言葉に反応してしまったと予想。
骨でなく、むしろ上位の範疇だと。
挙げられた言語の特性から、
これは簡単に分かると思う。
2008/05/23(金) 21:11:24
>>152
反論出来ないなら相手するだけ無駄だといい加減気が付いたほうが良い。
お互い週末を気持ちよく迎えたいだろ。
2008/05/23(金) 21:15:06
>>153
すまんが言ってる意味が分からん。
並列処理の部分だけ明らかに異質だと思うが、どこら辺に一貫性があるんだ?
「骨っぽい並列処理」とはどんなものか説明して欲しいね。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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