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

■ このスレッドは過去ログ倉庫に格納されています
2008/05/17(土) 21:07:51
前スレ
http://pc11.2ch.net/test/read.cgi/tech/1201567967/
2008/06/07(土) 06:19:37
>>272
少なくとも、言語仕様レベルで
深入りしないようにしようという判断をした(テンプレート周りだが)のはC++が初めてだ。

普通にコードを書くのにEffectiveほにゃららの通読必須ってあたりで何か狂ってるんですよ。
ゲーム屋だけど、本当に代わりがないから使ってるに過ぎない。
2008/06/07(土) 10:07:44
>少なくとも、言語仕様レベルで
>深入りしないようにしようという判断を
>
>ゲーム屋だけど、本当に代わりがないから

深入りしなかったおかげでC++も使えるんだろ。
言語が今以上に複雑でコンパイラの実装が困難だったら
まともなサポートが得られず、
単に、C言語だけが選択肢になる。


言語の複雑さが仇になるのは、
主にアホが書いたソースをメンテするケース。
まともなメンバーで作る分には問題無い。
2008/06/07(土) 10:27:03
そして、そこでいう「アホ」程度ならそこら中にいるので、
つまりC++の複雑さはそこら中で「仇になる」わけだ。
2008/06/07(土) 10:29:22
>>272
分母の差かどうか知らんが、色々と選択してC++が最適だと思うケースに
C++を使う言うだけだと思うが。困ると言うよりかは要求に答えてくれるか?ってのが
重要だろうに。

漏れの職場だと自分だけの書きなぐり使い捨て速度はそれほど必要ないケースだと
Python使うし、ある程度みんなが使ったりメンテが重要だったりするケースはJavaで、
変態的(?)かつ、動作環境べったりでパフォーマンスが要求されるときにC++って
使い分けてる。
2008/06/07(土) 10:30:16
アホばかりの会社の問題を言語の問題にしたいわけですね、わかります。
282281
垢版 |
2008/06/07(土) 10:31:38
>>279
2008/06/07(土) 10:44:29
>>282
現実にそこら中にいるのだから、
「会社の問題であって言語の問題ではないんだァ!」
とか押してもね。

1万人に1人が怪我をする道具で怪我をしたなら、流れ的にそいつの不注意とか不運の問題になるけど、
これがたとえば3人に1人が怪我をするとなると、この道具危ないよねっていう問題になってくる。

君個人が有能だったり、とても優れた職場しか知らずその辺りが当たり前だと思って生きてるなら、
それは素晴らしいことだし、ずっと続くことを祈るけど、その場合残念ながら、君は
「現実を全般的に捉えた話のできない人」ということになる。恵まれすぎている。
2008/06/07(土) 10:57:04
>3人に1人が
IT土方乙w
2008/06/07(土) 11:15:01
いや、たとえの数字に食いつかれてもなぁ・・・。
ていうかなんでそんな目ぇ血走らせてるの? 休日の朝から。
2008/06/07(土) 11:16:03
>>283
教習所にも行かせずに自動車使わせているようなものだな。
教育も何もせず、新人をいきなり実務に入れてそうだ。客も可哀想だ。

それにC++に向いてない奴は他の言語の仕事に、
プログラムに向いてない奴は資料作成/客先対応/
テスト/サポートデスクなどの仕事に回すことも考えるべき。

単にお前さんが悲惨職場しか知らないんだろう。
そんなに問題のある言語なら、これほど広まることもない。
2008/06/07(土) 11:16:19
今時(?)C++を使うのは「神に選ばれた戦士」的な思い込みがあるのかもしれんが、
現場のPGなんてほとんどドカタだからなぁ。

まあ、とは言え言語の性にするのは美しくないけどな。
やっぱりアホが書いたソースならVBだろうがCOBOLだろうがイヤなモンはイヤだし。
2008/06/07(土) 11:17:14
>>285
>ていうかなんでそんな目ぇ血走らせてるの? 休日の朝から。
自分がそうだからといって、相手もそうだと思わない方がいいぞw
2008/06/07(土) 11:19:06
>そんなに問題のある言語なら、これほど広まることもない。

広まっていないと思うが。
2008/06/07(土) 11:27:35
>>285
察してやれよ。休日の広いフロアーに一人は寂しいぞ。
2008/06/07(土) 11:29:36
Joelの言ってる「5つの世界」でソフトウェアに対する要求も
プログラマの質も随分違うと思う
ttp://japanese.joelonsoftware.com/Articles/FiveWorlds.html

日本だと一番C++が使われてるのって何だ。フリーソフトとゲームか?

昔ならCOBOLやVB、今ならWebやってるような
土方の現場には、そりゃC++なんて要らないでしょ
2008/06/07(土) 11:45:40
数で言うならC++はフリーソフトとかゲームだろうなぁ。

デバドラとかハードべったりの専用ソフトの現場もC++が普及しているけど、
これもドカタじゃないとか言うのは違うと思うが。
2008/06/07(土) 11:52:11
むしろハード屋さんはCかと思ってた

ゲームみたいに抽象度と複雑性が高い上に性能要求も高い分野で
他に適当な選択が無いからC++なのかな、と

まあ日本にも商用パッケージ一応あるけどな
社内以外で誰も使ってないRDBとかw
2008/06/07(土) 12:19:58
HiRDBだったっけか?
日立に仕事たのむとHP-UXにOracleを納品してくると言うプライドの無さが
ステキだった印象しかないんだが。

伝え聞くところによるとあのドライバの出来の悪さは特筆モノだったようだが。
まあ、これこそドカタが作った見本なのかもしれん。
2008/06/07(土) 15:47:27
3人に1人が怪我をする様な機械なんて、普通にあるじゃん
自動車なんて、その筆頭だろう
2008/06/07(土) 16:06:43
またたとえの数字に物言う馬鹿が出た。
2008/06/07(土) 16:55:15
例えになってないから突っ込まれる

それに、ボケられたら突っ込まなくちゃ、ボケた相手に失礼だし
2008/06/07(土) 17:16:37
の割には、まったく突っ込みになってないからなぁ。
新たなボケのつもりなら超つまらないし。
2008/06/07(土) 17:23:51
自動車のたとえを持ち出すなら、
あっちの自動車(C++)とこっちの自動車(他言語)の事故発生率が
まるで違う、前者の事故多すぎ、というのが、この話への正しい当てはめ方だからな。
>>295が「例えになってないから突っ込まれた」例だよね。
2008/06/07(土) 17:26:48
C++ を仕事で使うのに免許を必要として欲しい。
2008/06/07(土) 17:47:28
>>299
例えがかわっとるw
元の例えに近づけるなら
「四輪車は転ばないから安全、しかし、二輪車は転ぶから危ない」
だろw
2008/06/07(土) 18:23:00
>>301
いいえ。
2008/06/07(土) 18:42:10
>>283
優秀な人材だけが集まる企業なんて無い
ぼんくらを優秀な人材にする企業は有る

優秀な人材をぼんくらにする企業が大多数だけどな
2008/06/07(土) 21:53:46
他の言語というのはJavaなんかを念頭に置いてる?
Javaはきれいですか?肥大してませんか?
D?
Dはまぁ悪くないか
でも小さいとはいえないな
2008/06/07(土) 22:17:01
新しい言語が単純なのは当たり前

C++ は D&E を読めば少しは簡単に感じるようになるよ。
なぜそのように設計をしたかを詳しく説明しているから。
2008/06/07(土) 22:27:30
Javaは型のパラメタ化が不十分だからリフレクションとダウンキャストのカオスが必要なんだよな
2008/06/07(土) 22:53:00
>>305
世の中には良い言語設計者と悪い言語設計者がいるのだよ。
どれだけ後から言い訳の本を出しても埋まらない溝がある。
2008/06/07(土) 22:54:06
そういえば C++ のクロージャの構文ってどんなだったっけ?
2008/06/07(土) 22:57:10
>>307
言い訳とかいってる時点で読んでないのが丸わかり。
あるいは、自分が受け入れたくない理由のことを言い訳と言うんだ、と思ってるお馬鹿さんか。
2008/06/07(土) 23:20:18
どんな本を書いても設計が悪いのが覆るわけじゃないからな
敗者の弁なんて誰も読みたくないだろ
2008/06/07(土) 23:25:35
D&Eが出たのは'94年だしもっと古い文献を引用しているよ。
こんなに古いのにJavaの特徴に否定的なのは面白いな。
2008/06/07(土) 23:26:01
それだから人間また同じ失敗を繰り返す。
失敗談から学ぶのもいいじゃないか。
2008/06/07(土) 23:26:51
>>305
>D&E を読めば

C++ を必死に勧める人間はいつもこう言うね。
攻略本を読まないと面白さが分からないゲーム
みたいでアホらしい。まあこの場合は攻略本を
読んでも全く面白味がない訳だが。
2008/06/07(土) 23:29:21
C++の設計が悪いと言う人が想定している設計が良い言語とはなんなんだ
ほんとはC++のどこが悪いのかもわかってないんでしょ?
多分C++以外の言語も理解できないんでしょ?
2008/06/07(土) 23:29:59
なにそのアンサガ
2008/06/07(土) 23:31:40
C++ がロマサガだったら世界はもっとハッピーだったろうなあ
2008/06/07(土) 23:32:36
C++に限らず特定のものを個人の評価に依存する状態で必死に勧める人間は
他人を見下して優越感に浸りたいだけの様な気もする。
2008/06/07(土) 23:37:57
>>314
たぶんHaskellとか言いだすんだろうな。
で、実際にHaskellをバリバリに使ってるかというとそういうわけではない、と。
2008/06/07(土) 23:39:40
仕事でいまさらVBとかCとか非力な言語使いたくないからC++を薦めてる。C++使って楽しようぜ。
2008/06/07(土) 23:39:59
攻略本はEffective 〜のほうだろ。

D&Eはどうしたらこんなアレな出来になるかという過程を書いた読み物として
C++知らない、使う気のない人間でも楽しめると思っている。
(俺が初めて読んだのもC++よく分かっていない頃だったし)
これ読んでもC++がどうしようもない言語だという思いは変わらない。
2008/06/07(土) 23:42:44
>>313
つまり、ボクは攻略本を読んでも理解できないほど頭が可哀相、という自己紹介ですね。
2008/06/07(土) 23:43:34
Windows だけで良いなら C++ が良いんじゃないの
熱狂的に勧誘する気が知れないが
323314
垢版 |
2008/06/08(日) 00:20:08
やっぱりないんかい!
あんだけ煽ったのに
2008/06/08(日) 00:31:47
>>277
>ゲーム屋だけど、本当に代わりがないから使ってるに過ぎない。

まあそれが現実だよね。
良い物だけを使って仕事ができるならそれが一番だけど。
2008/06/08(日) 00:42:54
C++ には数々の変態的要素があるが、
確かにネイティブコンパイルするタイプの言語で
代替となる言語は存在しない。
D もガベコレのせいで代替とはなれない。
2008/06/08(日) 00:49:57
>>325
そうだよね
マルチタスクOSで走るアプリケーションでもStop The Worldが許容できないケースは結構あるからね
2008/06/08(日) 00:58:42
D&Eとか読んだほうがいいよ
C++のすばらしさを分かりやすく説明しているから
2008/06/08(日) 01:07:44
>>327
俺はそれよりもC++0xの提案が洗練されていくさまを見ると良いと思う
彼らは賢明だしいい仕事をしているよ
予定は遅れてるけどね
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2597.html
2008/06/08(日) 01:18:41
>>325
Dは有力候補ではあるんだけど、仕事で使うのは無理だろうね
2008/06/08(日) 02:12:51
そろそろ C++1x になる日も近いな
2008/06/08(日) 03:40:19
>>315
アンサガと違ってコレクターはいない。
2008/06/08(日) 05:20:31
俺はC++と心中するぜ
あばよ、達者でな
2008/06/08(日) 05:33:57
無茶しやがって…
2008/06/08(日) 10:25:10
>>330
大丈夫、まだC++0Aから0Fまで(ry
2008/06/08(日) 10:31:10
日本が独自に拡張を行ったC++平成がリリース
2008/06/08(日) 14:04:35
EC++の再来か
2008/06/13(金) 00:02:48
Mozilla 素敵

http://developer.mozilla.org/ja/docs/C%2B%2B_Portability_Guide
2008/06/13(金) 00:29:19
ほほう、面白いな。
でも、あまり古いコンパイラに束縛されるのも考え物だな。この辺は臨機応変かな。
2008/06/13(金) 10:51:15
>>337
C++大好き派なんだけど、こういうのが逆に一番効くな(´Д`;)
これをもって、「こんなに制限されるなら、
初めからCで書いた方が良くね」って言われたら中々反論し難い・・・。

俺がC++の開発でいつもおかしいと思ってるんだけど、
何でC++ソースからネイティブバイナリに一気に変換するんだろうか・・・。

cfrontは例外が実装(Cのソースで妥当なオーバヘッドで)出来なくて
逝ったらしいけど、各プラットフォームのコンパイラが、
例外に対応した C+0.1 くらいの中間言語を用意すれば、
開発者PC上で C+0.1 までは変換しておける。

そうすればnamespace、テンプレート、実行時型情報、inline最適化などは、
開発者PC上のコンパイラ側の問題になる。

役割分担せずにフルスペックでやろうとするから、
こんなアホな状況になったと思うんだよな〜。
2008/06/13(金) 11:09:03
表現が変だったので訂正。

各プラットフォーム用のフルスペックのC++コンパイラを用意せずに、
C+0.1 くらいの中間言語(禿げ達で策定)のコンパイラだけ用意すれば良い。
ってことね。
2008/06/13(金) 11:12:09
C++の実行形式作成には、
linkerもC++対応が必要なことは理解できてる?
あまりよく知らないcfrontの話は混ぜないで考えた方がいいよ。
2008/06/13(金) 11:18:34
具体的にどんなの?
名前マングリングとかの話なら、
必要最小限を中間言語で扱えばいいし。

リンカも含めても良いけど、
フルスペック実装しようとするのが間違いって俺は言ってる。
2008/06/13(金) 11:19:39
教えて貰う態度じゃないw
2008/06/13(金) 11:27:41
>>343
煽りに来ただけなら、
別に教えて頂かなくても結構だよ。
2008/06/13(金) 11:54:40
マングルはリンカのC++協力必要ないだろ。
そのためにフラットな名前にマッピングしてるんだから。
2008/06/13(金) 20:04:02
C++に必要だったのはCのリンカやコンパイラ資産を使えること、
だから今言ってもしょうがない。
中間言語に変換するコストだって20年前なら馬鹿にならなかっただろうし、
そんな言語をもう一つ作るような手間のかかることしてたらISO規格になれず
マイナー言語で終わっていただろう(と言うような事をD&Eでは繰り返し述べている)。

つーか結局の所それなんてC++/CLI?ってことになるんじゃ。
2008/06/13(金) 21:09:13
>>346
流石に斜め読みし過ぎです・・・。

最初のC++コンパイラcfrontにとって
実質C言語を中間言語とするものだった。

でも例外を実装しようとしたとき、
スタック巻き戻しなどがC言語の表現では出来なかった。
(コスト度外視すればもちろん出来るけど)

そこで、直接ネイティブコードを作ることで
問題を解決したんだけど、
その方法でなく、C言語に必要最小限の拡張を加えたものを
「cfrontのために」用意する方法でも良かったんじゃないかと。

そうすればマイナーな環境において、
「完全なC++コンパイラ」を用意しなくても、
「ちょっと拡張されたCコンパイラ」を用意するだけで
済んだのでは、という話。

今何か言った所で現実が変わることは無いってのは
分かってるけどね。

あと、D&Eで書かれてたのは、
あの時代に理想の言語を作ろうとしてたら、の話だよね。
C++/CLIは現実主義ベースだと思うけど。
2008/06/13(金) 21:14:29
LLVM の C++ は一旦 C にコンパイル出来るみたいね
ストラウストラップには無理でも他の人間がやれば出来る
2008/06/13(金) 21:22:32
>>348
> LLVM の C++ は一旦 C にコンパイル出来るみたいね

病院行ってこい。
2008/06/13(金) 21:23:11
何言ってんの?
2008/06/13(金) 21:33:11
試したことないから、まるで実用にならないの知らないみたい。
2008/06/13(金) 21:35:16
何言ってんの?
353347
垢版 |
2008/06/13(金) 22:02:14
>>348
ググって読んでもどんなツールかいまいち分からなかった。
薄くラップしたバイナリ作る・・・みたいな感じ?
ともかく、どんなCのソース出すか興味あるんで使ってみるよ。
2008/06/13(金) 22:21:24
>>351
専ブラどれ使ってるの?
2008/06/13(金) 22:40:15
>>353
C++→Cじゃなくて、
C++→LLVM→Cだからひどいソースだよw
2008/06/13(金) 22:57:45
そういう話じゃないだろ
2008/06/13(金) 23:05:30
例外を有効にすると壊滅的に遅いからデフォールトはオフ。> LLVM
巻き戻しポイントで常にsetjmp。
2008/06/13(金) 23:17:17
http://llvm.org/docs/FAQ.html#translatec++

そう書いてあるね。ストラウストラップごめん。
今度はもう少しまともな言語作ってくれな。
2008/06/13(金) 23:26:10
ちょっと疑問に思ったんだが、最初C++はCのトランスレータとして
誕生したよな。

そんで例外処理がCだけでは記述不可能なのでネイティブコン
パイラが作られたと聞いてるんだが、LLVMは例外処理をどのように
吐き出してるの?
2008/06/13(金) 23:30:41
あ〜やっぱ遅いのか・・・。残念。
まぁ、手があるならcfrontでやってるはずだしね。

>>359
setjmp/longjmp
コスト無視ならsetjmp使わなくてもどうにでも実装出来るよ。
2008/06/13(金) 23:47:48
>>360
サンクス。やっぱそれしかないよね。
MinGW用のバイナリが出てるみたいだから遊んでみるかな
2008/06/14(土) 07:05:24
LLVMのC backendは、
Cへのトランスレータだけだった頃のcfrontと同じリンク時の問題抱えているよ。
LLVMは言語独自の機能のロードタイムサポート持ってるんだけど、
ネイティブコンパイラはcrt0.sなんかも使ってかなりトリッキーな事してるから。

しかしこの話題はスレ違いではw
2008/06/14(土) 09:17:14
そんなに面倒という話を聞くと、Windowsが例外処理を直接提供するというのも頷ける。
2008/06/14(土) 09:48:29
ネイティブ・コンパイラや
例外の機能を持っているC--を中間言語に使うなら何も問題ない。
2008/06/14(土) 11:04:32
デクリメントかよw
2008/06/14(土) 11:20:59
これだな。
http://www.cminusminus.org/

LLVMもCに変換して実行しないなら、
C++のコンパイラ何の問題もない。g++改だし。
2008/06/14(土) 20:48:15
環境に応じて言語が拡張していくものはすきじゃないな。
2008/06/14(土) 21:22:57
環境って?

いや、言語が拡張ってことは、
所謂OSとか処理系とかのこととは違うのかなって思って。
2008/06/14(土) 21:31:32
>>367
環境に応じて拡張されるのはライブラリで、言語仕様は変更しない。C++はマジでそれを実践している。
文字列のクラスを例にすると、メモリが潤沢な環境ではstd::stringを使い、メモリの少ない組み込みでは社内ライブラリの文字列クラスを使うなど選択できる。
2008/06/14(土) 22:48:21
allocatorいじるとか。
2008/06/14(土) 23:00:42
つきつめていくと、もう人が複雑雑多な文法を覚えて
ちまちまコード書くという、非生産的作業を繰り返す
のではなく、それは機械にやらせて人間は仕様だけ
考えるというようにならなきゃいけないんだろうな
2008/06/14(土) 23:44:32
>>371
すると、もっと複雑な仕様を人間がちまちま書くことになって、今までどおりになるんだろな。
2008/06/15(日) 02:22:37
>>367
hosted / freestanding environmentのことかな?
3741/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社の言語となった。
3752/2
垢版 |
2008/06/15(日) 09:47:49
Sunは直ちに「何処でも全く同じに動く言語」の現実性を調査し、仮想マシンを使うことで可能であることを検証した。
また夢想言語JAVAの詳細を厨に尋ね、規格をまとめ……ようとした。というのは、厨の頭の中には「ポインターを使わない」の他には支離滅裂な妄想以外何も無かったからだ。
役に立たない彼を「夢想言語JAVAを広める為の広報」に追い出し、夢想言語JAVAではなく現実的なJAVA言語の設計が行われた。
だが現実的設計にはいろいろと難があった。その度に開発部は厨に尋ね、その意向を可能な限り反映する努力を行った。しかし無能な厨の意向を反映することは困難を極めた。
その中で最も大きな障害となったのが、多重継承の禁止である。
未だにSunは公式に認めていないが、JAVAが多重継承を禁止する決断をさせたのは、実はMicrosoftの寄与するところが大きかった。
Microsoftは既にMFCとCOMによって多重継承が抱える問題を解決していたからである。
その後も厨は(何度出入り禁止を喰らっても)設計に口を出し、そして開発部はその意向を可能な限り反映する努力を行ない続けた。
特に厨が主張するコーディング規約は支離滅裂を極め、ゴスリンは「それまでに書かれたコードを書き直す量が最も少なくなるコーディング規約」をまとめる必要に迫られた。
この時にまとめられた何の意味も無いコーディング規約は後に、それを知らなかった企画部によって改めてまとめられJAVAの標準のコーディング規約として発表された。
ゴスリンはこの時の心境を「JAVAが最高だと生涯言い張り続ける覚悟を決めた」と述懐している。
厨は熱心に広報活動を行っていたが、役に立ったのは最初だけだった。すごい言語が出来る、ということを印象付けた後は、何の役にも立たなかった。
開発には近寄ることすら許されず、広報からは役立たずの烙印を押された。彼は再びネットワークエンジニアとして保守管理部に戻った。
今では彼は毎日何百ものLEDを見張って、消えたらそれに対応するハードディスクドライブを交換する仕事をしていると言われている。名前は記録されていない。
2008/06/15(日) 10:38:46
ハイハイワロスワロス

 〃∩ ∧_∧
 ⊂⌒( ・ω・)
  \_っ⌒/⌒c
    ⌒ ⌒
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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