【結構迷う】C vs. C++ 2行目【どっちで行こうか】
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2011/04/12(火) 15:15:18.15一般的には「C/C++」とひとまとめにされることの多い両言語ですが、
どちら一方をどっぷりと使っている人にとっては、かなり大きな
壁を感じると思います。
そこで、「C/C++」な人でも「C派」「C++派」に分かれて、それぞれの
観点からどちらの言語がより良いか、議論してみましょう。
主観的、客観的意見なんでも構いません。ただし建設的な議論に
なるよう、理由も添えてお願いします。
ルール
1.Java、C#などの「C/C++」以外は論外。これらについて言及している
レスは無視してください。
2.速い、遅いなどの議論は極力説得力のある根拠、ソース(情報源)
などを提示してください。
3.特定のOS、開発環境を理由に挙げたり、叩いたりしないでください。
たとえば、「Linuxの人は…」や「VC++ってやつは…」などは禁止。
4.標準、準標準のライブラリに関しては、その言語を使う場合常に
ついてまわるので言及をOKとします。
5.どちらか一方しか使ったことのない人は、その旨を述べた上で
意見をお願いします。
6.その他、明らかな煽りや無意味な書き込みも無視でお願いします。
前スレ
【結構迷う】C vs. C++【どっちで行こうか】
http://hibari.2ch.net/test/read.cgi/tech/1207419469/
0002デフォルトの名無しさん
2011/04/12(火) 15:15:50.85C++はなぜ人気がないのか
ttp://itpro.nikkeibp.co.jp/free/ITPro/OPINION/20050215/156201/
もう C++ なんて好きでもないし使いもしない理由。
ttp://www.hyuki.com/yukiwiki/wiki.cgi?WhyINoLongerLikeOrUseCPlusPlus
Why not using C++?
ttp://xinehq.de/index.php/hackersguide#AEN405
Boost
http://www.boost.org/
GLib
http://library.gnome.org/devel/glib/2.8/
0003デフォルトの名無しさん
2011/04/12(火) 15:43:47.47ttp://lwn.net/Articles/249460/
0004デフォルトの名無しさん
2011/04/12(火) 17:02:36.55use strict がある分Perlの方がマシなくらい。
Cのコードは冗長だが読みやすい。Pythonのように。
0005デフォルトの名無しさん
2011/04/12(火) 17:18:09.12C++ のまともなコードなら問題ないが。
0006デフォルトの名無しさん
2011/04/12(火) 18:58:21.44Cのきれいなコード > C++のきれいなコード > C++の汚いコード > Cの汚いコード
0007デフォルトの名無しさん
2011/04/12(火) 20:02:56.730008デフォルトの名無しさん
2011/04/12(火) 21:27:12.41より可読性の高いCを好む。
0009デフォルトの名無しさん
2011/04/12(火) 22:31:38.12Effective STLなどを読んでも落とし穴に引っかかりにくくなるだけで、
書けるようになるには別の訓練が必要
0010デフォルトの名無しさん
2011/04/12(火) 23:13:27.93逆は成立しない。
0011デフォルトの名無しさん
2011/04/12(火) 23:15:23.95C++ の知識や経験を増やしても C 的なコードが書ける様になる訳ではない
0012デフォルトの名無しさん
2011/04/13(水) 02:42:01.650013デフォルトの名無しさん
2011/04/13(水) 02:50:32.25http://warp.povusers.org/OpenLetters/ResponseToTorvalds.html
0014デフォルトの名無しさん
2011/04/13(水) 03:04:09.04"... Language comparisons are rarely meaningful and even less often fair. ..."
0015デフォルトの名無しさん
2011/04/13(水) 07:57:36.97C++は本当にひどい言語だと思うが、作者に突撃するのは違うと思うわ。
0016デフォルトの名無しさん
2011/04/13(水) 09:58:57.65gets を使わないとか、マクロは大文字にするとか、C の常識を踏まえたコード
// コメントを使えたり、変数は必要な時に宣言出来るという、C の常識を踏まえたコード
0017デフォルトの名無しさん
2011/04/13(水) 15:23:41.86Cより悪くなることは事実上ない
ただスキルの低い人の書いたコードを扱わなければならない場合には
選択権がないのであまり快適ではない
まあ巨大プロジェクトならCの方が勝ることもあるだろうけれど
小規模ならSTLとBOOST使いまくってC++でやるのが早いよね
0018デフォルトの名無しさん
2011/04/13(水) 16:07:48.01struct foo_t;
foo_t *foo_new(void);
void foo_method(foo_t *, ...);
void foo_delete(foo_t *);
みたいなのだろう
・ファイルスコープ、不完全型、union、void*、関数ポインタを駆使する
・templateやインライン関数はないのでマクロを使う
・名前空間が無いのでLispっぽく長い名前を使う
0019デフォルトの名無しさん
2011/04/13(水) 16:48:12.09C++は滅べ
ということ
0020デフォルトの名無しさん
2011/04/13(水) 17:32:08.27今は若干乖離してるけどな、CとC++
まあ、その差もC++がそのうち取り込むんだけど
0021デフォルトの名無しさん
2011/04/13(水) 18:57:06.47Cにもインライン関数はあるよ。知らないの?
002222
2011/04/13(水) 19:01:19.400023デフォルトの名無しさん
2011/04/13(水) 19:19:19.58C99コードを書こうと思ったことはないし多分今後も無いから
忘れとったわw
typedefもしてないのにstruct省略したのは確かに俺のミスだ
0024デフォルトの名無しさん
2011/04/13(水) 19:29:16.68http::request の代わりに http_request でも困らないよね。
0025デフォルトの名無しさん
2011/04/13(水) 19:41:08.32名前空間の場合は補完が効くし、usingで省略したければ省略できる
それと、クラスも一種の名前の空間
C++ならメンバ関数にmethod()とつけるかもしれないが
Cならclass_methodのような形にせざるを得ない
名前空間まで入れると
namespace_class_method()
だな
困る困らないで言えばタイプが長くなるだけだけど、そりゃあったほうが楽だ
0026デフォルトの名無しさん
2011/04/13(水) 19:56:08.580027デフォルトの名無しさん
2011/04/13(水) 20:02:24.28ファイル全部同じ場所に並ぶ
仕方ないから、衝突を避けるために
FLAC__StreamDecoderSeekStatus()
みたいに長ったらしい名前をつけることになる
勿論関数だけじゃなくenum定数だのstructの名前だの、全部が全部だ
0028デフォルトの名無しさん
2011/04/13(水) 20:03:06.03prefixでも補完は効くよね?こっちが何か勘違いしてるのかな。
それに自分の場合、基本的にファイルスコープの外に出る関数しか
namespaceに相当するprefixは付けないので、
意外とmethod()かtype_method()で済んじゃうし。
そりゃあ在れば便利なのが名前空間だけど、
C/C++だとABI不在のデメリットと引き換えだから。
0029デフォルトの名無しさん
2011/04/13(水) 20:05:12.410030デフォルトの名無しさん
2011/04/13(水) 20:11:16.57補完は確かにprefixでも効くね
2段目は作りによるわな
static関数ポインタを特定の構造体に突っ込んで、構造体だけエクスポートする系の
方法だと、確かに長い名前は比較的少なくて済む
あくまで「比較的」だけど
C++のABIの問題は確かにその通りだわな
ファイルスコープによるデータ抽象よりprivateはABI面で脆弱なので
結局手でpimplする必要があるが、それでも根本的なコンパイラ間互換性の問題がある
WindowsならCOM化という手もあるが面倒だ
0031デフォルトの名無しさん
2011/04/13(水) 20:14:04.06Lisp-1とかLisp-2とかいう意味での名前空間としては、
Cにはラベル、struct/union/enumのタグ名、struct/enumのメンバ、
その他通常の識別子(変数/関数など)の4つの名前空間がある(マクロも入れれば5つか)。
だから
>> 勿論関数だけじゃなくenum定数だのstructの名前だの、全部が全部だ
は間違いだよ。
0032デフォルトの名無しさん
2011/04/13(水) 20:15:53.57いや、その文は全部が全部同じ名前空間に属するという主張ではなく
全部が全部、長ったらしい名前をつけることになるという意味だよ
分かると思うけど
まあCが厳密に単一名前空間ではないというのは確かにその通りだけど
0034デフォルトの名無しさん
2011/04/13(水) 20:18:54.04木や文字列の処理などやる気にもならないレベル
0035デフォルトの名無しさん
2011/04/13(水) 20:22:45.28> 木や文字列の処理などやる気にもならないレベル
100%同意するが、C++でもやる気にならないのですよ。
0036デフォルトの名無しさん
2011/04/13(水) 20:23:06.380037デフォルトの名無しさん
2011/04/13(水) 20:32:04.28使い心地はどうなのかね?
自分じゃ使ったことないからコメント出来ない。
0038デフォルトの名無しさん
2011/04/13(水) 20:36:51.53Cとの組み合わせでは結構使われてるみたいだけど
保守的GCなので、ゴミをゴミと認識しないで残してしまうことがあるのが弱点
C++のスマートポインタも一種のGCでしょう、リファレンスカウントGC
勿論こちらも循環参照をゴミ掃除できないという弱点がある
0039デフォルトの名無しさん
2011/04/13(水) 20:40:19.19システムプログラミングだと、Linusに苛められるからCでいい。
0040デフォルトの名無しさん
2011/04/13(水) 20:44:03.89C++だと、デストラクタで問題あるから最初から循環参照させないように組むし、
問題なく使えるよねスマートポインタ。
C++は嫌いだが、便利なのは否定できない。
0041デフォルトの名無しさん
2011/04/14(木) 00:15:48.76その意味ではメンバは一種のグローバル変数なんだよね。
0042デフォルトの名無しさん
2011/04/14(木) 01:17:25.200043デフォルトの名無しさん
2011/04/14(木) 01:23:17.84動的メモリ管理の問題は std::string とか RAII に沿ったクラスを使うことで片付くと思うんだけど、
まだ何か問題あるの?
0044デフォルトの名無しさん
2011/04/14(木) 09:04:44.76名前空間使っても extern "C" で口を開ければ C と同程度に ABI の問題は解決できると思うんだ。
0045デフォルトの名無しさん
2011/04/14(木) 11:11:04.980046デフォルトの名無しさん
2011/04/14(木) 12:04:46.51Cの関数をC++に取り込むのはゼロコスト(少々の非互換性があるが)だけど、
C++関数を extern "C" で公開するのは、多少手を加える必要があるから。
例えば、namespaceに属する関数やメンバ関数、オーバーロード使った関数の場合、
それ相応のprefix付けた関数を用意してラッパー書く必要があるし。
ちょっとした手間だけど面倒だよ。
0047デフォルトの名無しさん
2011/04/14(木) 12:06:18.13動的メモリの問題というより、ライブラリの充実度かな。
文字列はPとかRで始まる言語が楽すぎて、もうC++でやる気は起きないよ(当然Cでも)
0048デフォルトの名無しさん
2011/04/14(木) 12:43:54.98CにC++のクラスを取り込みたい状況というのが分からない。
C++にCなら良くあるが。
0049デフォルトの名無しさん
2011/04/14(木) 13:07:29.00(再利用性が高い)けど、C++の場合、extern "C"でC ABIを適用しなければ
そうはならない(C++からしか使えない上に、コンパイラが違うだけで使えない)
という話では
Cから使いたいかどうかというより、ライブラリの再利用性の問題だな
まあC ABIが素晴らしいものかというと、別にそういうわけでもないんだがな
.NETやJavaやLLなら、関数の引数や戻り値にリストや木、辞書みたいなものを
使うのはごく普通のことだ
C++でもstd::map<>の参照を引数で渡したりするかもしれない
そんな「当たり前」の用途をC ABIに変換してごらん?
全く非本質的なことに馬鹿馬鹿しい労力が必要で、鬱陶しすぎてやってられないぜ
0050デフォルトの名無しさん
2011/04/14(木) 15:03:31.92std::mapを引数に取る関数はC++以外で呼べる必要あんまないよね
同様にMYLIB_tree*を引数に持つ関数をC/C++以外から
NULL以外を引数にして呼ぶことなんてできないわけだし、
>>49て何なんだろうね。
0051デフォルトの名無しさん
2011/04/14(木) 15:24:18.21>そらstd::mapはC++くらいでしか構築できないんだから
>std::mapを引数に取る関数はC++以外で呼べる必要あんまないよね
んな当たり前の話をしてるんじゃなくて、
意味・機能的にC ABIに移植することを考えれって話だよ
アホk?
>同様にMYLIB_tree*を引数に持つ関数をC/C++以外から
>NULL以外を引数にして呼ぶことなんてできないわけだし、
そんなことは無いよ
PODやそのポインタの範疇なら、普通にC/C++以外でも利用できる
C#でもpythonのctypesでもいいが、その手のffiを触ったこと
一度も無いだろお前
0052デフォルトの名無しさん
2011/04/14(木) 15:40:23.79__stdcallか__cdeclだけを置けよ
0053デフォルトの名無しさん
2011/04/14(木) 15:57:05.21……C ABIに拘泥するあたり新しいものを勉強するのが嫌いなのか?
0054デフォルトの名無しさん
2011/04/14(木) 16:08:10.05そうじゃなくてC++をDLLに置くと同じコンパイラを使う必要に迫られるだろ
個人的にはそういう縛りが嫌いなんで
0055デフォルトの名無しさん
2011/04/14(木) 16:35:44.850056デフォルトの名無しさん
2011/04/14(木) 16:51:54.96リンクできても例外等の仕様が違って実行時に落ちそうだが。
0057デフォルトの名無しさん
2011/04/14(木) 17:13:53.790058デフォルトの名無しさん
2011/04/14(木) 17:18:05.000059デフォルトの名無しさん
2011/04/14(木) 17:35:05.970060デフォルトの名無しさん
2011/04/14(木) 20:04:07.36ffiも知らなかったくせに上から目線www
典型的なC++ PGですねw
0061デフォルトの名無しさん
2011/04/14(木) 20:40:32.00DLL境界またぐ可能性があるからな
DLL側とEXE側で可視なデータ構造が異なったりするのはABI不一致で当然だめだし
片方でアロケートしたリソースを片方で開放したりする場合、両者が用いている
アロケータが完全に一致しない限りNG
(malloc()/free()だとしても、同じコンパイラなだけではダメ)
ディスクリプタのようなランタイムオブジェクトを境界をまたいで渡すのも
問題を起こすことが多い
この辺はCでも同様だからC ABIなだけではダメなのだが
C++はname manglingの問題だけでなくこれらの問題にひっかかりやすい
脆弱な実装になっているので、C++ ABIなDLLを作るとピッキーすぎて使い物にならない
で、>>44の言うようにC ABIにすればよくね?という話がどうかというと、
C ABIは単純・貧弱すぎて、単にextern "C"つけりゃいいだけの問題じゃない
ただの文字列や数以上に複雑なオブジェクトをやりとりするコードに
いちいちCラッパー書いてたら面倒くさすぎて発狂するぞ
上の例で言うと、std::map<>のプロキシを構造体とポインタで書き、C用の
要素のアクセスコードを書き、プロキシとstd::map<>の変換コードも書く必要がある
0062デフォルトの名無しさん
2011/04/14(木) 21:28:13.18DLLなんて使わずに、ソースからビルドすればいいんじゃね?
0063デフォルトの名無しさん
2011/04/14(木) 21:33:04.16何のためのDLLか、何のための複数言語による開発か
というところから見直すべきだろう
0064デフォルトの名無しさん
2011/04/14(木) 21:35:08.81ソース(ヘッダ)レベルで行われる率が高くなってるな
テンプレートならどのみちそうせざるを得ないし、ABIがダメだから
「コード再利用」という意味では間違いなく退化だし
コンパイル時間の長大化の原因の一つだ
LLとか.NETとか関数型とか、今時の言語と比べるとあらゆる意味で面倒過ぎ
どーしてもC/C++じゃなきゃいけない場面以外では避けたい
0065デフォルトの名無しさん
2011/04/14(木) 21:42:16.58少なくともこれがJavaや.NETやLLのようなモダンな言語なら、MapだのListだのと
いった基本的で水や空気のように使われるデータ構造をライブラリの
インタフェースとして外に出すのはごく普通で当たり前の設計
それが出来ない、すくなくともやりにくいのは
設計云々じゃなくて結局CやC++の言語使用やABIに問題がありすぎるからだよ
0066デフォルトの名無しさん
2011/04/14(木) 22:00:57.75Cで書かれたMapやListなら外に出せるよ。
それを必要とする言語が存在しないだけで。
0067デフォルトの名無しさん
2011/04/14(木) 22:09:23.26標準で何も持っていないから、常に手書きする必要があるし、それゆえ
汎用的なバインディングを作りようもない
0068デフォルトの名無しさん
2011/04/14(木) 22:15:43.04std::mapの関数を一つ一つ
引数をC/C++が受け取れる形に直して
C/C++の関数を呼び出す環境を用意して
当然inlineはできずcallし
元の環境に戻し
返り値を呼び出し側の言語が使えるようにする
という手順踏む意味あるんかい。STLの利点死ぬやん。
組み込みの連想配列なりunsortedなkeyとvalueのpairの配列なり
IUnknownなりあるんだから設計の間違いやろ。
統一されていないコーディング規約は害悪でしかない。
開発言語の統一をしないのならば、そのしない理由に沿った使い方しろよと。
0069デフォルトの名無しさん
2011/04/14(木) 22:40:03.01設計を実装に即してだけ考えすぎ
抽象度の高いレベルで考えると、辞書をインタフェースにすることは
「設計」として特に問題はないし自然な発想だろ
それがC++の世界で閉じているなら、実装レベルでさえそれは問題はない
いざABI界面にそれを出そうとした場合に実装において問題になるわけだから
勿論現実には設計を(必要なら)実装に即して「捻じ曲げる」必要があるが
自然な設計を捻じ曲げなければならない時点で、それはその実装系がpoorだから
という話だ
勘違いしてもらっちゃこまるが、俺はstd::mapに対して実際にそういう具合に
Cのproxyを作れといっているんじゃない
そういう実装段階での設計の捻じ曲げが必要になること事態が問題だといってるんだよ
0070デフォルトの名無しさん
2011/04/14(木) 22:54:20.16JavaのMapやListを.NETで使うのって大変じゃね?
0071デフォルトの名無しさん
2011/04/14(木) 22:56:46.36いわゆるABIでやりとりしようとするのが間違いで
XMLあたりで表現してやりとりすればいいはなし。
0072デフォルトの名無しさん
2011/04/14(木) 23:02:33.80そうすることは可能だけど、お互いに同じデータ構造を毎回
シリアライズ・デシリアライズして、パースするような非効率な設計/実装を
わざわざC/C++で選択するか?
まあ受け渡し手段がIPCならそれは妥当だけれども……
効率度外視してるのにC/C++なんか選ぶ意味って何?
0073デフォルトの名無しさん
2011/04/14(木) 23:13:16.53ABIの方が速いから。
ABIでもマーシャリングのコストはあるけど、
C/C++側で重い処理を走らせられればペイするからなー
0074デフォルトの名無しさん
2011/04/14(木) 23:18:22.30APIが疎結合で、マーシャリングの頻度が十分少なければたいした問題にはならんだろう
0075デフォルトの名無しさん
2011/04/14(木) 23:38:23.37ABIの不在という問題はいろんな著名人があちこちで言ってるんで皆知ってるし
そういう他人の受け売りでdisるだけなら他所でやれって思うが。
一応ここ、C vs C++スレなんだから、"どっちもダメ"論を展開されても困る。
0076デフォルトの名無しさん
2011/04/14(木) 23:45:21.82無理ならファイルでもいい
0077デフォルトの名無しさん
2011/04/14(木) 23:49:13.95LL側の連想配列でも、std::mapとint[string]のマーシャリングでもなくて、
std::mapをインターフェイスに使うのが自然だと考えた理由は何よ。
実装を見据えない設計が潰れただけじゃないの。
LL側にconstなくて第三次だのABI以外に考えるものは多いよ。
0078デフォルトの名無しさん
2011/04/14(木) 23:52:43.61いやLLつってるのは、単にあれだぞ?
LL用に書くCの拡張/組み込みコードの話じゃなくて、LLによる実装コードの話だ
だからもちろんstd::map<>じゃなくてただのLLの組み込み辞書型だ
なんかどうも意図が通じないってか、意図的に枝葉末節にこだわって
自転車場の議論に持ち込もうとしてない?
俺の言ってる意図ってそんなに分かりにくいか?
0079デフォルトの名無しさん
2011/04/14(木) 23:55:46.80そこまで言うんなら誰も見たこともないような斬新で高尚な意見を
自分から述べてくれよ
心にも無いことを言う気にはなれんしな
0080デフォルトの名無しさん
2011/04/15(金) 00:14:45.02へえ、どれが誰のレスだかわかりますか
とりあえず「STLコンテナはバイナリ境界をまたげますよ」で終わるのかねえ
0081デフォルトの名無しさん
2011/04/15(金) 00:18:35.91SECURE_SCL関連のコンパイルフラグなどがexeとdll等が違うだけで
問題を引き起こす(つまり非常に脆弱)ってことだろ
要は独立性や再利用性が非常に弱いわけで、それぐらいならそもそもdllに
分離する必要があるのかという疑いすら出てくる
0082デフォルトの名無しさん
2011/04/15(金) 11:53:06.15現実解ということでよろしいか
0083デフォルトの名無しさん
2011/04/15(金) 11:59:24.42何の現実解だよ?
問題が定義されていないところで解について同意を得られるわけがないだろう。
0084デフォルトの名無しさん
2011/04/15(金) 12:30:18.92解答:LLやVM言語で抽象プログラミングし、遅い部分をCで書く
0085デフォルトの名無しさん
2011/04/15(金) 13:12:37.64「〜遅い部分を」まではベストプラクティスと言ってしまってもいいだろうけど、
このスレは最後の「Cで書く」について C と C++ とのどっちでいくかを考えるスレ。
その点を問題にしないのならスレ違い。
0086デフォルトの名無しさん
2011/04/15(金) 13:22:38.85このスレの流れ読んでないの?
直前まで、C++よりCの方がLLとリンクしやすいって話だったと思うけど。
extern "C" するためにSTLコンテナをPODに変換するくらいなら
最初から全部Cの方がマシだよ。遅い部分だけC/C++で書いて
抽象プログラミングは別の言語でするんだし。
0087デフォルトの名無しさん
2011/04/15(金) 13:39:49.83C or C++ に要求する処理の中で「文字列→文字列」のマッピングが使いたいとする。
処理のインターフェースは C 向けに定義されたものがあるとする。
C: 文字列・マップのメモリ管理を自前で書く必要があるが、インターフェースの
加工は不要。
C++: std::map<std::string, std::string> を使えるが、インターフェースの
宣言を extern "C" { ... } で囲う必要がある。
つまり「文字列・マップのメモリ管理を自前で書く」労力と
「extern "C" { ... } で囲う」労力との選択になると思うんだけど、
これらの比較はされていない。
0088デフォルトの名無しさん
2011/04/15(金) 13:42:54.66ちょ、ちょっと待て
単に
extern "C"
void f(std::map<std::string, std::string> &dict);
とかすりゃいいとでも思ってるのか?
Cリンケージ指定しといてインタフェースで非POD型使うなんて既知外もいいところだぞ
0089デフォルトの名無しさん
2011/04/15(金) 13:46:53.72「インターフェースは C 向けに定義されたものがあるとする」って書いただろ。
↓こんなのが先に決まってるとしての話。
void foo(char const* keys[], char const* values[], int n);
0090デフォルトの名無しさん
2011/04/15(金) 13:49:12.12全然そういうわけではない
libfoo_dict_t * dic = libfoo_dict_new();
libfoo_dict_set_value(dic, "foo", "bar");
libfoo_do_something_with_dict(dic);
libfoo_dict_iterator_t *diciter = libfoo_dict_iterator(dic);
while (libfoo_dict_iter_next(diciter)) {
const char *key = libfoo_dict_get_key(diciter);
}
みたいなコードになるんだろう
ちっとも楽じゃない上に鬱陶しいことこの上ない
0091デフォルトの名無しさん
2011/04/15(金) 13:49:57.97なるほど、スマソ
0092デフォルトの名無しさん
2011/04/15(金) 14:04:57.19それ以外はC++って感じかな
RGBをYMCA形式(?)とかってやつに変換するくらいならC++固有の技術使うような機会はないだろうけど
オセロのCPUならクラスを使った方が拡張や改良するときにやりやすいはず
0093デフォルトの名無しさん
2011/04/15(金) 14:10:58.92STLで用意されてるような操作は、LLやらVM言語でも組み込みで持ってないか?
それらは内部でC/C++で実装されてるんだろうし、そんな処理を速度的な問題で
C/C++に要求することって実際あるの?
0094デフォルトの名無しさん
2011/04/15(金) 14:14:07.99いやリストだの辞書使ってそういうどこにでもあるジェネリックな仕事をしたいだけなら
いちいちCのコード書く必要は確かにないだろうけど
ここでのリストとかは単にデータをインタフェースにわたすための道具で、
そのデータを使ってなんか特殊で性能を要する仕事をしたいからCとかで書きたい
そういう場合の話をしてるんでしょ
0095デフォルトの名無しさん
2011/04/15(金) 14:21:44.58C++での外部インターフェース相当を書くわけだろ?
内部実装書かないで済むだけ、やっぱりC++の方がちょっと楽できるんじゃないの?
0096デフォルトの名無しさん
2011/04/15(金) 14:31:52.54多分むなしい度が高い
Cだともともと低レベルでなんにも無いからどのみち書かなければいけないコードだが
C++の場合はそうじゃないから
0097デフォルトの名無しさん
2011/04/15(金) 14:34:42.32009893
2011/04/15(金) 14:45:52.88皆がどういう状況を想定して言ってるのか分からん。
たぶん自分が少数派なんだと思う。
ちなみに、自分は数値計算ライブラリをCで書いてる。
hashMapとかも内部で使ってるけど、ライブラリを書く作業全体と比べれば
一から全部自前で実装しても面倒さは誤差の範囲だ。書くのもテストも簡単だし。
もちろん、作業の大部分はコードの正当性の検証(とアルゴリズムを導出するところ)。
0099デフォルトの名無しさん
2011/04/15(金) 18:16:47.05むなしさだと?デバッグに費やす時間の間に感じる自虐感と比べてどちらがいいんだ?
よく考えてみ
0100デフォルトの名無しさん
2011/04/15(金) 20:43:50.640101デフォルトの名無しさん
2011/04/16(土) 01:44:10.15車輪の再発明やテストにたっぷり時間をかけることで得られる充実感(?)がCのメリット
というわけですね?
0102デフォルトの名無しさん
2011/04/16(土) 02:53:03.53車輪の再発名は必要ないよ
0103デフォルトの名無しさん
2011/04/16(土) 03:58:16.77あ、そう。
>>96
じゃぁ >>90 みたいな冗長なタイピングを繰り返すことで得られる充実感(?)がCのメリット
というわけですね?
0104デフォルトの名無しさん
2011/04/16(土) 09:21:49.58for (std::vector<RecordTypeFoo>::const_iterator iter = dic.begin(); iter != dic.end(); ++iter) {
...
}
みたいなのは冗長なタイピングじゃないんだよね?わかるわかる
0105デフォルトの名無しさん
2011/04/16(土) 09:36:34.97補完とか使えないの?
0106デフォルトの名無しさん
2011/04/16(土) 10:21:43.880107デフォルトの名無しさん
2011/04/16(土) 12:53:13.95何でauto使わないの?
0108デフォルトの名無しさん
2011/04/16(土) 13:03:30.78つまりC++0x以前のC++は冗長でクソでしたってこと?
0109デフォルトの名無しさん
2011/04/16(土) 13:04:37.02C++2003 でも BOOST_FOREACH() ってもんがあってな。
0110デフォルトの名無しさん
2011/04/16(土) 13:15:09.46C1Xでも BOOST_FOREACH 相当が実装できそうだが
0111デフォルトの名無しさん
2011/04/16(土) 13:38:04.25そうなの?
C_ARRAY_FOREACH とか LIBFOO_DICT_FOREACH とか、
対象のコンテナごとに別になっちゃうんじゃない?
0112デフォルトの名無しさん
2011/04/16(土) 13:45:50.99C1Xには _Generic キーワードが入って type-generic が出来るようになった。
template の代わりになるようなもんじゃないし、ビックリするほど醜くなるが
できると思う。
0113デフォルトの名無しさん
2011/04/16(土) 13:58:14.46そりゃautoが導入されたのは冗長だって認識されたからでしょ。
でも、それだけで以前のC++をクソ呼ばわりするなら、Cなんて
最初から最後までクソの固まりってことになってしまうよ。
0114デフォルトの名無しさん
2011/04/16(土) 14:16:25.11冗長さなんてどうでも良いと思ってるから、それが理由でC++がクソだとは思ってないよ
なお、C++0xでautoが導入された一番の理由は、
C++では型を正確に知るのや書くのが難しい場合があるからだってさ
http://www2.research.att.com/~bs/C++0xFAQ.html#auto
0115114
2011/04/16(土) 14:18:23.470116デフォルトの名無しさん
2011/04/16(土) 14:27:57.02タイピングは補完すればいいから大した手間じゃないけど、
読むのが面倒くさいな。
FullHDのディスプレイいっぱいに使ってまだ入りきらないのとかあるし。
0117デフォルトの名無しさん
2011/04/17(日) 10:27:07.93for_each ( dic.begin(), dic.end(), some_struct() );
0118デフォルトの名無しさん
2011/04/17(日) 10:58:53.59C++の抽象化などウンコ
0119デフォルトの名無しさん
2011/04/17(日) 12:48:11.02Cでもこんなふうにすれば関数名は短くなる
典型的なCの関数の例
void std_foo_func(std_foo_t, int)
void std_bar_func(std_bar_t, int)
(1)namespaceもどきを実装
#ifdef USING_NAMESPACE_STD
#define foo_func(...) std_foo_func(__VA_ARGS__)
#define bar_func(...) std_bar_func(__VA_ARGS__)
#endif
(2)_Genericを使用(C1Xから)
#define func(self,...) _Generic((self), std_foo_t: foo_func, std_bar_t: bar_func)(self,__VA_ARGS__)
これで以下のように呼べる。キメエwww
int n;
std_foo_t x;
std_bar_t y;
func(x, n) // std_foo_func(x, n)
func(y, n) // std_bar_func(y, n)
0120デフォルトの名無しさん
2011/04/17(日) 21:53:40.57autoは(ユーザ定義型の)暗黙型変換と組み合わさることで
恐ろしくデバッグ困難なコードができそう
0121デフォルトの名無しさん
2011/04/18(月) 07:20:58.78Cにも準標準で存在するし、コードは読みやすく書けるし、ABIはあるし、
C++の人気はゆっくりと下降してるから将来性が(メンテナンス面で)不安だし、
やはり>>84ならCを使うのが最適ですな
0122デフォルトの名無しさん
2011/04/18(月) 07:27:44.01C++使いはC++におけるイディオムを覚えてるだけで
正確に言語仕様を把握してるわけじゃないから
イディオムが異なるCは書けないんだよねwww
0123デフォルトの名無しさん
2011/04/18(月) 10:23:33.22C++には標準で存在するし、コードは読みやすく書けるし、ABIはあるし、
Cの人気はゆっくりと下降してるから将来性が(メンテナンス面で)不安だし、
やはり>>84ならC++を使うのが最適ですな
0124デフォルトの名無しさん
2011/04/18(月) 10:41:56.75C++の膨大な言語仕様は足枷になると思う
単純に習得が困難だから、人気が落ちると新人の確保が難しそう
0125デフォルトの名無しさん
2011/04/18(月) 10:45:15.33> えーと、つまりSTLコンテナのような便利ライブラリはCにも準標準で存在するし
これ何のことを言ってるんだろう…
RAIIによるメモリ管理、テンプレートによるジェネリシティ+型安全性+効率性
言語標準であることによる普及度
比べるのが失礼なレベルのものしか思いつかないのだが
0126デフォルトの名無しさん
2011/04/18(月) 10:51:30.53日本だとパッケージはほぼ死滅してるから
ビジネスでのC++の主な用途は組み込みやゲームといったあたりだろう
限られた範囲の要員ぐらいはいるんじゃねーのかな
今時ゲームをC++やC#やフラッシュで書く奴はいてもCで書くやつはいないから
0127デフォルトの名無しさん
2011/04/18(月) 10:53:42.03後は科学技術演算ライブラリ程度か
0128デフォルトの名無しさん
2011/04/18(月) 10:59:05.35効率性以外は概ね同意。でも、そういうのはLLとかVM言語でやれば?と思うが。
どんだけC/C++でコード書くつもりなんだよと(>>84の問題設定理解してる?)
もうC/C++なんて可能な限り書きたくない、という前提を忘れてる。
0129デフォルトの名無しさん
2011/04/18(月) 11:04:16.21CUDAとかOpenCLとかのマルチコアCPUやGPUを扱うフレームワークが
Cで提供されてるので、高パフォーマンスを必要とするときは
まだまだCは現役
0130デフォルトの名無しさん
2011/04/18(月) 11:08:16.59そっちこそスレタイ読んだほうがいいんじゃないの
CかC++を使うべき・使わざるをいけない時にどっちで行こうかってスレだろここ
それに「そういうの」って意味がよくわからんぜよ
CかC++が出てくるような場所にはベクトルやリストの処理は出てこないとでも?
kernelだろうがデバイスドライバだろうがエンコーダだろうが
必ず使うだろその種のデータ構造……
(実際にC++とSTLを使うかどうかは別だ)
0131デフォルトの名無しさん
2011/04/18(月) 11:09:18.30いや当たり前だけど、それはC++で叩けるから……
まあ敢えてCで書いてるってんなら何も言わないけど
0132デフォルトの名無しさん
2011/04/18(月) 11:11:46.42STL遅えwww効率性wwwww
ttp://d.hatena.ne.jp/fd0/20080419/p1
0133デフォルトの名無しさん
2011/04/18(月) 11:13:20.05マジか……以前CUDA使ったときはC++が通らなくて俺涙目だったのに
0134デフォルトの名無しさん
2011/04/18(月) 11:13:56.10ああSTLの非オーダードマップはおせえ。特にじんかむうぇあは
ただアルゴリズム系は大抵手書きするのと効率が変わらんし
std::sort()は関数ポインタ渡しになるqsort()より高速なことで知られてる
0135デフォルトの名無しさん
2011/04/18(月) 11:16:58.39Linuxカーネルでもリストは使ってるぜ
container_ofマクロを使った変態コードだがな
0136デフォルトの名無しさん
2011/04/18(月) 11:18:03.39nvccでC++は一応使えるんだけどまだバグが多いという感じみたいだな
まあ多くの商用ベンダのC++コンパイラが標準準拠またはそれに近い状態になるまで
どんだけ時間がかかったか考えてみればさもありなん
0137デフォルトの名無しさん
2011/04/18(月) 11:18:44.05BSDだとqueue.hとかだな
勿論マクロ多用
NTにも似たようなヘッダがある
0138デフォルトの名無しさん
2011/04/18(月) 12:02:26.27「そういうの」の意味は、効率が一番の目的のような場合(>>84)に
>>125のような利点は重要なのか?ってこと。
Cにも抽象コンテナ実装はあるし、それらの実装は安全性以外は劣らんだろう。
もちろん安全かつ効率的なのが一番だけど、C++はコードサイズひとつとっても
Cより肥大化傾向だから。extern "C"するならそのインターフェースの分もな。
0139デフォルトの名無しさん
2011/04/18(月) 12:09:27.42完成品のボトルネックが問題。
それがSTLだったら書き換える、違えばそれを書き換える。
0140デフォルトの名無しさん
2011/04/18(月) 12:33:30.480141デフォルトの名無しさん
2011/04/18(月) 12:38:22.72(COMまたは準COMの形でインタフェースが規定されている場合など)
UIツールキットもGTK+を除いてほとんどC++だし
フォトショやブラウザみたいにある程度複雑で大規模なネイティブGUIアプリは結局
大半がC++で作られている
プログラマなら適材適所で使い分けるだけの話じゃないのか
なんか現実が見えてない発言としか見えないものが多いな
0142デフォルトの名無しさん
2011/04/18(月) 12:58:14.810143デフォルトの名無しさん
2011/04/18(月) 13:01:02.600144デフォルトの名無しさん
2011/04/18(月) 15:43:51.72速度を稼ぐ方向に行ってるので、どうだろうかな。
0145デフォルトの名無しさん
2011/04/18(月) 19:50:12.480146デフォルトの名無しさん
2011/04/18(月) 19:56:23.600147デフォルトの名無しさん
2011/04/19(火) 01:02:49.13C++なんて全く使わなくなったわ
0148デフォルトの名無しさん
2011/04/19(火) 09:21:53.16自分一人で使うやっつけ仕事用のコードはC++
プログラマなら適材適所で使い分けるべき
0149デフォルトの名無しさん
2011/04/19(火) 11:45:57.290150デフォルトの名無しさん
2011/04/19(火) 13:50:45.26可読性が低いとか罠だらけの文法とか、C++には色々言いたいことがあるが。
もっと客観的なデータとして、C++のトレンドは低下している。
http://www.tiobe.com/index.php/content/paperinfo/tpci/
http://journal.mycom.co.jp/news/2011/04/19/016/index.html
なんで再利用性の高いモジュールを、より人気が低く下落傾向にあり
ポータビリティでさえ劣る言語で書かなきゃならんのよ?
>>141の言うように選択の余地が無いならともかく、沈み行く船に
進んで乗っかるのはアホのすることだ。
0151デフォルトの名無しさん
2011/04/19(火) 14:00:10.05人気が重要ならCのほうがいいだろうってことね。
別にそれはそれでいいけど、そうじゃない場合もあるでしょ。
インターフェースをCに固定してC++で実装することもできる。
0152デフォルトの名無しさん
2011/04/19(火) 14:12:03.33型エラーやリソース破棄漏れの防止が人気やポータビリティよりも重要なら
C++で書いたほうがいいんじゃないの?
0153デフォルトの名無しさん
2011/04/19(火) 14:22:22.68リソース破棄漏れはRAIIなら大丈夫とか言ってるC++のコードの方が酷い。
ろくにリソース破棄時のエラーをチェックしてないからな。
きちんとエラー拾ったらJavaのtry/finallyだらけのコードみたいになるし(C++にはfinallyすらないが)。
それに extern "C" するならちゃんと全部の例外拾っとけよ?
0154デフォルトの名無しさん
2011/04/19(火) 14:32:26.20共通じゃない部分はC++でもGLibでもLLでも良いので、断定してはいけない。
C++を使うということは、断定するということ。
0155デフォルトの名無しさん
2011/04/19(火) 14:38:54.50STL と boost を使いまくり、例外も演算子オーバーロードも使いまくり、
とにかくC++のあらゆる言語機能を使い倒した方が書いてて楽しい。
どうせ言語機能の一部を自粛したって、それを簡潔に明示する方法がない以上
(Perl の use strict; 的なやつ)可読性はたいして上がらないし、
だったら自由にやった方が精神衛生上もいいよ。
better C とか Embedded C++ とか誰得。
0156デフォルトの名無しさん
2011/04/19(火) 15:09:43.76関数内は一番手間がかからない方法で実装。
ボトルネックをC言語やアセンブラにする。
0157デフォルトの名無しさん
2011/04/20(水) 00:49:26.85型エラーについてはCだと警告だけどC++ではエラーになる。
エラーのほうが望ましい理由はわかるよね?
リソース破棄時のエラーについて、C++で酷いコードになるケースが
あるのはわかるけど、同じケースに対してはCでも同じことになるでしょ。
そして、メモリやそのほか破棄処理がエラーを起こさない多くの
リソースについてC++の利点は生きる。
どちらかといえばC++のほうがいいのは明らかじゃない?
extern "C" から例外もらさないように注意するのは当然な。
catch (...) しとけば済む。
0158デフォルトの名無しさん
2011/04/20(水) 00:53:49.86>エラーのほうが望ましい理由はわかるよね?
プログラマの意図に合わせて柔軟に対応出来る方が望ましいよ。
0159デフォルトの名無しさん
2011/04/20(水) 00:56:26.120160デフォルトの名無しさん
2011/04/20(水) 01:00:25.55警告で済まされていたほうが柔軟に対応できて望ましいような型エラーって、どんなの?
特別な意図があって許して欲しいときはコメント付きでキャスト入れてもらったほうがいい
場合しか思い当たらなかった。警告だと何も書かずに無視されちゃう。
0161デフォルトの名無しさん
2011/04/20(水) 01:01:07.010162デフォルトの名無しさん
2011/04/20(水) 01:03:32.140163デフォルトの名無しさん
2011/04/20(水) 01:06:02.18C++ PG : 「何か警告出てましたけど、無視してやったっス
C PG : 「お前・・・
0164デフォルトの名無しさん
2011/04/20(水) 01:43:36.470165デフォルトの名無しさん
2011/04/20(水) 01:44:16.520166デフォルトの名無しさん
2011/04/20(水) 02:25:34.270167デフォルトの名無しさん
2011/04/20(水) 04:57:21.94自分を含め、コードを利用する全ての人が警告&バグに気づきませんでした。
みたいな状況をまじめに議論するの?勘弁してよ。
>>157
メモリと排他制御のロックくらいだけどね。リソース破棄時にエラー返さないのって。
0168デフォルトの名無しさん
2011/04/20(水) 12:18:34.44> extern "C" から例外もらさないように注意するのは当然な。
> catch (...) しとけば済む。
お前のプログラムからは Unknown error ばっかり飛んできそうだwww
0169デフォルトの名無しさん
2011/04/20(水) 12:21:55.06> 自分を含め、コードを利用する全ての人が警告&バグに気づきませんでした。
> みたいな状況をまじめに議論するの?勘弁してよ。
そんな議論はしなくていいから、 >>160 の質問に答えてみろ。
> メモリと排他制御のロックくらいだけどね。リソース破棄時にエラー返さないのって。
そう思うんならそれでいいが、 >>157 の主張に量は関係ない。
話題をそらすな。見苦しい。
0170デフォルトの名無しさん
2011/04/20(水) 12:31:45.79俺は「警告で済まされていたほうが柔軟に対応できて望ましい」と書いた人間では無いが。
少なくとも、再利用性の高いモジュールのようなプログラムを書くときに
何も書かずに警告は無視しない。だからコンパイルエラーでも警告でも関係ない。
それ意外の、ちょっとしたプログラムを書くときは>>162なんじゃないか?
0171デフォルトの名無しさん
2011/04/20(水) 12:41:14.73> そう思うんならそれでいいが、 >>157 の主張に量は関係ない。
なんで?>>157は
> そして、メモリやそのほか破棄処理がエラーを起こさない多くの
> リソースについてC++の利点は生きる。
って書いてるんだから、量は関係あるだろ。
0172デフォルトの名無しさん
2011/04/20(水) 12:51:58.54CとC++との比較については「多くの」を飛ばして読んでも同じ事だろ。
「破棄処理がエラーを起こさない」場合が >>157 にとっては多くて、
>>167 にとっては少ないんだろう。そこの違いは作ってるものによる
だろうから、どっちが正しいかを話してもしょうがない。
0173デフォルトの名無しさん
2011/04/20(水) 13:02:58.19他者が重要と思ってないところを利点として挙げられても、誰も同意できないわけよ。
別に独り言を書き込んでるわけじゃないだろ?
まあ、メモリ管理の単純化は重要だと思うけどね。
0174デフォルトの名無しさん
2011/04/20(水) 13:05:08.36Cでもメモリプールを使えば十分すぎるレベルで簡単になる。
メモリプールの実装としてはAPRが有名で誰でも使える。
メモリプールは参照カウントよりも大抵は高速だぞ。循環参照もありだし。
0175デフォルトの名無しさん
2011/04/20(水) 13:07:14.50メモリの使い回し。
0176デフォルトの名無しさん
2011/04/20(水) 13:20:22.78アプリケーションにとってapr_pool_tが都合がいいならC++でもそれ使えばいいね。
デストラクタで処理できるところがあればさらに楽できるところが増えるよ。
で、 >>153 ってもう居ないの?
0177デフォルトの名無しさん
2011/04/20(水) 14:28:54.48なんでAPR使ってんのにポータビリティ下げてまでC++?
デストラクタで処理できるところがあればって、
Cのモジュールから抜けるときに apr_pool_destroy() 一回呼ぶだけなんですけど。
# もちろん、場合によってはもっと詳細な制御が出来る。
下手すりゃデストラクタ呼ぶためにapr_pool_tをクラスでラップするほうが手間じゃね?
0178デフォルトの名無しさん
2011/04/20(水) 14:34:03.14C のコードを書かせたら、
・性能要求がきつい箇所で strlen() をループの判定部分に入れる
・あれだけ使うなと言われているのに、未だに gets() を使い続ける
・平気で realloc() でメモリをリークさせる
・副作用がある事を意識して使うべきマクロに関数と間違う様な名前を付ける
・厳密な型検査があれば通過しない様なコードを無意識に書く
・警告は無視する(NEW!!)
0179デフォルトの名無しさん
2011/04/20(水) 14:35:23.490180デフォルトの名無しさん
2011/04/20(水) 17:49:38.02当然Objective-C++を使ってるんだよな?
お前等の理屈なら、CもC++もObjective-Cも全部出来るObjective-C++を
選ばない理由は無いもんな?
お前等の言ってることはそういうことだぞ?
0181デフォルトの名無しさん
2011/04/20(水) 19:59:25.61>>160 「警告は無視される」
会話が成立してねーだろwww
0182デフォルトの名無しさん
2011/04/20(水) 20:36:28.740183デフォルトの名無しさん
2011/04/20(水) 21:33:42.450184デフォルトの名無しさん
2011/04/21(木) 01:20:24.380185デフォルトの名無しさん
2011/04/21(木) 01:28:36.57DO NOT IGNORE THIS MESSAGE!!
DO NOT...
HEY!
HEY, YOU!!
WATCH OUT!!!
PLEASE?
0186デフォルトの名無しさん
2011/04/21(木) 01:41:56.82> レスは無視してください。
> 6.その他、明らかな煽りや無意味な書き込みも無視でお願いします。
0187デフォルトの名無しさん
2011/04/21(木) 01:57:34.58> なんでAPR使ってんのにポータビリティ下げてまでC++?
>>152
> ラップするほうが手間じゃね?
そんなときは当然ラップしない。
0189デフォルトの名無しさん
2011/04/21(木) 02:02:52.970190デフォルトの名無しさん
2011/04/21(木) 02:10:19.53C++を使う理由になるな。周りのレベルによるんだろうけど。
0191デフォルトの名無しさん
2011/04/21(木) 02:12:55.68つか、ホントにそんな状況なんてあるんだろうか。。。
0192デフォルトの名無しさん
2011/04/21(木) 04:13:21.440193153
2011/04/21(木) 07:07:53.23別に名乗る必要があるとは思えんが、一応>>170>>171>>173>>174>>177は俺だが?
>>187
C++の機能を使わないならC++にする理由が無い。
もし、それでもC++が良いというなら、つまりは>>180ということか?
警告を当然のように無視する腐れプログラマを排除する、
ただそれだけの理由でもCを採用する強力な理由になるな。
それは俺にとってはテンプレートよりもメリットだ>>188。
もちろんテンプレートは便利(コンパイルクソ遅くなるけど)だから、
C++使うならテンプレートも使うけど。
0194デフォルトの名無しさん
2011/04/21(木) 11:00:55.59>>158 の↓について何も言ってくれてないんだけど、どうなの?
> リソース破棄時のエラーについて、C++で酷いコードになるケースが
> あるのはわかるけど、同じケースに対してはCでも同じことになるでしょ。
あと、Cを使ったからって警告を無視するプログラマを排除するような
効果は無いよね?
0195デフォルトの名無しさん
2011/04/21(木) 11:19:05.03> 警告を当然のように無視する腐れプログラマを排除する、
> ただそれだけの理由でもCを採用する強力な理由になるな。
Linusは偉大なハッカーだとは思うけど
よりによってこういう非論理的な言説をLinusからパクる必要ないのに…
プログラマの優劣と使用言語は関係ないでしょ
googleはトップクラスのプログラマを大量に雇ってるけど
googleが使ってるのはC++であってCではないよね
まああなたがgoogleのプログラマ達よりずっと優秀だと自負してるんなら
まあご自由に
0197デフォルトの名無しさん
2011/04/21(木) 12:00:33.62try/catchまみれのプログラムは
Cのように戻り値でエラー処理してるプログラムより下手すりゃ読みにくい。
特にfinallyが無いC++の例外処理はな。
それに extern "C" する関数ではエラーを整数や構造体で
表現して返すわけで、それならモジュール内外で
エラーの表現方法をそろえるのも、読み手にはメリットがある。
ああ、もちろんC++でも戻り値でエラー処理できるよ?
でも、エラーは戻り値で処理してると決め撃ちできるのと、
ひょっとしたら例外も飛んでくるかもって思いながら読むのとでは
読みやすさが違うんだ。
0198デフォルトの名無しさん
2011/04/21(木) 12:00:48.07> あと、Cを使ったからって警告を無視するプログラマを排除するような
> 効果は無いよね?
それ以前にさ、再利用性の高いモジュールを、C/C++のような危険な言語で書くときに
警告を無視するようなプログラマなんか存在しないと言いたいわけよ。
非実在プログラマを排除したっていいだろ?>>195
# >>160は、ちょっと口がすべったんだろう。そう思わせてくれ。
0199デフォルトの名無しさん
2011/04/21(木) 12:33:04.36> ひょっとしたら例外も飛んでくるかもって思いながら読むのとでは
> 読みやすさが違うんだ。
なるほどね。
PythonなりRubyなりでいつも例外と隣り合わせな俺はもうそこらへん
平気だから気にしないことにする。
0200デフォルトの名無しさん
2011/04/21(木) 12:36:10.99つまり言語の性質みたいに言っちゃった>>193は間違いなんだね。
これもちょっと口がすべったんだろう。もうそれでいいよ。
0201デフォルトの名無しさん
2011/04/21(木) 12:39:52.36平気なつもりでバグだらけのコード書いてるんだよねwww
警告無視するしねwww
0202デフォルトの名無しさん
2011/04/21(木) 12:41:29.450203デフォルトの名無しさん
2011/04/21(木) 12:42:31.640204デフォルトの名無しさん
2011/04/21(木) 12:42:37.160205デフォルトの名無しさん
2011/04/21(木) 12:52:24.110206デフォルトの名無しさん
2011/04/21(木) 13:01:46.510207デフォルトの名無しさん
2011/04/21(木) 13:19:11.33読みやすさは主観や慣れもあるからな。
俺もPythonは不思議と読みやすいし(何故かRubyはイマイチ……)。
だから、そういう意見もあると思ってくれ。
0209デフォルトの名無しさん
2011/04/21(木) 13:38:53.13Linusの主張(>>3)で唯一根拠が無いのが
「C++は多くの平均以下のプログラマが使ってる」
って点だが、それすら >>160 の反論の
あまりのヘボさによって例示されてしまってる。
0210デフォルトの名無しさん
2011/04/21(木) 13:52:11.160211デフォルトの名無しさん
2011/04/21(木) 14:09:30.31スパゲッティコードが、隠された構造をクラス化することで見通しよくなる。
STLなどは初心者には特におすすめ。
0212デフォルトの名無しさん
2011/04/21(木) 14:10:56.49優秀な人間が発展させ、ヘボなのも優秀なのも巻き込んで大きくなり、
やがて衰退期に入ると優秀な人間は去っていく。
残るのは新しいものへ適応できない老人かヘボだけだ。
そして今C++は衰退期に入っている。あとは判るな?
0213デフォルトの名無しさん
2011/04/21(木) 14:19:59.31ここ見てもCとC++は2位と3位だし
前年比ではCのほうがC++より低下率高い
これで衰退期とか言われてもなあ
0214デフォルトの名無しさん
2011/04/21(木) 14:26:01.42具体的な話が出来ず、例え話しかできないってことですか。
0215デフォルトの名無しさん
2011/04/21(木) 14:27:29.050216デフォルトの名無しさん
2011/04/21(木) 14:28:35.832001年頃からのグラフを見ろよ
0217デフォルトの名無しさん
2011/04/21(木) 14:31:43.50いつC PGがC++を知らないことになったんだ?
0218デフォルトの名無しさん
2011/04/21(木) 14:35:37.81いつC++ PGが具体的な話したっけ?
あ、警告は無視しちゃうからC++がいいんですよねwww
0219デフォルトの名無しさん
2011/04/21(木) 15:25:17.86まさに至言
>>195
> プログラマの優劣と使用言語は関係ないでしょ
C PGはOOPが出来ない等の(根拠の無い)定番の煽りが昔からあるけど
いざ自分たちの劣等さを指摘されたら手のひら返しwww
0220デフォルトの名無しさん
2011/04/21(木) 15:40:45.00大学の教授を小学生が批判出来るとでも?
0221デフォルトの名無しさん
2011/04/21(木) 15:44:08.30C PG vs. C++ PG になってる
0222デフォルトの名無しさん
2011/04/21(木) 15:56:40.45根拠も無ければ(>>204)具体的でもない(>>214)けど
それがC++ PGの反論なの?
0223デフォルトの名無しさん
2011/04/21(木) 16:36:15.89C PG vs. C++ PG なんてやりたくないんだ・・・
まさか C++ PG がこんなに低脳揃いだなんて
スレ覗くまで思いもしなかったんだ・・・
でも一度知ってしまったら、もう低脳 C++ PG を
切り捨てるために C を使うのもありだと思えるんだ・・・
0224デフォルトの名無しさん
2011/04/21(木) 18:03:43.57めっちゃワロタwww
0225デフォルトの名無しさん
2011/04/21(木) 18:25:15.530226デフォルトの名無しさん
2011/04/21(木) 21:10:58.61現Google開発者のSteve Yeggeによるエッセイ(の日本語訳)
http://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
0227デフォルトの名無しさん
2011/04/21(木) 21:35:13.70うわOOP手法を知らない馬鹿が書いてる
5000万行のソースを軽々と扱えるようにするためにクラスがあるのに、それで苦労しているようでは
OOPを理解してないとしか言いようがない
0228デフォルトの名無しさん
2011/04/21(木) 22:01:52.13>>195にとってはGoogleプログラマは優秀ってことになってるのに
そんなこと言ったら>>195が可哀想だろ?
あとSteve YeggeはRuby on Railsが好きでJVM上で動くRhino on Railsを開発したり、
JavaとPythonでWyvern書いたりしてる、どっちかと言えばOOPが好きなプログラマ。
0229デフォルトの名無しさん
2011/04/21(木) 22:08:29.32>>227のご高説を賜るスレになりました
では、>>227にすばらしいOOP手法を解説してもらいましょうw
えーと、まずコンパイラの警告は無視するんでしたっけwww
0230デフォルトの名無しさん
2011/04/21(木) 22:20:35.72本買って自分で勉強しろカス
0231デフォルトの名無しさん
2011/04/21(木) 22:56:31.51まあ一人がAならgoogle全体がAと考える人にとってはどうでもいいことか。
0232デフォルトの名無しさん
2011/04/21(木) 23:05:45.14> まあ一人がAならgoogle全体がAと考える人にとってはどうでもいいことか。
そういうこと言うときは、せめて一人くらいBと考えてる人を示したら?
0233デフォルトの名無しさん
2011/04/21(木) 23:12:54.92boostだのC++0xだのすら調べない人には何言っても無駄なので負けでいいです。
0234デフォルトの名無しさん
2011/04/21(木) 23:20:02.89いやいや、そんなこと書いてる本見たことねーんだわwww
お前がアホすぎて自分じゃ解説できないなら、せめて本か論文の名前くらい示せよwww
0235デフォルトの名無しさん
2011/04/22(金) 00:46:06.31ちがうよ。
>>178は、前スレやこのスレで挙げられたC++によって解消または軽減できる問題の例を
捻じ曲げて寄せ集めて自分でもバカにできるC++プログラマ像に仕立てあげたものだよ。
問題点として挙げてる人が自分でそんなコードを平気で書くわけないし、ましてや複数人が
バラバラに挙げた問題点すべてをすべてのC++プログラマが抱えてるわけでもないって、
普通にちょっと考えればわかるのに。
0236デフォルトの名無しさん
2011/04/22(金) 00:51:09.590237デフォルトの名無しさん
2011/04/22(金) 00:53:53.80C++...
0238デフォルトの名無しさん
2011/04/22(金) 01:22:42.750239デフォルトの名無しさん
2011/04/22(金) 01:26:40.70どんな本でもいいんだよ
お前がOOP手法を全く理解してない事は良く分かったから
0240デフォルトの名無しさん
2011/04/22(金) 01:34:52.57でも周りからしたらそんなのはどうでも良い事な訳で、イチイチ噛み付いても仕方が無いぜ。
0241デフォルトの名無しさん
2011/04/22(金) 07:34:53.25> >>178は、前スレやこのスレで挙げられたC++によって解消または軽減できる問題の例を
> 捻じ曲げて寄せ集めて自分でもバカにできるC++プログラマ像に仕立てあげたものだよ。
そんなコードを書かない人間にとっては、そもそも問題にすらならない。
実際Cプログラマはどうでも良い問題だと思ってる。
でもC++プログラマにとっては、解消または軽減すべき問題ってことだろ?
それってC++プログラマがそういうコードを書くってことじゃん。
誰もそんなコードを書かないというなら、何が問題だっていうの?
0242デフォルトの名無しさん
2011/04/22(金) 07:37:45.630243デフォルトの名無しさん
2011/04/22(金) 08:26:10.60アセンブラや、C言語が簡単なやつは無理してC++を使うことはない。
より上級なプログラマといえるだろう。
STL、ブースト(C++ライブラリ)除去
⇒ C++除去(クラスやテンプレートなどの基本構造除去)
⇒ C:言語除去
⇒ アセンブラ除去
⇒ 機械語
0244デフォルトの名無しさん
2011/04/22(金) 08:43:14.60アセンブラ/機械語 : レジスタなどを直接弄れる
上と下は明確に守備範囲が違う。
これはプログラマの工夫とかでは埋められない差。
一方、CとC++の差は、シンプルさとか手間とか、そういう
プログラマで埋めることが可能な差。
だから好みが出てくる。
0245デフォルトの名無しさん
2011/04/22(金) 08:47:59.160246デフォルトの名無しさん
2011/04/22(金) 08:58:03.16LLやVM言語があまりにも遅く>>84の手法が通じなかったころの昔の手法
0247デフォルトの名無しさん
2011/04/22(金) 09:02:08.270248デフォルトの名無しさん
2011/04/22(金) 09:24:21.29C言語などに翻訳できると良い。
0249デフォルトの名無しさん
2011/04/22(金) 09:38:49.950250デフォルトの名無しさん
2011/04/22(金) 10:39:22.41>>178 にあるような各種問題のあるコードを書いてしまうプログラマは、
それらの問題について気付いていないプログラマであって、それがCを使うか
C++を使うかで変わったりはしない、そんなプログラマに黙ってCを強制した
だけで問題が回避されることは無い、ってのはさすがにわかるよね?
で、CとC++とで違うのは何かというと、問題に気付きやすいかどうか、
気付いたときに代案となるコードがどういったものになるか、といった点だろう。
0251デフォルトの名無しさん
2011/04/22(金) 10:42:36.690252デフォルトの名無しさん
2011/04/22(金) 11:02:19.09>>178は避けられないプログラマがいるというのか
0253デフォルトの名無しさん
2011/04/22(金) 11:22:21.02同じ口で「>>178は避けられないプログラマがいる」と言うと矛盾するのか?
0254デフォルトの名無しさん
2011/04/22(金) 11:33:20.30前スレでは、C++の文法の罠を指摘すると「自分は慣れてるから」とか
「多少の罠があるくらいは不問」とか言ってスルーしてたんだよ。
仮に同じ口で言ったとした場合、
そうやってC++の罠は避けられるから問題じゃないと言ってきたのに
Cの罠(罠と呼ぶのも馬鹿馬鹿しい)は避けられるから問題じゃない
というのを否定する>>250は、まさにダブルスタンダードじゃないかね?
0255デフォルトの名無しさん
2011/04/22(金) 11:47:19.91Cの罠はCを使うかC++を使うかで変わらないが
C++の罠はCを使えば絶対にハマらない
0256デフォルトの名無しさん
2011/04/22(金) 12:18:57.97多くの人はCでは効率が悪いのでC++を使う。
上級者はCとアセンブラだけでプログラム。
0257デフォルトの名無しさん
2011/04/22(金) 12:21:40.38「自分は罠に慣れてる」っていうのと「罠を避けられない(他の)人がいる」っていうのは
矛盾しない気がするな。「C++の文法の罠」ってのが具体的に何なのかもよくわからん。
後で読むから該当レス番もらえるとありがたい。
http://unkar.org/r/tech/1207419469
とりあえず、>>178も「C++の文法の罠」も、どっちも「罠と呼ぶのも馬鹿馬鹿しい」程度の話
なんじゃねーの、って思ってる。
0258デフォルトの名無しさん
2011/04/22(金) 13:32:28.34罠、で検索してその前後を読んでみた。
例えば >>222>>231>>237>>243>>806 とか?
あと秀逸なのが>>372
0259デフォルトの名無しさん
2011/04/22(金) 13:42:25.17> 「自分は罠に慣れてる」っていうのと「罠を避けられない(他の)人がいる」っていうのは
> 矛盾しない気がするな。
・自分は罠に慣れている、だから(罠を避けられない人はいるけど)C++の罠は問題にするな
・罠を避けられない人がいる、だから(自分は慣れていても)Cの罠は問題だ
分かるだろ?ダブルスタンダードなのが
0260デフォルトの名無しさん
2011/04/22(金) 13:48:12.23>>178なんてプログラマ失格レベルだろうがw
0261デフォルトの名無しさん
2011/04/22(金) 14:35:52.410262デフォルトの名無しさん
2011/04/22(金) 14:38:12.23>Cも同様だが、Cは別に「オブジェクト指向」なわけではない。そして
>オブジェクト指向であるということの小さからぬ部分は、プログラムが
>自分自身のことをわかるということなのだ。
これは分かるわー
boost conceptとかで一生懸命何とかしようとしてるのが涙ぐましい
0263デフォルトの名無しさん
2011/04/22(金) 15:12:45.30全然そんなことないから。本当は>>84で、いらない子はC++だけだから。
0264デフォルトの名無しさん
2011/04/22(金) 15:25:14.51×いらない子はC++だけだから。
○C++を使えないプログラマが未だに多すぎるから、ひがみです。
0265デフォルトの名無しさん
2011/04/22(金) 16:42:53.710266デフォルトの名無しさん
2011/04/22(金) 16:51:51.74まず自分からC++のクラスが必要な理由を書けよ
当然、LLやVM言語でOOPして遅いとこだけCで書くのと比べて
C++でOOPするメリットもな
ちゃんと説明できたら納得してやるから
0267デフォルトの名無しさん
2011/04/22(金) 17:12:42.320268デフォルトの名無しさん
2011/04/22(金) 17:28:40.64そういうのは説明じゃねーんだよ
じゃあCUDAやDirectXでいーや、それ使うときのメリット言えよ
別に無縁じゃねーから心配すんな
0269デフォルトの名無しさん
2011/04/22(金) 17:31:28.610270デフォルトの名無しさん
2011/04/22(金) 17:34:25.36いちからいわなきゃだめか?
0271デフォルトの名無しさん
2011/04/22(金) 17:44:38.84メインメモリの内容転送して、カーネル関数側でglobal/sharedメモリに転送されたデータをコピーして、
並列度の高い(四則)演算して、計算結果のデータをメインメモリに転送して、
メインメモリ側でデータを読み取る、たったこれだけだぞ?
どこにOOPの余地があるんだよ。知ったかぶるなよアホか?
0272デフォルトの名無しさん
2011/04/22(金) 18:17:31.35配列もサイズもその変数の役割も全て無視してdouble*で扱うのが好きな人はC++に全く魅力を感じないだろうね。
0273デフォルトの名無しさん
2011/04/22(金) 18:25:17.08お前にOOPの知識が皆無だという事はよく分かった
0274デフォルトの名無しさん
2011/04/22(金) 18:30:06.93C++そのもののプログラムも書くことが出来るマルチパラダイム言語。
言いたい事は分かるよな?懐が広いんだよC++は。
0275デフォルトの名無しさん
2011/04/22(金) 19:20:33.65マルチパラダイムなら出来るよな?
0276デフォルトの名無しさん
2011/04/22(金) 19:22:22.73C++ PGがわざとやってるのか?
0277デフォルトの名無しさん
2011/04/22(金) 20:19:50.63CUDAは基本float
そんなことも知らないお前はCUDAの知識ゼロ
>>273
根拠も無ければ(>>204)具体的でもない(>>214)な
どうしてそう言えるのか説明してみろよ
0278デフォルトの名無しさん
2011/04/22(金) 20:22:59.44OOPの知識があれば5000万行のコードを軽々扱えるんだよなwww
0279デフォルトの名無しさん
2011/04/22(金) 21:01:04.92Objective-C++はほとんどCのプログラムを書く事も出来れば、Objective-Cとして書く事も出来れば、
C++そのもののプログラムも書くことが出来るマルチパラダイム言語。
言いたい事は分かるよな?頭が悪いんだよC++ PGは。
0280デフォルトの名無しさん
2011/04/22(金) 21:05:06.860281デフォルトの名無しさん
2011/04/22(金) 21:07:16.35その理屈で行くとObjective-C++ PGも頭が悪い事になるな
自己紹介乙
0282デフォルトの名無しさん
2011/04/22(金) 21:15:32.82>>180のように>>274を皮肉ってんだろ
0283デフォルトの名無しさん
2011/04/22(金) 22:06:22.610284デフォルトの名無しさん
2011/04/22(金) 22:07:01.22266はC++のクラスがOOP用だって言う変な前提があるからな。
個人的には記述が短くなるのでPODの構造体よりはクラスの方が好きではあるけれど
継承は最小限しか行わないで委譲でまかなうべきだと思ってる。
関数のオーバーロードやテンプレート等のC++にあってCにはない機能もOOPとは直接関係ないし
266のようにC++をOOPでしか語れない人っていうのは頭悪そうだよな。
LLだけれど、動的な型を用いるせいで大きなプログラムを書くとバグが発生しやすい
とか遅いとかリソース食うとか色んな欠点があるわけでC++の方がマシなケースもあるよね。
パフォーマンスが必要な部分が全体に及んでることもあるのになぜ一部だと断定できるんだろう。
数年前にtwitterの人がRubyからScalaに置き換えるとかいってたのもそういうことでしょう。
0285デフォルトの名無しさん
2011/04/22(金) 22:08:38.27と言いながらパイナップルを食わそうとする
0286266
2011/04/22(金) 22:26:20.16そういう話を聞きたかった
別にC++をOOP専用だと思ってるわけじゃない。個人的には
テンプレート使った静的ポリモーフィズムは嫌いじゃないし
> 数年前にtwitterの人がRubyからScalaに置き換えるとかいってたのもそういうことでしょう。
RORは動的なのが大事なフレームワークなので、単純に遅いところをCで書き直すという
手法が通じなかったんだろう。そういうこともある
置き換え対象もまたVM言語なのはあれだが
0287266
2011/04/22(金) 22:43:25.03あとさ、>>84のアプローチに対してCとC++のどちらが向いてるか、そういう話をしてたんだろ?
問題の前提をいきなり覆すのってどうなんだ。まあいいけどよ
0288デフォルトの名無しさん
2011/04/22(金) 22:46:50.670289266
2011/04/22(金) 22:48:59.44論争に勝つのが目的じゃあるまいし、もっと誠実に議論しようぜ
0290デフォルトの名無しさん
2011/04/22(金) 22:50:01.64キリッ
>論争に勝つのが目的じゃあるまいし、もっと誠実に議論しようぜ
キリリッ
そこまでいうなら266はトリ付けてよ
0291デフォルトの名無しさん
2011/04/22(金) 22:54:25.54このスレの C++ PG なんてアホばっかりなんだから
誠実な議論なんてできるわけないじゃんね
0292デフォルトの名無しさん
2011/04/22(金) 22:58:24.11こいつ全然C++のメリットについて具体的なこと言ってないからな。
C++固有の機能については名前を挙げてるだけだし、
LL批判にいたっては、型チェックとかリソース不足とかって
それ全部Cでも改善できることだろ。
0293デフォルトの名無しさん
2011/04/22(金) 23:00:53.84顔真っ赤ですよ
余程悔しかったのかな?
0294デフォルトの名無しさん
2011/04/22(金) 23:08:42.31>>数年前にtwitterの人がRubyからScalaに置き換えるとかいってたのもそういうことでしょう。
Rubyが遅いだけの話をLL全体の批判に転嫁すんなって
0295デフォルトの名無しさん
2011/04/22(金) 23:08:47.81C++やってライブラリ一通り使ってみてその結論に達したんでしょ、
なら掲示板で話して意味のあることはないねえ。
まあ、例えばCのコードとC++のコード出して比べてC++のここがダメだとか言ってくれれば、
それに対して色々コメントは出来るけどね。
0296デフォルトの名無しさん
2011/04/22(金) 23:19:08.81STLより高性能な準標準ライブラリ(>>132)というメリットが示されてる。
C++がCへの優位性を示したければ、CではダメなコードがC++だと改善される、というのを具体的に示すべき。
そうじゃなければ人気でもポータビリティでも劣るC++を選ぶ理由が無いから。
0297デフォルトの名無しさん
2011/04/22(金) 23:23:24.75C++はObjective-Cと混ぜるの面倒くさい
0298デフォルトの名無しさん
2011/04/22(金) 23:27:35.28もう少し盛り上げてよ
0299デフォルトの名無しさん
2011/04/22(金) 23:30:48.45>>160>>227を見習え
0300デフォルトの名無しさん
2011/04/23(土) 00:04:30.730301デフォルトの名無しさん
2011/04/23(土) 00:25:13.29短いコードでC++の特徴示すの難しいよ。
#include "iostream"
class X {
public:
X & operator= (const X &x) { return *this; }
operator bool() { return true; }
};
X operator *(const X &x, const X &y) { return y; }
int main()
{
X a, b, c;
if (a * b = c) {
std::cout << "True\n";
} else {
std::cout << "False\n";
}
return 0;
}
さて、True か False かどっち?
0302デフォルトの名無しさん
2011/04/23(土) 00:41:51.89もしかして
if (a * b = c) {
は
if (a * b == c) {
って事?
でも False になるような事はなさそうな。。。
0303デフォルトの名無しさん
2011/04/23(土) 00:44:02.12http://yuzuru.2ch.net/test/read.cgi/ff/1298538064/l50
http://www31.atwiki.jp/fftsukurou/
・最近のFFが嫌い
・昔のFFが好き
どちらかに当てはまれば誰でも結構です。
昔ながらのFFをみんなで作りましょう。
0304デフォルトの名無しさん
2011/04/23(土) 01:04:44.72いや、もとのコードでOK。
こんな短いコードでも a * b = c みたいな式が書けてしまう、それがC++。
0305デフォルトの名無しさん
2011/04/23(土) 01:12:42.14にするつもりだったのに、間違えた。orz
a * b = c と a * b == c で結果変えたかったのに。
0306デフォルトの名無しさん
2011/04/23(土) 02:28:25.80そんなcopyと言う名前でjoinする関数書くようなやつは土に埋めてしまえ。
0307デフォルトの名無しさん
2011/04/23(土) 02:49:04.58> そんなcopyと言う名前でjoinする関数書くようなやつは土に埋めてしまえ。
全然ポイント外してる。理解できてない
0308デフォルトの名無しさん
2011/04/23(土) 03:09:50.120309デフォルトの名無しさん
2011/04/23(土) 03:12:06.130310デフォルトの名無しさん
2011/04/23(土) 03:31:33.85>>301みたいなのを書いちゃう
馬鹿避けにはなるのか
0311デフォルトの名無しさん
2011/04/23(土) 03:41:34.59それでもキモい式が書けてしまうのはC++が必要以上に複雑だから。
そして、ぱっと見て挙動が理解できないC++ PGは全員ろくに
言語仕様も理解せずにC++書いてる低能だから反省しろ。
0312デフォルトの名無しさん
2011/04/23(土) 03:49:13.94これで意味のあるコードならば、積を積として使っていないか、代入を代入として使っていないか、或いはその両方だろう。
0313デフォルトの名無しさん
2011/04/23(土) 03:56:02.39> 積の戻り値の一時オブジェクトに代入してる時点ですでに普通のC++コードではない
普通にC++のクラスを定義しただけで、そんな普通じゃない式がコンパイルエラーにも
警告にもならないってのを問題にしてるんだが、理解できないかね?
0314デフォルトの名無しさん
2011/04/23(土) 04:00:04.850315デフォルトの名無しさん
2011/04/23(土) 04:01:43.090316デフォルトの名無しさん
2011/04/23(土) 04:43:54.75C++PGが挙動を理解出来ないことに憤る>>311は不自然だあね。
0317デフォルトの名無しさん
2011/04/23(土) 08:34:18.790318デフォルトの名無しさん
2011/04/23(土) 12:46:04.070319デフォルトの名無しさん
2011/04/23(土) 12:49:56.45お前が馬鹿なんだろ
0320デフォルトの名無しさん
2011/04/23(土) 12:51:05.740321デフォルトの名無しさん
2011/04/23(土) 13:02:46.49C++ってJavaと比べてどうなの?
0322デフォルトの名無しさん
2011/04/23(土) 13:08:47.00Java はオブジェクト指向に沿ってコーディングする感じだけど、
C++ はオブジェクト指向は使っても良いかなって感じ(マルチパラダイム)
Java は分かり易さとか明確さを重視するけど、
C++ はそういうのを気にしてない感じ
Java の言語仕様はコンパイラに優しいけど、
C++ はパーサが苦労して頑張ってる感じ
0323デフォルトの名無しさん
2011/04/23(土) 13:18:42.02やっぱり作る側も相当技術必要っぽいね。
CとJavaは結構やってるけど、C++も始めようかなあ。
仕事では出番ないんだけどね
0324デフォルトの名無しさん
2011/04/23(土) 13:48:28.41悔しそうですね
0325デフォルトの名無しさん
2011/04/23(土) 14:24:07.36やはりC++ PGを排除するためにCはありだな。いまどき進んでC++やってるのはカス過ぎる
0326デフォルトの名無しさん
2011/04/23(土) 14:28:41.43と、単にC++を理解出来ないだけのカスが申しております
0327デフォルトの名無しさん
2011/04/23(土) 14:30:58.64C++で演算子オーバーロードを極力使わないのは同意だが
何やってるのか理解できないのは問題だろ
それじゃSTLすら読めないじゃん
え、まさか自分が利用するライブラリのコードすら読めなくていいと思ってんの?
0328デフォルトの名無しさん
2011/04/23(土) 14:48:11.61C++標準委員会の人が一般プログラマは
ライブラリのソースを読む必要が無いとか言ってたぞ。
0329デフォルトの名無しさん
2011/04/23(土) 15:30:59.810330デフォルトの名無しさん
2011/04/23(土) 16:01:23.54標準委員会にライブラリ読まなくていいとか言われちゃう時点で
C++のヤバさに気付け
ていうか、他人にコード読まなくていいって言われたら素直に従うのかよ
さすが仕様もコードも読まないC++ PGだな
0331デフォルトの名無しさん
2011/04/23(土) 16:19:29.63クラスを使ったコードはC++ PGには読めなかったようだけど?
0332デフォルトの名無しさん
2011/04/23(土) 16:30:11.35プログラマの能力が言語の選択でどうにかなるわけないだろ。
言語を比較しろよ。
0333デフォルトの名無しさん
2011/04/23(土) 16:36:10.85すぐプログラマの能力の問題に持ってくのはC++ PG側だけどね
実際はC PGより全然理解できてないわけだけどwww
0334デフォルトの名無しさん
2011/04/23(土) 17:20:49.530335デフォルトの名無しさん
2011/04/23(土) 17:34:06.26どうやったら苛められるんだろう?
0336デフォルトの名無しさん
2011/04/23(土) 17:40:11.14どうして詳しいって分かるんだろう?
自画自賛ですか?
ずいぶんナルシストですね
0337デフォルトの名無しさん
2011/04/23(土) 17:41:57.00>>301を見てIOC++CCとか言ってる馬鹿がいて笑ったよ
0338デフォルトの名無しさん
2011/04/23(土) 19:25:14.650339デフォルトの名無しさん
2011/04/24(日) 02:06:17.60ライブラリのソースを読まないといけないのかw
はげるぞ。
0340デフォルトの名無しさん
2011/04/24(日) 03:14:42.94>ていうか、他人にコード読まなくていいって言われたら素直に従うのかよ
もろちん。
>さすが仕様もコードも読まないC++ PGだな
仕様書に基づいて呼び出しのコードを書くのが筋。
ライブラリのソースを見て呼び出しプログラムを書くCプログラマーは
仕様に従うという文化を持たないバカ共。
0341デフォルトの名無しさん
2011/04/24(日) 03:35:24.94何の副作用も無く使えると信じきれるなんて、C++ PG は幸せなんだあ
0342デフォルトの名無しさん
2011/04/24(日) 03:50:08.28車輪の再生産に無限の価値を未だに信じている時代遅れの馬鹿発見
0343デフォルトの名無しさん
2011/04/24(日) 03:55:32.060344デフォルトの名無しさん
2011/04/24(日) 04:02:54.27?
車輪の生産とは一切関係無いんだが
0345デフォルトの名無しさん
2011/04/24(日) 04:28:40.14仕様書にそう書いてあるから問題無いんだ(キリッ ってな感じ?
0346デフォルトの名無しさん
2011/04/24(日) 04:32:14.260347デフォルトの名無しさん
2011/04/24(日) 04:32:23.68使わなきゃいけないライブラリを書くのか。
とりあえず仕事では間に合わんから使えんな。
>>344
ググれ。
0348デフォルトの名無しさん
2011/04/24(日) 04:37:22.61ググるとかじゃなくて、基礎部品の再実装とは関係無い話だと言っているのだが。
所詮は他人が作った部品を、心の底から信じきれる C++ PG は幸せなんだろうな。
0349デフォルトの名無しさん
2011/04/24(日) 05:18:30.60347じゃないけれどSTLなどの標準ライブラリのバグなら経験上ググると高確率で見つかるよね
もともとSTLのソースの話だったのに、勝手に基礎部品と言い換えて話を拡大して
反論するのはおかしいですよ、日本語読めないんですか?
0350デフォルトの名無しさん
2011/04/24(日) 05:19:13.19君はシステムコールとかAPIをいちいち逆アセンブルしてるのか
0351デフォルトの名無しさん
2011/04/24(日) 05:30:02.58車輪の話だ。
>>350
気になったらソースコードを読んでますよ。
OS は Mac も Linux も *BSD も Solaris もソースコードが公開されています。
公開されていない物に関しては、残念ですが仕方が無いですね。
0352デフォルトの名無しさん
2011/04/24(日) 05:47:03.79それはそれで凄いねw
0353デフォルトの名無しさん
2011/04/24(日) 09:20:17.62> 仕様書に基づいて呼び出しのコードを書くのが筋
そう思うなら、せめて使う言語の仕様くらいちゃんと把握してろwww
0354デフォルトの名無しさん
2011/04/24(日) 10:16:01.780355デフォルトの名無しさん
2011/04/24(日) 10:19:41.67試せば良いだろ?
君はあれか?TVの仕組みとかケータイの内部規格とか、そういうの
も予め使う前に(作る前ではない)知らべちゃうのか?
0356デフォルトの名無しさん
2011/04/24(日) 10:24:23.910357デフォルトの名無しさん
2011/04/24(日) 11:51:18.03再実装を否定するなら仕様書もいらないよ
マニュアルを書くなら、下手に形式ばらない方が読みやすい
0358デフォルトの名無しさん
2011/04/24(日) 14:36:22.06世の中の標準だと思ってるな
0359デフォルトの名無しさん
2011/04/24(日) 14:43:51.000360デフォルトの名無しさん
2011/04/24(日) 14:47:24.10全ての実装は無瑕無疵を誇っているらしいから、とっても羨ましいや・・・
0361デフォルトの名無しさん
2011/04/24(日) 14:49:04.53C++ Committee : 「お前らソースなんて読むなよ」
C++ PG : 「はーい! 読みませんとも!」
0362デフォルトの名無しさん
2011/04/24(日) 15:07:46.04世の中の標準になったんだよw
0363デフォルトの名無しさん
2011/04/24(日) 15:19:54.340364デフォルトの名無しさん
2011/04/24(日) 15:34:14.090365デフォルトの名無しさん
2011/04/24(日) 15:36:25.220366デフォルトの名無しさん
2011/04/24(日) 16:53:43.14ライブラリにバグがあるよりも自分のコードにバグがある確率の方が圧倒的に多い
だいたいライブラリなんか読んでいたら時間が足りない
0367デフォルトの名無しさん
2011/04/24(日) 16:55:58.430368デフォルトの名無しさん
2011/04/24(日) 17:24:22.76自分の書いたコードをデバッグするんだよ?
意味分かってないだろ?
0369デフォルトの名無しさん
2011/04/24(日) 17:29:32.82> だいたいライブラリなんか読んでいたら時間が足りない
そういう台詞はライブラリを読めるようになってから言えよw
0370デフォルトの名無しさん
2011/04/24(日) 17:29:36.83君、>>367 の意味が分かってないでしょ。
0371デフォルトの名無しさん
2011/04/24(日) 17:29:53.080372デフォルトの名無しさん
2011/04/24(日) 17:30:54.41仕様もコードも読まない子
0373デフォルトの名無しさん
2011/04/24(日) 17:38:30.64なんでこんなに長々とここで言い争ってるの?
0374デフォルトの名無しさん
2011/04/24(日) 17:42:07.93仕様読んだりコード読んだりするのは、言語に関係無く当たり前の話だよな。
0375デフォルトの名無しさん
2011/04/24(日) 17:53:52.75仕事してないニート暇人ばかりだから
0376デフォルトの名無しさん
2011/04/24(日) 17:59:39.79C++ PG : 「それは C PG がヘボだから。クラス、オーバーロード、テンプレート必要!」
C PG : 「じゃあ簡単なコード(>>301)読んでみてよ」
C++ PG : 「は?そんなの読めるわけないだろ!IOC++CC かよ!」
C PG : 「これ読めなきゃ STL とかのライブラリ読めないよね?」
C++ PG : 「ライブラリなんて読まなくていい!標準委員会も読まなくていいと言ってる!仕様書が読めればいい!」
C PG : 「でも言語仕様書は読んでないよね?」
C++ PG : 「言語仕様書も読まなくていい!困ったらググるから!」 << いまここ
0377デフォルトの名無しさん
2011/04/24(日) 18:08:40.28C++ PR : 「そうだよな俺たちがいくらこのスレでわめいても全く説得力ないもんな」
0378デフォルトの名無しさん
2011/04/24(日) 18:20:05.96悔しいの?顔真っ赤だよ?
0379デフォルトの名無しさん
2011/04/24(日) 18:22:09.36自己紹介乙
0380デフォルトの名無しさん
2011/04/24(日) 18:26:28.380381デフォルトの名無しさん
2011/04/24(日) 18:36:11.17バグを疑わないといけないようなライブラリしか無いのはかわいそうだな。
自分のバグなのに「ライブラリのバグだ!」って騒ぐ人もいるけど。。
0382デフォルトの名無しさん
2011/04/24(日) 18:49:54.00大抵誰かが同じ問題にぶち当たってるからなー。
既にパッチが出てるのに自分で解析するのは無駄じゃね?
0383デフォルトの名無しさん
2011/04/24(日) 18:57:28.14ライブラリのバグに遭遇した事が無い人は幸せだなあ。
0384デフォルトの名無しさん
2011/04/24(日) 19:02:32.06スタックをダンプして、問題発生箇所でソースコードを grep した方が早い場合も多いよ
使うのは有名ライブラリばかりじゃないからね
0385デフォルトの名無しさん
2011/04/24(日) 19:12:11.70俺だったらバグだらけの無名ライブラリしか使えないようなものは選ばないな。
選択権が無い場合は仕方ないが。。
0386デフォルトの名無しさん
2011/04/24(日) 19:29:34.150387デフォルトの名無しさん
2011/04/24(日) 19:31:33.440388デフォルトの名無しさん
2011/04/24(日) 19:33:42.440389デフォルトの名無しさん
2011/04/24(日) 19:53:29.580390デフォルトの名無しさん
2011/04/24(日) 21:40:17.40Cプログラマーはライブラリのソース追わないとライブラリの
バグなのかどうか判断つかないの?
ライブラリの挙動が仕様に従っていなくて暇だったらライブラリの
ソースを追うけど、最初からソース追う気満々なのは嫌だ
0391デフォルトの名無しさん
2011/04/24(日) 21:52:27.870392デフォルトの名無しさん
2011/04/24(日) 21:59:25.090393デフォルトの名無しさん
2011/04/24(日) 22:01:17.46改行が変な場所にあって読みにくいったらありゃしない
0394デフォルトの名無しさん
2011/04/24(日) 22:23:47.15もっと他に読むコードがあるものでね。
0395デフォルトの名無しさん
2011/04/24(日) 22:30:49.10そのプログラムが何をするものなのか、どうなれば正しいのか
定義も不明なまま処理を追うのは苦痛以外の何物でもない。
0396デフォルトの名無しさん
2011/04/24(日) 23:06:50.890397デフォルトの名無しさん
2011/04/24(日) 23:15:06.65時間は無限じゃないんだよ?
ライブラリのソースコードなんて解析してたら10年ほど掛かるんじゃね?
0398デフォルトの名無しさん
2011/04/24(日) 23:18:50.14何で無目的に全てのライブラリを読もうとしてるの?
0399デフォルトの名無しさん
2011/04/24(日) 23:21:29.860400デフォルトの名無しさん
2011/04/24(日) 23:22:43.48何で全部のソースコードを読む必要があるの?
0401デフォルトの名無しさん
2011/04/24(日) 23:24:29.29普段はどんなコードを読んでいるの?
0402デフォルトの名無しさん
2011/04/24(日) 23:29:23.47俺がいつ「全部のソースコードを読む必要がある」と言った?
0403デフォルトの名無しさん
2011/04/24(日) 23:31:28.33オペレータは自分では定義しないし、使ったソースは読まないと言われたので、今度はそれを使わない例。
#include <iostream>
namespace X
{
template <typename T>
void print(T) { std::cout << "X\n"; }
template <typename T>
void print_2(T x) { print(x); print(x); }
}
namespace Y
{
struct D {};
void print(D) { std::cout << "Y\n"; }
}
int main()
{
Y::D a;
X::print_2(a);
return 0;
}
何て出力されるかな?
0404デフォルトの名無しさん
2011/04/24(日) 23:33:20.70常識的に考えて、全部のソースコードを読むんでなければ10年も掛からないから
0405デフォルトの名無しさん
2011/04/24(日) 23:35:04.37つまりは貴方の勝手な解釈なわけですね
常識とは貴方だけに通用する常識である事をお忘れなく
0406デフォルトの名無しさん
2011/04/24(日) 23:35:27.700407デフォルトの名無しさん
2011/04/24(日) 23:36:32.02それでは、10年間も何のソースコードを読むつもりだったの?
答えは貴方の常識の範疇で良いよ
0408デフォルトの名無しさん
2011/04/24(日) 23:40:52.63貴方に答える義理はありません
0409デフォルトの名無しさん
2011/04/24(日) 23:43:06.05じゃあそれで良いよ。
常識的に言って、ライブラリのソースコードを一切読まないプログラマなんて居ないよねえ。
0410デフォルトの名無しさん
2011/04/24(日) 23:50:33.040411デフォルトの名無しさん
2011/04/25(月) 00:01:16.62C/C++のマクロって見た目汚くなるだけで、意外と非直感的な結果って出せないんだよね。
所詮やってることは文字列置換だから。
0412デフォルトの名無しさん
2011/04/25(月) 00:06:29.78Y
Y
で合ってる?
0413デフォルトの名無しさん
2011/04/25(月) 00:16:47.74合ってる。
>>403は個人的にC++で嫌いな振る舞いのひとつ。
名前空間とはなんだったのか。
0414デフォルトの名無しさん
2011/04/25(月) 00:24:33.150415デフォルトの名無しさん
2011/04/25(月) 00:37:45.580416デフォルトの名無しさん
2011/04/25(月) 02:54:14.96テンプレートをマクロと同様のものだと思ってるなら不用意に省略とかしないので
void print_2(T x) { X::print(x); X::print(x); }
と書くと思う。要するにただのバグだから嫌いな振る舞いするのは当たり前。
0417デフォルトの名無しさん
2011/04/25(月) 03:04:55.240418デフォルトの名無しさん
2011/04/25(月) 03:20:58.67void print_2(T x) { print(x); print(x); } と'X::'つけないでprint呼んでるんだから
頭おかしい人が書いたようにしか見えない。動作考えるとか以前に第一印象がバグ。
0419デフォルトの名無しさん
2011/04/25(月) 03:26:03.200420デフォルトの名無しさん
2011/04/25(月) 06:53:26.04名前空間は一種のスコープであり、かつ同一の名前空間の中では
X::というスコープ演算子を省略できるというルールがある以上、
同じ名前空間にあるほうの print が呼ばれると思うのが自然。
あとマクロと一緒にするのは間違い。マクロは名前空間とは違う
「名前空間」(ああややこしい)に属するから。実際マクロには
X::のようなスコープ演算子を付けることは出来ない。
0421デフォルトの名無しさん
2011/04/25(月) 07:29:55.11仕様がおかしいと主張するC使いにたいして
仕様通りだと答えるコミュニケーション能力の無いC++使い。
0422デフォルトの名無しさん
2011/04/25(月) 07:40:46.06std::cout は外側の名前空間にアクセスしてるんだから'std::'が付いて当たり前
付けなきゃエラーだ
0423デフォルトの名無しさん
2011/04/25(月) 07:46:18.88まず、防衛費ゼロ、
防衛省や自衛隊組織解散、
高給公務員の所得規制
からだろ
0424デフォルトの名無しさん
2011/04/25(月) 08:35:05.60C++やってると頭おかしくなるんだね
こいつアホすぎ
0425デフォルトの名無しさん
2011/04/25(月) 12:20:07.350426デフォルトの名無しさん
2011/04/25(月) 13:27:11.46飛び出したけど、今回はどんなギャグを披露してくれるかな?
0427デフォルトの名無しさん
2011/04/25(月) 14:10:12.860428デフォルトの名無しさん
2011/04/25(月) 14:21:47.210429デフォルトの名無しさん
2011/04/25(月) 14:43:17.70同じ名前空間でも一切修飾を省略しないつもりかよ。
それじゃCみたいにprefix付けて区別するのと変わらないだろ。
むしろ付け忘れたらコンパイルエラーになる分Cの方がマシだわ。
0430デフォルトの名無しさん
2011/04/25(月) 17:06:22.110431デフォルトの名無しさん
2011/04/25(月) 17:58:34.340432デフォルトの名無しさん
2011/04/25(月) 19:13:45.23都合の良い機能だけCに付け加える方がいい
0433デフォルトの名無しさん
2011/04/25(月) 19:28:28.73それがC99でありDなわけだが
流行ったかどうかはご存じの通り
0434デフォルトの名無しさん
2011/04/25(月) 19:53:01.570435デフォルトの名無しさん
2011/04/25(月) 19:59:52.94徐々にC99も使われだしてきてる
K&RスタイルからANSIスタイルへ移り変わるのにも時間がかかったし
こういうのは移行期間が長くかかるというだけ
あとDさんをdisるのはスレ違い
0436デフォルトの名無しさん
2011/04/25(月) 20:11:18.20Cを置き換えられるのはやっぱりC(99,1X)だけだな
0437デフォルトの名無しさん
2011/04/25(月) 20:40:20.97ANSI(-ansi)
http://www.google.com/codesearch?hl=ja&lr=&q=%22+-ansi%22+file%3AMakefile
C89(-std=c89 or -std=gnu89)
http://www.google.com/codesearch?hl=ja&lr=&q=%22+-std%3Dc89%22+file%3AMakefile
http://www.google.com/codesearch?hl=ja&lr=&q=%22+-std%3Dgnu89%22+file%3AMakefile
C99(-std=c99 or -std=gnu99)
http://www.google.com/codesearch?hl=ja&lr=&q=%22+-std%3Dc99%22+file%3AMakefile
http://www.google.com/codesearch?hl=ja&lr=&q=%22+-std%3Dgnu99%22+file%3AMakefile
今の時点では約4割がC99だね
不人気と言われ続けてるC99だけど、意外に使われている
0438デフォルトの名無しさん
2011/04/25(月) 20:44:57.36C99に完全準拠したコンパイラはありますかね?
Intel C++もgccもライブラリで完全準拠してないし、今のCをC99で置き換えるほどの
メリットが感じられない
むしろ今元気があるのはObjective-C
http://journal.mycom.co.jp/news/2011/04/19/016/index.html
C99なんて文字列はどこにも見当たりませんが( ´ー`)y-~~
0439デフォルトの名無しさん
2011/04/25(月) 20:46:38.16こんな状態じゃC99とは言えませんって
ほとんどgcc独自拡張と考えられている
http://gcc.gnu.org/c99status.html
0440デフォルトの名無しさん
2011/04/25(月) 20:50:30.02って感じでしょ
0441デフォルトの名無しさん
2011/04/25(月) 20:52:43.92C99で欲しい機能はほぼ実装されてるんだけど、そのリストの中で未実装で困る機能ある?
あと、言語仕様に完全準拠したコンパイラが必要条件とするなら
C++なんて全然使えないだろ。
0442デフォルトの名無しさん
2011/04/25(月) 20:55:38.05あっそ
じゃせいぜいC99を使ってて下さい
うちの会社じゃのけ者にされるだけなんで
0443デフォルトの名無しさん
2011/04/25(月) 20:56:55.540444デフォルトの名無しさん
2011/04/25(月) 21:01:39.09> C99なんて文字列はどこにも見当たりませんが( ´ー`)y-~~
その手のリストでCをC89とC99に分類して表示するわけないだろ。
PythonだってRubyだってバージョン毎に分かれてない。
ばかじゃねーの?
0445デフォルトの名無しさん
2011/04/25(月) 21:01:44.81大きなプロジェクトは複数人でプログラムするだろ
一人だけC99使っててみろ
どうなるか位わかるだろ
0446デフォルトの名無しさん
2011/04/25(月) 21:08:04.32複数人が参加するプロジェクトで自分勝手に言語選ぶわけないだろ。
C99を使うかどうかは協議して決めるにきまってる。
コンパイラがあるなら移行自体に技術的障壁は無い。
0447デフォルトの名無しさん
2011/04/25(月) 21:11:09.37はい、協議の結果C99は却下間違いありません
0448デフォルトの名無しさん
2011/04/25(月) 21:25:10.430449デフォルトの名無しさん
2011/04/25(月) 21:50:46.13放置しよ
0450デフォルトの名無しさん
2011/04/25(月) 22:23:13.68//
でコメント出来るのを知らなかったところがあったな
規格とかうるさくなかった時代だけど、
妙に昔の実装に固執してたような感じっだ、
いわんや、中身が...
0451デフォルトの名無しさん
2011/04/25(月) 22:29:05.22C99 は全く流行ってないから C++ を better C として使うべき
っていうのが C++ 派の心の拠り所だったのに・・・
0452デフォルトの名無しさん
2011/04/25(月) 23:14:52.840453デフォルトの名無しさん
2011/04/25(月) 23:29:03.750454デフォルトの名無しさん
2011/04/25(月) 23:47:47.230455デフォルトの名無しさん
2011/04/25(月) 23:48:57.840456デフォルトの名無しさん
2011/04/25(月) 23:50:15.530457デフォルトの名無しさん
2011/04/25(月) 23:53:30.61慣れれば、読めるんだろうけど
0458デフォルトの名無しさん
2011/04/26(火) 06:37:39.89再利用性という観点からは、データ構造とアルゴリズムは分離したほうが良いのは自明で、
実際C++もtemplateでそっち方面に進んでいるが
なんで昔はクラスでデータ構造とアルゴリズムを結合するのが流行ったのかね?
データとアルゴリズムが強く結びついてる所為で
クラスライブラリAとクラスライブラリBを混ぜてつかうとか、本当に難しくなったのだが
0459デフォルトの名無しさん
2011/04/26(火) 07:18:35.530460デフォルトの名無しさん
2011/04/26(火) 09:17:07.56結合のせいじゃなくて内部イテレータのせいだ
0461デフォルトの名無しさん
2011/04/26(火) 11:44:51.49囚人は自分を縛る鎖の出来を自慢する
0462デフォルトの名無しさん
2011/04/26(火) 11:53:19.57えらい皮肉だな
0463デフォルトの名無しさん
2011/04/26(火) 12:47:29.00アルゴリズムが再利用可能であるためには、データはアイテレータなどの共通インタフェースを持つ必要がある。
データを保持するクラスが持つべきはアルゴリズムじゃない。インタフェースだよ。
0464デフォルトの名無しさん
2011/04/26(火) 13:00:46.85STL以前の初期のオブジェクト指向だとそういう分離が考えられてなかったよね
って話じゃないの。
0465デフォルトの名無しさん
2011/04/26(火) 13:07:43.96その目的だとしても、総称型のほうがクラスより向いてるという話でしょう。継承しなくていいから。
インターフェースを呼び出す構文としても、obj.f() と f(obj) で本質的に変わらない。
いや、むしろメソッドは第一引数に bind される分だけ
複数の引数を取るインターフェースが自然に書けない。
0466デフォルトの名無しさん
2011/04/26(火) 13:21:39.40但しコンテナを作るためにバリバリにクラスを使いまくっているけど
templateもSTLを作るために入れられたって話だし
templateの存在がC++を著しく理解困難にしているのは確かだが
これにより得られた物も極めて多い
0467デフォルトの名無しさん
2011/04/26(火) 14:03:37.72http://www.stlport.org/resources/StepanovUSA.html
0468デフォルトの名無しさん
2011/04/26(火) 15:03:27.570469デフォルトの名無しさん
2011/04/26(火) 17:02:26.720470デフォルトの名無しさん
2011/04/26(火) 17:35:39.33何だよその劣化って
どうしてもクラスをけなしたいのか
0471デフォルトの名無しさん
2011/04/26(火) 18:03:19.38事実だから
0472デフォルトの名無しさん
2011/04/26(火) 18:13:30.90お前の中ではな
お前の中「だけ」ではな
0473デフォルトの名無しさん
2011/04/26(火) 18:35:07.49クロージャ:環境のcapture機能あり
総称型:ルートオブジェクトを継承したりする必要なし
こんな感じか?
クラスはクラス、専用構文には流石に敵わんよ
0474デフォルトの名無しさん
2011/04/26(火) 18:38:31.72それは劣化と言えるのか
0475デフォルトの名無しさん
2011/04/26(火) 19:08:50.05>templateもSTLを作るために入れられたって話だし
どこで聞いたんだ、そんなデマ。。。
歴史的におかしいぞ。
0476デフォルトの名無しさん
2011/04/26(火) 19:10:42.53クロージャがあればクラスが要らないというのはよくある勘違い。
クロージャをクラスに見立てようとすると、メソッドディスパッチを自前で実装しなくてはいけない。
一生懸命実装したとしても、コンパイラの支援を受けられないから当然遅くなる。
シンタックスも冗長になるし、何も良い事無い。
0477デフォルトの名無しさん
2011/04/26(火) 19:18:34.10名前空間は引数にして渡したり、メッセージを受け取ったり出来ないじゃん。
部分的にクラスの代用になるというだけだから、名前空間自体が劣化クラスという見方もできちゃうよ?
0478デフォルトの名無しさん
2011/04/26(火) 19:25:01.41D&E位読めカス
0479デフォルトの名無しさん
2011/04/26(火) 20:58:27.310480デフォルトの名無しさん
2011/04/26(火) 21:04:03.67逆に他の構文でクラスを模倣しようとしてもクラスに敵わない。
それはその通り。
問題は、クラスの機能は模倣する価値があるのかってこと。
例えばクロージャと高階関数があるのに単一メソッドディスパッチなんて必要か?とか。
0481デフォルトの名無しさん
2011/04/26(火) 21:18:20.64つまり、そう言いたい訳だな?
0482デフォルトの名無しさん
2011/04/26(火) 21:43:59.28と、クラスの意味を全く知らないC信者が吠えております
0483デフォルトの名無しさん
2011/04/26(火) 21:54:52.14クラスの意味は知ってるよ?>>461でしょ?
囚人の境遇に慣れすぎると、鎖に繋がれていない自由人を嘲笑さえするらしいね?
0484デフォルトの名無しさん
2011/04/26(火) 21:57:15.060485デフォルトの名無しさん
2011/04/26(火) 22:18:56.02仲間に入りたいならいつでもこっちに来いよ
0486デフォルトの名無しさん
2011/04/26(火) 22:21:08.270487デフォルトの名無しさん
2011/04/26(火) 22:33:56.87馬鹿だなあ・・・・
0488デフォルトの名無しさん
2011/04/26(火) 22:34:51.07それとも禁断のif文の羅列にする?
0489デフォルトの名無しさん
2011/04/26(火) 22:37:47.400490デフォルトの名無しさん
2011/04/26(火) 22:42:34.230491デフォルトの名無しさん
2011/04/26(火) 23:01:21.29インターフェイスだけあれば良い
0492デフォルトの名無しさん
2011/04/26(火) 23:24:20.440493デフォルトの名無しさん
2011/04/26(火) 23:27:32.390494デフォルトの名無しさん
2011/04/26(火) 23:29:57.57かの君を差し置いて、自分が C++ を知ってる等と思ってる奴は不届き千万
0495デフォルトの名無しさん
2011/04/26(火) 23:30:28.230496デフォルトの名無しさん
2011/04/26(火) 23:35:26.750497デフォルトの名無しさん
2011/04/26(火) 23:37:55.11顔を真っ赤にしてファビョってる様子が目に見えるようですよ
0498デフォルトの名無しさん
2011/04/26(火) 23:40:21.470499デフォルトの名無しさん
2011/04/26(火) 23:51:34.03しかもSTL含むC++ライブラリ一切読まないとか恥ずかしい主張してたろ。
それで自分はC++知ってますとか、恥ずかしくないの?
0500デフォルトの名無しさん
2011/04/26(火) 23:55:34.460501デフォルトの名無しさん
2011/04/27(水) 00:00:02.69わざわざそういう言葉を選ぶ理由が分からん・・・
0502デフォルトの名無しさん
2011/04/27(水) 00:21:18.180503デフォルトの名無しさん
2011/04/27(水) 00:24:57.960504デフォルトの名無しさん
2011/04/27(水) 00:29:51.610505デフォルトの名無しさん
2011/04/27(水) 00:37:23.020506デフォルトの名無しさん
2011/04/27(水) 01:10:27.26大規模開発にはC++が必要だ!みたいな決め付けばかりで
0507デフォルトの名無しさん
2011/04/27(水) 01:12:09.730508デフォルトの名無しさん
2011/04/27(水) 01:46:27.49http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms 程度が理解できれば十分使える。
大規模開発には>>506は不要!
0509デフォルトの名無しさん
2011/04/27(水) 02:03:41.64お前本職じゃないだろ
0510デフォルトの名無しさん
2011/04/27(水) 02:16:04.310511デフォルトの名無しさん
2011/04/27(水) 07:13:16.10C++ Coding Standards―101のルールとかには、
組込み型でも期待するサイズを明記することって書いてあった。
これって、Cで本体とプラグインを同じシステム上でコンパイルしても、コンパイラやオプションが
違うだけで、例えばlongのサイズが変わるってこと?
0512デフォルトの名無しさん
2011/04/27(水) 07:15:20.11教えなくてはいけないの? たとえ、本体が商用アプリケーションでも。
0513デフォルトの名無しさん
2011/04/27(水) 09:03:02.37long やポインタのサイズが変わるけど、そういうことがいいたいの?
そりゃ当たり前でしょう
0514デフォルトの名無しさん
2011/04/27(水) 09:19:54.30作るものによってはC++の機能がないとツライってのは確かにあるでしょ。
前スレでも出てたけど。
http://warp.povusers.org/programming/cplusplus_superior_to_c.html
0515デフォルトの名無しさん
2011/04/27(水) 09:33:31.84ABIは存在するけどABIには型がない
問題はABIの有無ではなく、型がないというのを許容できるかどうか
0516511
2011/04/27(水) 09:35:27.14例えば、同じ64bit OS上でもコンパイラやコンパイルオプションで型のサイズが
変わるなら(大小関係は規格で決まっていても)、アプリケーションとプラグインで
データの受渡し時に不具合が出るのはないかと心配しています。
Cでもこういうことが起こるならCにはABIがあるって言えるのかと疑問に感じました。
0517デフォルトの名無しさん
2011/04/27(水) 09:35:49.310518デフォルトの名無しさん
2011/04/27(水) 09:38:04.180519511
2011/04/27(水) 09:41:15.54>>515
なるほど。ABIは型(およびそのサイズ)とは関係ないということですね。
そうすると、やはりプラグインシステムは本体のコンパイル環境(コンパイラやそのバージョン、コンパイルオプション)と
常に同じにしなくてはならないということですね。
0520デフォルトの名無しさん
2011/04/27(水) 10:25:29.32どんな環境を想定してるか分からないから答えようが無いよ
環境を完全に限定しないなら>>515
WindowsやLinuxなら 32bit/64bit をそろえたらOK
0521デフォルトの名無しさん
2011/04/27(水) 12:18:10.58「C++が必要なんだよ、わかるだろ?」的な仄めかしはもう良いよ
0522デフォルトの名無しさん
2011/04/27(水) 12:30:22.45仄めかしじゃなくてそのとおりのことを言っているんだけど、わかんないの?
>>514のリンク先の例でCとC++が選択肢にあるときに、Cを選ぶ合理的な理由を挙げられるのか?
0523デフォルトの名無しさん
2011/04/27(水) 12:43:07.79平明で読みやすいが記述が冗長なCと、簡潔に記述できるが可読性に難があるC++
プログラムは書くより読む方が難しく、また読む時間の方が長いという性質がある以上
Cを選ぶことだってある
0524デフォルトの名無しさん
2011/04/27(水) 12:45:52.31> 753:デフォルトの名無しさん [ sage ] 2011/03/22(火) 08:18:09.61
> >>752
> エラーの処理については、C++例外を使った方が可読性が低い、とこのスレで議論されてる。
>
> 初期化と解放については、そんなものが本当にプログラミングにおいて重要な問題なのか疑問だ。
> C++では例外がある上にfinallyが無いから解放はややこしい問題たりえるが、Cでは全然難しくない。
>
> 標準で便利なコンテナが提供されていないのはCの欠点だ、というのは認めざるを得ないね。
> GLibとかの実装があるし、リストくらいなら自分で簡単に実装できるから不便は感じないけど、標準であるのは便利だ。
> 最後に、全体的な主張である(と思われる)Cで書くと冗長であるという点については、
> その代わりがC++の漏れのある抽象化というならごめん被る。
0525デフォルトの名無しさん
2011/04/27(水) 12:54:05.48Perlならこんなに短く書けるよ!CPANもあるし!とか言われても
ふーんとしか思わずPython使い続ける感覚
0526「初心者なのにエラそうだな]」(笑)劣等種憤死wwwwwww
2011/04/27(水) 13:03:16.68http://hibari.2ch.net/test/read.cgi/win/1298974733/420
http://hibari.2ch.net/test/read.cgi/win/1298974733/420
↑負け組・初心者に固執してたホモ精神障害者ってコイツぐらいだろwwww自爆乙wwwwwwwwwwwwwww
IP変えててもバレバレのマヌケ乙wwwwおいおい中途半端に自治気取ってんぞwwww
荒らしもしてねえのにバレる馬鹿ってコイツぐらいのもんだろwwwwwwwwwwwwww
上級者自慢とかwwwww情けねぇデブだなwwwwリアルでもやってそうwwwww必死チェッカー見ながらニヤつくキモヲタwww
頭悪すぎて勝手にファビョってることにしちゃってんだろうなw思考停止の典型wwwww
だから必死こいて顔面沸騰させてレスストップwwwクッソワロタwwww
知能低いから出る発言は突っ込み所しかない朝鮮人ぶりwwwwおもしれーーーwwww
知障レスもわざわざ読んでやる俺に感謝しろよ知的障害者wwwwwwwww
残念なのは顔だけにしとけよホモwwwwwFirefoxと初心者に劣等感抱いてる基地外wwwwwwwww
「「「エラそう」」」なんて言葉をすぐに口にする時点でコンプバレバレの自己紹介だなwwwwwwwww
普通わかんねえなら黙ってるもんなんだがなw白痴のプライド()に突き動かされてんだろなwwww「「「勘違い自称上級者」」」の社交性コンプででちゃった哀れな雑魚wwwwww
0527デフォルトの名無しさん
2011/04/27(水) 18:10:34.84暴れてたのがいたのか
>>523
読みやすさに価値を見出すのはソースコード読むPGだけ
0528デフォルトの名無しさん
2011/04/27(水) 20:11:47.47C++ は Fortran の置き換えでも狙ってるの?
行列演算なんてニッチな分野で比較されてもなあ
科学技術計算を超高速化したいんじゃなきゃ Java で良い訳だし、
実際ウェブの世界ではそうなってる
0529デフォルトの名無しさん
2011/04/27(水) 20:30:02.00そりゃそうでしょ。
実際のことを考えたら、ABIだけではなく、
ランタイムライブラリもあわせる必要が
あるんだから。
0530デフォルトの名無しさん
2011/04/27(水) 20:39:44.19高速性や省リソースなどが必要な
要件はまだまだ存在する。
ただ、規模や管理の面で、Cは機能
不足だという状況もある。
Webの世界がどうあろうと、関係がない。
要するに、別世界だから。
0531デフォルトの名無しさん
2011/04/27(水) 20:47:20.29そういうのは科学技術計算と金融計算くらいじゃないの
もちろんそういう案件がゼロでは無いと思うけど、わざわざ取り上げる程の物かねえ
0532デフォルトの名無しさん
2011/04/27(水) 21:04:03.800533デフォルトの名無しさん
2011/04/27(水) 21:26:15.960534デフォルトの名無しさん
2011/04/27(水) 22:23:19.22そんなこと言ってたら、
Cの出番って、コンパイラが整備されてないマイコンくらいになっちゃうし。
0535デフォルトの名無しさん
2011/04/27(水) 22:24:26.270536デフォルトの名無しさん
2011/04/27(水) 22:30:23.150537デフォルトの名無しさん
2011/04/27(水) 23:26:13.46科学技術計算?Fortranじゃないならrestrictで最適化が効くC99一択だけど。
もちろん最適化効かさない部分をC++で書く人もいるけど、そこはC++である必要は無くて、
実際にPython(numpy)とかRからC関数呼ぶ形式で使ってる人が多い。
0538デフォルトの名無しさん
2011/04/27(水) 23:31:31.50しかし最大の問題はFortranと行と列が逆な事だろ
どうやってMATLAB呼ぶの?
0539デフォルトの名無しさん
2011/04/27(水) 23:38:47.94CLAPACKはf2cでFortranをCへ変換してる所為か、CでFortran形式の行列を作って
渡した方が遅かった。
MATLABからはC/Fortranを呼べるけど、何か問題が?
0540デフォルトの名無しさん
2011/04/27(水) 23:40:05.290541デフォルトの名無しさん
2011/04/27(水) 23:48:18.64BoostのuBLASも出来映えはいまいちだし
0542デフォルトの名無しさん
2011/04/27(水) 23:54:15.110543デフォルトの名無しさん
2011/04/28(木) 01:16:33.25Cが「平明で読みやすい」っていうけどさ、Cの「冗長さ」の中には
関数の呼び出し深度に比例して増えるエラーチェックの if や
関数脱出パスの数に比例して増えるリソース解放処理(への正しい分岐)
なんかが含まれるわけよ。
明示的に記述されたそういったコードが間違っている可能性もあるわけで、
そんなコードをたくさん読まされることを考えると、一概にCなら可読性が高いとか
一概にC++の機能(例外やデストラクタ)が可読性を損ねているとか言い切れる
ものじゃないと思うんだ。
どう思う?
例えばデストラクタなんか使わずに明示的に破棄処理を書くべきだというのなら、
同じ理由でCの自動変数についてもスタックの上げ下げを明示的に書くべき
なんてことも言い出しそうな気がするんだけど、そんなソースでスタックの上げ下げが
正しく行われているかおびえながらソース読む、なんて考えられないでしょ。
0544デフォルトの名無しさん
2011/04/28(木) 01:22:50.08>関数の呼び出し深度に比例して増えるエラーチェックの if や
エラーチェックは関数の呼び出しと同じレベルでネストするから、
調査する範囲は局地的で、問題になり様が無いんだけど。
具体的にどういうコードを想定してるの?
0545デフォルトの名無しさん
2011/04/28(木) 01:23:49.750546デフォルトの名無しさん
2011/04/28(木) 01:29:42.85int source_of_error(...);
int foo(...)
{
// ...
int e = source_of_error()
if (e != 0) return e;
// ...
}
int bar(...)
{
// ...
if (foo() == 0) return -1;
// ...
}
int baz(...)
{
// ...
if (bar()) return BAZ_ERROR_A;
// ...
}
int error_handler()
{
// ...
if (baz() != BAZ_OK)
// ...
// ...
}
0547デフォルトの名無しさん
2011/04/28(木) 01:39:35.19それ、各ネストレベルできちんと意味のあるエラーを返していれば問題無いよね?
関数の返り値なんてデバッガでも簡単に追えるし。
0548デフォルトの名無しさん
2011/04/28(木) 01:51:12.32こういう場合(もちろんもっとネストが深い場合含めて)のエラー通知に例外を使えば
if 文(の間違いの可能性)が減るし、デストラクタがあれば途中 return での
リソース漏れ(の心配)もなくなって、それらによって可読性が上がるとも言えるでしょ、
って話。
コードに問題が有るとか無いとかいう話じゃないし、デバッガで追うとかいう話でもない。
0549デフォルトの名無しさん
2011/04/28(木) 01:52:34.43ふつうに読みやすいと思った
0550デフォルトの名無しさん
2011/04/28(木) 01:54:43.790551デフォルトの名無しさん
2011/04/28(木) 02:01:05.910552デフォルトの名無しさん
2011/04/28(木) 02:17:23.99異常終了するかのどちらかな気が・・・
0553デフォルトの名無しさん
2011/04/28(木) 02:20:32.89同じ問題を示すエラーの通知方法が例外かそうじゃないかで処理方法が変わるとでもいうのかい?
0554デフォルトの名無しさん
2011/04/28(木) 02:25:35.08それが変わらないから、『ネストが深くなった時』という問題設定自体がおかしいと思うんだよね。
そもそも何でそんなにネストするんだって話。
0555デフォルトの名無しさん
2011/04/28(木) 02:30:34.490556デフォルトの名無しさん
2011/04/28(木) 02:35:16.100557デフォルトの名無しさん
2011/04/28(木) 02:36:06.600558デフォルトの名無しさん
2011/04/28(木) 02:36:08.87C++版がcatchしないなら、C版はexitを使っていい
0559デフォルトの名無しさん
2011/04/28(木) 03:04:39.100560デフォルトの名無しさん
2011/04/28(木) 03:18:59.11あらゆる処理を中断して error_handler() で対処するって仕様が見て取れるけど、
そういう「コンテクストに一切依存しない source_of_error() のエラー処理」は
source_of_error() 関数内でやるのが一番読みやすいよ
もしプログラム毎にエラー処理を差し替えたいなら extern な関数でも内部で呼べば良い
0561デフォルトの名無しさん
2011/04/28(木) 03:25:09.83仮に例外で処理するなら error_handler() で catch するだろう
そうすると途中の関数は例外処理がいらないから(デストラクタで処理できるリソースだけ使ってる場合は)簡単になるけど
error_handler() を読むのが凄く難しくなる
深いネストを潜って source_of_error() まで到達する必要があるからね
0562デフォルトの名無しさん
2011/04/28(木) 04:02:44.08関数/メソッドのスコープを超える大域ジャンプなことには変わりないぜ
0563デフォルトの名無しさん
2011/04/28(木) 04:19:39.52> error_handler() を読むのが凄く難しくなる
> 深いネストを潜って source_of_error() まで到達する必要があるからね
何のためにそんなことする必要があるの?
0564デフォルトの名無しさん
2011/04/28(木) 04:34:28.47ソースコードのどこで(つまりどんな状況で)エラーが起こったのか知らずにエラー処理できるの?
別の言い方をすれば、いつ・どこでエラーが起こったかによらずエラー処理できる場合に
>>560のようにしてはダメな理由は?
0565デフォルトの名無しさん
2011/04/28(木) 04:46:08.38例外使ったこと無いの?
もともと >>560 のような動作も含めて柔軟にエラー処理ができるように
考えられた言語機能が例外なんだよ。
必要な情報は例外オブジェクトに詰めて投げればいいんだ。
それに、その理由で source_of_error() まで見に行くって言うことだと、
戻り値でも同じことする必要があるんじゃないの?
0566デフォルトの名無しさん
2011/04/28(木) 04:50:30.05source_of_error() の中で必要な情報が詰められるなら、
>>560のように処理してダメな理由は?
0567デフォルトの名無しさん
2011/04/28(木) 05:05:37.08マ板で散々議論した結果をみれば?
0568デフォルトの名無しさん
2011/04/28(木) 05:18:02.81見てきたよ。むこうでも揉めて結論出てなかった
少なくとも>>566の疑問には答えてなかったよ
0569デフォルトの名無しさん
2011/04/28(木) 05:53:47.48> それに、その理由で source_of_error() まで見に行くって言うことだと、
> 戻り値でも同じことする必要があるんじゃないの?
戻り値は return 探してさかのぼれば良いから読みやすいよ
0570デフォルトの名無しさん
2011/04/28(木) 09:20:40.770571デフォルトの名無しさん
2011/04/28(木) 09:50:50.18へ? >>560 に書いてあるのは「コンテクストに一切依存しない〜エラー処理」でしょ。
場所によって処理が違えば当然無理なんじゃないの?
それに exit() や extern 関数はライブラリに切り出しできなくなるからね。
0572デフォルトの名無しさん
2011/04/28(木) 10:03:55.69ごく単純な >>546 で考えればそうかもしれないけど、 baz() 以下で
source_of_error() や他の失敗する可能性のある処理が1回ずつしか呼ばれて
いないとは限らない。
他にも baz() 以下のソースがあるとも限らないだろうし、 baz() 以下の
コードが未来永劫そのまま保たれるとも限らない。
例えば fopen() の失敗を処理している関数を読むときに「 fopen() のソースが
無い。困った。」なんてことにはならないでしょ。
0573デフォルトの名無しさん
2011/04/28(木) 10:16:41.74ソースが無い場合は考えてもしょうがないと思う
例外だろうと戻り値だろうと辿って辿れないことはないと思う
ただ、戻り値の場合エラー処理してる関数だけ辿ればいいけど
例外の場合全ての関数を辿る必要あるよね(全部はちょっと言い過ぎだけど)
0574デフォルトの名無しさん
2011/04/28(木) 10:37:34.77意味がわからないよ。
ソースが無い場合には不可能な行為を >>561 では「必要がある」と言っている。
これは明らかにおかしい。
>>564 で「ソースコードのどこで(つまりどんな状況で)エラーが起こったのか」が
エラー処理をする際に必要になると言っているようだが、 return を辿るなどしないと
得られない情報をどうやってエラー処理に使うというのか、わからない。
この状況でエラー発生位置まで辿ることを前提に話されても困る。そんな行為が
無意味に終わる理由はソースが無い場合のほかにも >>572 で挙げられている。
0575デフォルトの名無しさん
2011/04/28(木) 10:44:57.60意味がわからないのはこっちだよ
ソースが無い場合なんて言い出したのは>>572が初でしょうに
それ以外のひとはソースがある前提で話てたと思う
だってソースの可読性の話をしてるのに、ソースが無い場合とか意味不明でしょ?
0576デフォルトの名無しさん
2011/04/28(木) 10:57:35.28同じ処理でいいと思ってるのさ。
普段から「std::bad_allocだ。exitしよ」みたいなウンコプログラムを
書いてるんだろうね。
今だって、なるべくコードを読まない理屈を並べようとしてるし
ほんとコード読めないんだね。
0577デフォルトの名無しさん
2011/04/28(木) 10:59:09.750578デフォルトの名無しさん
2011/04/28(木) 11:00:46.73ソースが無い場合の可読性なんてのを問題にしているわけではないよ。
例外を使った場合に可読性が下がる理由として、エラー処理しているコードを読むときには
エラー発生箇所を特定する必要があるからだ、と >>561,564 が言った。
そんな必要は無いという根拠のひとつとして挙げられているのが、ソースが無い場合。
根拠はそれ以外にもある >>572
今はこの「エラー発生箇所を特定する必要がある」の真偽を話している。その結果によって
「例外を使った場合に可読性が下がる」という主張の妥当性が変わる。
0579デフォルトの名無しさん
2011/04/28(木) 11:02:22.95例外を正しく使えないプログラマ多いね。 その6
http://hibari.2ch.net/test/read.cgi/prog/1298059471/
0580デフォルトの名無しさん
2011/04/28(木) 11:15:43.59つまり一概に言えない、ということかね。
0581デフォルトの名無しさん
2011/04/28(木) 11:22:24.06error_handler() が全ての必要なエラーを補足できてるか知るためには
関数を遡って調べるしか無いでしょう?
もし漏れてたらバグかもしれないし、または catch(...)で捕まえても
何のエラーか分からなきゃ碌な処理はできない
戻り値ならエラーのハンドリングはそれぞれの関数でやってるから
責任が局所化されてるわけ
まあスレ違いと言われちゃったので最後にしておきます
0582デフォルトの名無しさん
2011/04/28(木) 11:45:37.74どの関数からも一律にそのエラーコード表に則ったエラーコードなる数値を返すことになる。
その場合、エラーコード表の更新はしばしば現場の開発よりも遅れがちだから、
結局のところ自分の知らないエラーコードが下位関数から上がってきたらそのまま
上に上げるしかなくなる。
このことはつまり、C++の例外と同様の仕掛けを人力で再現していることに他ならないよね。
0583デフォルトの名無しさん
2011/04/28(木) 11:52:30.97結局荒しの言い分って、クラスにしろ例外にしろ、その他もろもろ
手作業で似たようなことできるからそれで充分ってことなんだよね。
電卓なんか使わなくても算盤で良いよってのと同じ思考。
0584デフォルトの名無しさん
2011/04/28(木) 11:55:19.98エラー処理関数を格納するポインタテーブルを作って
エラーが発生したらその種類に応じて特定の関数ポインタを呼ぶという方法があるよ
関数ポインタテーブルなので、後から関数を入れ替え可能
その場で処理するから上にあげる必要もなし
0585デフォルトの名無しさん
2011/04/28(木) 12:06:53.69という想像力の欠如がある。
ライブラリにバグがないことを信じるのも
エラー処理にバグがないことを信じるのも
同じ精神から来ている。
C vs. C++の全てはこの精神性の差に由来する。
0586デフォルトの名無しさん
2011/04/28(木) 12:16:01.65古い体質の環境に晒され続けているCプログラマと、新しい開発環境を享受できるC++プログラマの差かもしれない。
0587デフォルトの名無しさん
2011/04/28(木) 12:20:21.010588デフォルトの名無しさん
2011/04/28(木) 12:45:35.25コードを書けばバグが発生する可能性があるから、デストラクタや例外を使って
その可能性を減らすってのは間違いじゃないよね。
0589デフォルトの名無しさん
2011/04/28(木) 13:02:33.28C++には書き直しを許さない空気があるね
Cが再発明に寛容すぎるから、その反動だと思う
0590デフォルトの名無しさん
2011/04/28(木) 13:21:46.13Linuxカーネル方式か
0591デフォルトの名無しさん
2011/04/28(木) 14:01:42.37C PG : 「直します」
C++ PG : 「仕様です」
0592デフォルトの名無しさん
2011/04/28(木) 14:14:30.23C: コーディングに匹敵する時間を掛けてテスト仕様を作り、クリティカルなバグは見逃す。
C++: クラス・モジュール単位でバグが出ないように作っているからとろくなテスト仕様を作らない。
で、>591
更に、
C: 「バグの原因調査に費用が発生します」
C++: 「仕様変更なので費用が発生します」
どっち途、金にはならんのだけどねw
0593デフォルトの名無しさん
2011/04/28(木) 15:04:57.680594デフォルトの名無しさん
2011/04/28(木) 16:36:09.89絶対にコード読みたくないでござるwww
0595デフォルトの名無しさん
2011/04/28(木) 20:07:34.010596デフォルトの名無しさん
2011/04/28(木) 20:49:58.500597デフォルトの名無しさん
2011/04/29(金) 00:21:56.980598デフォルトの名無しさん
2011/04/29(金) 05:02:32.05エラー処理にバグがあったりするのが当たり前って言うんなら
そんなもん使いたくないな。
0599デフォルトの名無しさん
2011/04/29(金) 05:37:00.56言語仕様を把握してなかったりするC++ PGの
コードのほうがバグが少ないとか、冗談だよね?www
0600デフォルトの名無しさん
2011/04/29(金) 06:03:34.62その線で頑張っても無意味だと思うが・・・
自分でも分かってるだろ
0601デフォルトの名無しさん
2011/04/29(金) 06:13:56.820602デフォルトの名無しさん
2011/04/29(金) 06:20:08.160603デフォルトの名無しさん
2011/04/29(金) 06:31:39.00つまり本当に言いたいことは >>596
0604デフォルトの名無しさん
2011/04/29(金) 06:38:02.23>>585,586,589,591,592,599 みたいな、単なるプログラマの能力を決め付けての
書き込みは意味が無いだろ。
スレのルール的には無視しろってことになってるが。 >>1
> 6.その他、明らかな煽りや無意味な書き込みも無視でお願いします。
0605デフォルトの名無しさん
2011/04/29(金) 06:41:04.18iOS が市場シェアを取っている間は、ObjC vs. C++ でも C++ に勝ち目があるとも思えない。
結論 : C++ は vs. しちゃダメ。他の言語に挑むのは止めようぜ。
0606デフォルトの名無しさん
2011/04/29(金) 06:41:13.060607デフォルトの名無しさん
2011/04/29(金) 06:44:34.79>言語の差異
C++ は仕様が大きくて複雑すぎる
>から生じる運用の差異
言語仕様の把握や他人が書いたライブラリの読み込みが軽視される
って事だな、きっと
0608デフォルトの名無しさん
2011/04/29(金) 07:18:37.66うん。こんな感じにしてくれるといいね。
しかし結論が飛躍しすぎているようで、よくわからん。
「言語仕様の把握」に大きさが関係するとなると暗記するってことなのかと思うんだけど、
それを「軽視」したり重視したりするというのは具体的に何をする(あるいはしない)ことなの?
ライブラリの読み込みは、ちょっと前に出てたライブラリのソースを読むかどうかって話かな?
これも、読むかどうかはライブラリの信頼性によるところが大きいと思うんで、言語仕様の
大きさとどう繋がるという話なのか、よくわからない。
0609デフォルトの名無しさん
2011/04/29(金) 07:26:41.05雑談とか馴れ合いがしたいなら他のスレがあるだろ
0610デフォルトの名無しさん
2011/04/29(金) 07:53:20.47趣味で使うなら言語仕様にいくら拘ってもいいけど、
仕事なら安定してる方を選ぶよ。
0611デフォルトの名無しさん
2011/04/29(金) 07:56:07.10提供されないんじゃ仕方ないけどね。
0612デフォルトの名無しさん
2011/04/29(金) 08:46:42.46じゃあどうするんだ
まさか「ソースの無い宣言のみ」で信用するやつはいないよな
0613デフォルトの名無しさん
2011/04/29(金) 09:08:01.52>C++ は仕様が大きくて複雑すぎる
>言語仕様の把握や他人が書いたライブラリの読み込みが軽視される
って明らかに自分がC++を理解する能力や素養の無さから目を背けたがっているよな
本当は駄目な自分が悪いのにそれをC++に責任転嫁しようとしている。
>>608
>「言語仕様の把握」に大きさが関係するとなると暗記するってことなのかと思うんだけど、
>それを「軽視」したり重視したりするというのは具体的に何をする(あるいはしない)ことなの?
>ライブラリの読み込みは、ちょっと前に出てたライブラリのソースを読むかどうかって話かな?
>これも、読むかどうかはライブラリの信頼性によるところが大きいと思うんで、言語仕様の
>大きさとどう繋がるという話なのか、よくわからない。
自分の能力の無さを「合理化」してるだけだからそのままでは理解出来ない。
屁理屈とはそういう物。言葉通り捉えずに、そいつの本当の問題を見抜く力を養うのも
デバッグ能力を高めるのに役立つよ。
0614デフォルトの名無しさん
2011/04/29(金) 09:27:13.52一般的に C++ が理解し易い言語なら、これだけ駆逐される事も無かっただろう。
0615デフォルトの名無しさん
2011/04/29(金) 09:35:04.74C PG : C++の仕様は理解困難だよね。ほら、この構文とか難しいよ
C++ PG: そんな構文は使わないから理解できてなくていい
C PG : でも理解できてなきゃライブラリ読めないよ?
C++ PG: じゃあライブラリなんて読まない
たったこれだけ
自分一人で全てのコードを書くわけじゃない以上
言語仕様の一部だけ理解できてれば良いなんて戯れ言だと指摘されて、
C++ PGはムキになってコード読まないとキレてるわけだ
0616デフォルトの名無しさん
2011/04/29(金) 09:51:58.64いや、どう考えても「自分の能力の無さを言語のせいにする方」が楽だろう
何もしなくて文句だけ言ってりゃいいんだから
0617デフォルトの名無しさん
2011/04/29(金) 10:10:24.72比較にならない物を比較しても意味ないだろ。
「方」という言葉を使う時は、自分が何と何を比較しているか気を付けた「方」が良い
0618デフォルトの名無しさん
2011/04/29(金) 10:23:02.350619デフォルトの名無しさん
2011/04/29(金) 10:23:54.04その話の持って行き方は意味がない
また屁理屈かと思われるだけだぞ
主要なアプリがまだまだC++ + Qtで書かれている現実を見ろよ
0620デフォルトの名無しさん
2011/04/29(金) 10:27:06.70Qt はどうなるんだろうね。Nokia は MS とガッチリ手を組んじゃったみたいだし。
0621デフォルトの名無しさん
2011/04/29(金) 10:46:17.98Firefox も LibreOffice も独自 GUI だし、Chrome もかな。
Inkscape も Gtk+ だし。
中には C++ や Qt を使っているアプリもあるだろうが、だから何?
0622デフォルトの名無しさん
2011/04/29(金) 10:49:55.810623デフォルトの名無しさん
2011/04/29(金) 10:50:36.540624デフォルトの名無しさん
2011/04/29(金) 10:56:37.39>>620
非現実ではなくて要するに能力の無さから逃げてないか?って話
これは比較ではなくて自覚
0625デフォルトの名無しさん
2011/04/29(金) 10:59:15.92お前さんが逃げていようとどうでもいいんだわ。
他の人も逃げている様に見えるなら、自意識過剰過ぎなんじゃないの。
0626デフォルトの名無しさん
2011/04/29(金) 11:03:33.180627デフォルトの名無しさん
2011/04/29(金) 11:05:14.26( ゚Д゚)ハァ?いつ俺が逃げていると言った?
>>614が逃げているように見えるので指摘したら逆ギレですか?( ´ー`)y-~~
人格障害じゃねーのお前
0628デフォルトの名無しさん
2011/04/29(金) 11:07:41.66他に逃げてる人が見当たらなかったから、お前さんの事かと思ったわw
人格攻撃ありがとう。
0629デフォルトの名無しさん
2011/04/29(金) 11:08:29.84>Google Earth は Qt と違うん?
Google Earth は主要なアプリなん?
ウェブブラウザやオフィススイートと肩を並べるくらいなん?
よしんば主要なアプリだとして、Qt を使ったアプリが一個あったら何なん?
0630デフォルトの名無しさん
2011/04/29(金) 11:12:32.61議論をわざと成り立たなくするために文句を言う事に終始し始めたか
無視しよ
0631デフォルトの名無しさん
2011/04/29(金) 11:14:22.05C++ PG : 「C++ が複雑だと言うのは理解する能力が無い証拠!」
C PG : 「いつまで鎖自慢してるんだよ・・・」
0632デフォルトの名無しさん
2011/04/29(金) 11:23:39.48C++は、書き間違いを防ぐために何も書かない言語なんだよ。
コンストラクタもデストラクタも例外も「何も書かない」ための仕組み。
何も書かないから、例外がどこから飛んできたのかわからない。
0633デフォルトの名無しさん
2011/04/29(金) 11:42:51.58例外なんてウザイ機能が無いから安心。
それが俺のジャスティス!
ってことだろ?
0634デフォルトの名無しさん
2011/04/29(金) 12:09:12.240635デフォルトの名無しさん
2011/04/29(金) 12:22:36.40とか言ってる奴がいたら鎖自慢かもしれんが、そんな奴はいない
俺も Java を書く時は例外使ってるし
0636デフォルトの名無しさん
2011/04/29(金) 12:59:28.64例外が無いほうが秩序が保たれるんだろ?
好き放題にできない方が、鎖で縛られてると思うんだけど。
0637デフォルトの名無しさん
2011/04/29(金) 13:01:46.09文字列操作程度で自前でメモリ管理しないといけないのに
鎖ではないと。
0638デフォルトの名無しさん
2011/04/29(金) 13:11:55.75俺はお前等のお母さんじゃないんだから、分かり易く頼むわ。
お前らの脳内の世界までは見透かせないからな。
↓じゃ、ひとつ目の質問ドゾ。
0639デフォルトの名無しさん
2011/04/29(金) 13:28:52.57例外が無いほうが秩序が保たれるんだろ?
好き放題にできない方が、鎖で縛られてると思うんだけど。
0640デフォルトの名無しさん
2011/04/29(金) 13:29:07.01文字列操作程度で自前でメモリ管理しないといけないのに
鎖ではないと。
0641デフォルトの名無しさん
2011/04/29(金) 13:29:43.340642デフォルトの名無しさん
2011/04/29(金) 13:31:40.78質問をぶつけてくるのかな?
それとも会話の流れを読む事をお婆ちゃんに禁止されてるとか?
0643デフォルトの名無しさん
2011/04/29(金) 13:37:03.17いや、例外を使うor使わないという選択の自由があるのに、
使わない一択なCの方が自由だという表現は変じゃないかなと。
0644デフォルトの名無しさん
2011/04/29(金) 13:43:24.250645デフォルトの名無しさん
2011/04/29(金) 13:44:29.79それは俺が言った訳じゃないから、文脈がよく分からないんだが、
何で俺に聞いてるの?
一般論として言うなら、例外を使うか使わないかは、言語の標準
ライブラリも含めて統一されていた方がソースコードの見通しが
良くなる。
0646デフォルトの名無しさん
2011/04/29(金) 14:06:49.65マーケティングではバカ向けに選択肢を絞ってやることが大切なんだよね。
0647デフォルトの名無しさん
2011/04/29(金) 14:47:22.08選択肢の絞られたCはバカ向けであると?
0648デフォルトの名無しさん
2011/04/29(金) 15:06:17.210649デフォルトの名無しさん
2011/04/29(金) 15:11:23.49CとC++でできることに違いがあるわけじゃない。
表記が気に入らないなら#defineでもなんでもすればいい。
0650デフォルトの名無しさん
2011/04/29(金) 15:35:49.56宗教的な理由があるわけでもないのに、そこまでしてCを使う気になれないw
0651デフォルトの名無しさん
2011/04/29(金) 15:54:13.860652デフォルトの名無しさん
2011/04/29(金) 15:59:48.600653デフォルトの名無しさん
2011/04/29(金) 17:21:09.22コンパイルが遅くなったり文法要素が増えるのも嫌だ。
クラスは欲しいね。とすると、やっぱり ObjC かな。
0654デフォルトの名無しさん
2011/04/30(土) 17:39:21.86メーカ製PCに山ほど付いてくる下らないプリインストールアプリを指して
「色々機能があるよ!使わない自由もあるし!」って言われてるみたいで
何だか微笑ましくなる。君が有り難がってる機能はゴミだよwww
0655デフォルトの名無しさん
2011/04/30(土) 18:07:59.02知らない場所で無駄な常駐が動きまくってて挙句の果てには
「遅くなってきたらもっと速いPCを買えばいんだw」となる。
0656デフォルトの名無しさん
2011/04/30(土) 18:10:24.11「無駄な常駐」が具体的に C++ の何にあたるのか言ってもらわないと例え話として成り立たないよ。
0657デフォルトの名無しさん
2011/04/30(土) 18:17:13.51ユーザが使わないつもりでも構文自体は常に有効なところも常駐って感じ
0658デフォルトの名無しさん
2011/04/30(土) 18:18:29.310659デフォルトの名無しさん
2011/04/30(土) 18:42:53.85こんなソフトは遅すぎてだめだとアプリ開発から手を付けてどうだ俺のアプリのが5%速いぜまいったかと鼻息荒くするのがCプログラマ
0660デフォルトの名無しさん
2011/04/30(土) 18:46:27.74俺には難し過ぎて理解出来なかった
0661デフォルトの名無しさん
2011/04/30(土) 18:48:06.480662デフォルトの名無しさん
2011/04/30(土) 18:51:19.440663デフォルトの名無しさん
2011/04/30(土) 18:54:35.54再利用性の高いプログラムはC、ってことだな
0664デフォルトの名無しさん
2011/04/30(土) 18:55:39.970665デフォルトの名無しさん
2011/04/30(土) 19:38:43.730666デフォルトの名無しさん
2011/04/30(土) 19:40:58.29万年筆とワープロを比べるよう物。
0667デフォルトの名無しさん
2011/04/30(土) 19:44:36.88日本ぐらいだとおもうが・・・
海外のコミュニティでCを使ってるなんて言ったら
時代遅れだと思われて終わりだろ。
てか、CベースのC++なんだからおんなじようなものだ。
あとは開発環境とかの問題だろ?
0668デフォルトの名無しさん
2011/04/30(土) 19:45:16.44確かにそうかも
0669デフォルトの名無しさん
2011/04/30(土) 19:47:08.48そうだったら良かったね・・・
C がベースなんだから C++ でも同じな筈っ
きっと同じっ!
実際は・・・
0670デフォルトの名無しさん
2011/04/30(土) 19:49:46.34なるほど言い得ている
0671デフォルトの名無しさん
2011/04/30(土) 20:39:14.90とある処理が5%速くなったけれど、それはI/O待ち時間の数千分の一程度だったというのが普通。
0672デフォルトの名無しさん
2011/04/30(土) 20:52:18.600673デフォルトの名無しさん
2011/04/30(土) 20:54:12.100674デフォルトの名無しさん
2011/04/30(土) 20:55:09.55「不必要なものを入れない」ってのはC++に無い重要な考え
0675デフォルトの名無しさん
2011/04/30(土) 20:59:04.57初心者向けの学習クラスでも使えるシンプルさを永遠に失ったよな。
C の学習者数は今後も変わらないけど、今から C++ を学ぶ理由は無いね。
0676デフォルトの名無しさん
2011/04/30(土) 21:09:46.48他もC++を必要としないはずだ
0677デフォルトの名無しさん
2011/04/30(土) 21:11:48.40他人もC++を必要とするはずだ
0678デフォルトの名無しさん
2011/04/30(土) 21:17:28.40Cは人気言語なので、「こんな機能/構文を足してくれ」という要求が数多く寄せられる
でもC++が存在したから「そんなのはC++でやれ」と簡単に棄却できた
おかげでC++自体は巨大でグロテスクになったが、Cはシンプルでいられた
もしC++が存在しなかったら、Cはいまほどシンプルでは無かったかもしれない
0679デフォルトの名無しさん
2011/04/30(土) 21:19:33.84それは誰も主張して無いと思う。
自分はC++を必要だから使うよ。何か文句ある?
せいぜいこの程度。
0680デフォルトの名無しさん
2011/04/30(土) 21:20:03.52C++はアプリケーション作りに最適な言語だと思ってる。
0681デフォルトの名無しさん
2011/04/30(土) 21:23:01.11それはあるかも。捨て石になってくれたんだね。。。
0682デフォルトの名無しさん
2011/04/30(土) 21:26:30.44DB まで Java だったりするし
C で基本を学んだら Java へ進むのが順当
いきなり Java でも良いけど
とすると、C++ の守備範囲がよく分からない
0683デフォルトの名無しさん
2011/04/30(土) 21:28:41.770684デフォルトの名無しさん
2011/04/30(土) 21:29:05.750685デフォルトの名無しさん
2011/04/30(土) 21:30:43.040686デフォルトの名無しさん
2011/04/30(土) 21:30:45.08その結果がC1xとか?
0687デフォルトの名無しさん
2011/04/30(土) 21:32:12.95C++ PG が大好きな gets() は無くなるけど
0688デフォルトの名無しさん
2011/04/30(土) 21:35:14.75動くのと快適とは大きな隔たりが
0689デフォルトの名無しさん
2011/04/30(土) 21:40:05.20簡単な話
0690デフォルトの名無しさん
2011/04/30(土) 21:46:18.19まともなアプリはC++で書かれてる
0691デフォルトの名無しさん
2011/04/30(土) 21:55:40.13NDK を一生懸命駆使しても結局 Java 経由のサービスを使うんだぜ。
0692デフォルトの名無しさん
2011/04/30(土) 22:02:32.44なんで自分のコードまで糞なJavaを使うことになるんだ?
0693デフォルトの名無しさん
2011/04/30(土) 22:05:53.600694デフォルトの名無しさん
2011/04/30(土) 23:33:02.86Java経由のサービスを利用するからといって
なんで自分のコードまで糞なJavaを使うことになるんだ?
0695デフォルトの名無しさん
2011/05/01(日) 12:53:11.51どうしてもオブジェクト指向(笑)で作れと強要されたらJavaを選ぶわ
もちろんそんな拘束条件がなければ相手にしないけど
0696デフォルトの名無しさん
2011/05/01(日) 13:09:12.53馬鹿正直にエミュレート実行していたらしくて本当に遅かった
これは糞と言える
でも最近JITコンパイラを積極的に取り入れるようになってServer
バージョン並みに速くなった
これでC#の追従を振り切るつもり
0697デフォルトの名無しさん
2011/05/01(日) 13:58:01.67個人的にはC→Javaが良いように思える。
ポインタやっておけばJavaで参照に戸惑うこともないだろうし、クラスもC++よりはややこしくないので嫌になることはないと思う。
GUI作りたくなったらswingやC#いけばいいし。
0698デフォルトの名無しさん
2011/05/01(日) 14:30:56.800699デフォルトの名無しさん
2011/05/01(日) 14:51:15.13潰しがきくから C++ やるよりは断然良いな
0700デフォルトの名無しさん
2011/05/01(日) 14:57:09.66原子力にたとえると高速増殖炉が使えなくなったみたいな感じ
0701デフォルトの名無しさん
2011/05/01(日) 15:13:16.27でも給料安いよ
Javaがこれだけ普及したのは人件費が極めて安いという事にも原因がある
なんせプログラマの大半がバイトのオバチャンだもんな
0702デフォルトの名無しさん
2011/05/01(日) 15:14:35.450703デフォルトの名無しさん
2011/05/01(日) 15:16:32.01JavaのJITのC並みっていうのは、GCCの-O並みの速度でしかない
GCCの-O3並みではないし、VCのPGOやICCでビルドしたものには全く歯が立たない
無論インラインアセンブラ使えばJavaをぶっちぎるのは容易
オラクルの宣伝なんて信じるなよ
0704デフォルトの名無しさん
2011/05/01(日) 15:21:58.55メモリも沢山積めるし・・・
0705デフォルトの名無しさん
2011/05/01(日) 15:57:16.910706デフォルトの名無しさん
2011/05/01(日) 16:11:11.640707デフォルトの名無しさん
2011/05/01(日) 22:00:39.29それは百も承知さ
C#なんてJITコンパイルしたアセンブリのあちこちに間接CALLを埋め込んで
パイプラインCPUの良さを殺してるし
まあ仕方ないが
CでもC++でもライブラリにDLLを使えば同じ事だ
いずれにせよJavaでC#並みの速度が出るようになったんだからそれはそれで
いいじゃないか
銀行も今全国でシステムの入れ替えをしてるだろ?
通信との連携が困難なCOBOLをやめてどんどんJavaにしている
みずほと郵貯で続けざまに事故を起こしたのが良くなかったな
航空券の予約はとうの昔にJavaに置き換わってしまったしな
0708デフォルトの名無しさん
2011/05/01(日) 23:01:55.37解けたときにアハ体験で脳が活性化する
0709デフォルトの名無しさん
2011/05/02(月) 11:09:15.760710デフォルトの名無しさん
2011/05/02(月) 12:45:14.200711デフォルトの名無しさん
2011/05/02(月) 12:48:31.740712デフォルトの名無しさん
2011/05/02(月) 14:08:10.050713デフォルトの名無しさん
2011/05/02(月) 14:15:18.26ここらへん参考になるんじゃないかな?
http://www.tiobe.com/index.php/content/paperinfo/tpci/
0714デフォルトの名無しさん
2011/05/02(月) 14:17:36.67ここらへん参考になるんじゃないかな?
https://github.com/languages
0715デフォルトの名無しさん
2011/05/02(月) 14:26:44.67ここらへん参考になるんじゃないかな?
http://sourceforge.net/search/
0716デフォルトの名無しさん
2011/05/02(月) 14:35:24.78ここらへん参考になるんじゃないかな?
http://www.ohloh.net/languages/compare?l0=c&l1=cpp
0717デフォルトの名無しさん
2011/05/02(月) 15:51:24.55というか業界第3位じゃないかい。
0718デフォルトの名無しさん
2011/05/02(月) 16:39:07.50JAVAもアプリ開発のためにやってる。
C++はCの延長だと思ってやってる。
C#はVS入れるの面倒やしやってない
0719デフォルトの名無しさん
2011/05/02(月) 18:23:21.130720デフォルトの名無しさん
2011/05/02(月) 18:47:06.590721デフォルトの名無しさん
2011/05/03(火) 12:56:38.7790年代から2000年代初頭にかけて乱造されたC++プログラムを
メンテする仕事が残ってるからね
0722デフォルトの名無しさん
2011/05/03(火) 13:05:38.40今後はJava、C#というGCを備えたメモリリークの心配のない、しかもGUI開発の楽な
言語が主流になるだろうね
開発期間というのはモロに人件費に反映してくるので馬鹿にできない
C/C++は組み込みあるいはゲーム/OSなどのスピードを必要とする分野で生き残るだろう
0723デフォルトの名無しさん
2011/05/03(火) 13:23:26.01デスクトップの分野でJavaとかC#は用済み
0724デフォルトの名無しさん
2011/05/03(火) 13:23:35.920725デフォルトの名無しさん
2011/05/03(火) 13:32:15.67Qt が LGPL になってから既に 2 年以上経つんだが・・・
その後のニュースって携帯向けの主要プラットフォーム争いから脱落した事くらいじゃない?
0726デフォルトの名無しさん
2011/05/03(火) 13:57:35.63お前・・・・それは言っちゃだめだろw
0727デフォルトの名無しさん
2011/05/03(火) 14:13:24.16主要争いってなんだろう
0728デフォルトの名無しさん
2011/05/03(火) 14:28:06.70それに対して疑問を抱くって
器用だなw
0729デフォルトの名無しさん
2011/05/03(火) 20:34:41.67主要なプラットフォームってことだろ?
ばかなの?
0730デフォルトの名無しさん
2011/05/04(水) 06:01:08.47そして10年後もなにも変わらずこんなスレが立ってんだろうな。
0731デフォルトの名無しさん
2011/05/04(水) 08:36:46.080732デフォルトの名無しさん
2011/05/04(水) 09:54:16.050733デフォルトの名無しさん
2011/05/04(水) 11:23:17.26それはない
0734デフォルトの名無しさん
2011/05/04(水) 12:54:24.42ない
0735デフォルトの名無しさん
2011/05/04(水) 13:22:51.490736デフォルトの名無しさん
2011/05/04(水) 14:03:27.900737デフォルトの名無しさん
2011/05/04(水) 17:36:03.600738デフォルトの名無しさん
2011/05/04(水) 23:15:35.36yaneuraoはどうなった
0739デフォルトの名無しさん
2011/05/05(木) 09:20:39.04「一緒にするな!Cが使えてもC++が使えるとは限らないだろ!」って
鼻息荒く怒っていたものだが、時代は変わったものだね……
0740デフォルトの名無しさん
2011/05/05(木) 12:08:21.92Perlの人は昔から、言語全体を知らなくても言語は使えるって言ってた
0741デフォルトの名無しさん
2011/05/05(木) 18:32:40.32安全なプログラムは書けないけどね
0742デフォルトの名無しさん
2011/05/05(木) 18:42:29.79例外安全は超難しい
デザパタも難しい
0743デフォルトの名無しさん
2011/05/05(木) 20:23:18.030744デフォルトの名無しさん
2011/05/05(木) 20:43:48.150745デフォルトの名無しさん
2011/05/05(木) 20:50:46.09なぜかというとそのままC++に入れるから
一度C99で書いてしまうと変な癖がついて抜けなくなりgcc以外で
コンパイルエラーを何回も目にするはめに・・・
0746デフォルトの名無しさん
2011/05/05(木) 20:53:41.940747デフォルトの名無しさん
2011/05/05(木) 20:55:54.50gcc だけじゃなくて icc や clang でも使えるし
0748デフォルトの名無しさん
2011/05/05(木) 20:57:31.73CだってPerlだって同じようなものだが。
人が母国語を使うにあたって、文法や
語彙を完全に知る必要はないし、
そもそも無理だ。
言い間違いもするし勘違いもあるし、
誤用だってするだろう。
コンピュータ言語だって、そういう感じで
いいじゃないか。
0749デフォルトの名無しさん
2011/05/05(木) 21:24:18.06仏のような寛容さ・・・!
でもプログラムの仕事は任せたくない、不思議!
0750デフォルトの名無しさん
2011/05/05(木) 21:26:46.61VC以外でC99に対応してないって理由のエラー見たことねーや
VC縛りがあるならC++でいーんじゃないの?
0751デフォルトの名無しさん
2011/05/05(木) 21:29:15.87可変長ローカル配列ならalloca()でいいし
C++はstd::complex持ってるし
0752デフォルトの名無しさん
2011/05/05(木) 21:30:29.58この中で一番よく使うC99の機能って何よ?それからはっきりさせよう
0753デフォルトの名無しさん
2011/05/05(木) 21:44:41.19一番だと コメント// か ブロックの途中で変数宣言 のどちらかになっちゃうよ
0754デフォルトの名無しさん
2011/05/05(木) 21:48:23.38・ブロックの途中で変数宣言
・マクロ(__func__、__VA_ARGS__)
・最適化(inline、restrict)
・移植性(stdint.h、inttypes.h)
・指示付きの初期化子と複合リテラル
C99ならこれらは使うね
0755デフォルトの名無しさん
2011/05/05(木) 21:55:41.310756デフォルトの名無しさん
2011/05/05(木) 21:59:29.61・Cでも大抵使えるという理由でしばしば見掛ける。勿論c++なら使える。
・Cでどうしても必要ならさらにブロック化してしまえばなんとかなる。勿論C++(ry
・inlineは事実上不要。restrictはiccならc++でも使える。
・なければ自分で用意すれば何とか。
・そう言えば自分では使わないな。
0757デフォルトの名無しさん
2011/05/05(木) 22:00:19.04VC++には__restrictがある
0758デフォルトの名無しさん
2011/05/05(木) 22:01:31.69何をこだわってんだか
ここまで来たらただの意地張りだけだろ?
0759デフォルトの名無しさん
2011/05/05(木) 22:04:53.19実際C++とだってヘッダ共有は大抵できるから、リンクするだけなら問題ない
0760デフォルトの名無しさん
2011/05/05(木) 22:06:28.63inline展開はコンパイラに任せたがいい方が多くなってきてるからな。
マクロくらいにしか使ってないや。
0761デフォルトの名無しさん
2011/05/05(木) 22:09:42.32C99 の inline は C++ のそれとは違って本当にインライン展開されるとは限らない
実際コンパイラ任せの方が速いからね
コンパイラへのヒント(速さ優先)でしかない
0762デフォルトの名無しさん
2011/05/05(木) 22:12:00.79Better C なら C99 でいいや
0763デフォルトの名無しさん
2011/05/05(木) 22:39:24.32C はゆっくり着実に進化している
0764デフォルトの名無しさん
2011/05/05(木) 23:25:37.450765デフォルトの名無しさん
2011/05/05(木) 23:26:41.950766デフォルトの名無しさん
2011/05/05(木) 23:28:54.910767デフォルトの名無しさん
2011/05/05(木) 23:29:14.390768デフォルトの名無しさん
2011/05/05(木) 23:29:42.43C++1Xが出たら消える
0769デフォルトの名無しさん
2011/05/05(木) 23:30:18.960770デフォルトの名無しさん
2011/05/05(木) 23:39:22.59お得意の Better C ってフレーズで
C++ に誘い込むのが出来なくなるから
0771デフォルトの名無しさん
2011/05/06(金) 00:37:39.78C++1X が出る頃には C++ は消滅してるだろうな
0772デフォルトの名無しさん
2011/05/06(金) 00:52:59.02D言語化しているというのに
0773デフォルトの名無しさん
2011/05/06(金) 00:54:24.86C++ でもいっしょじゃね?
違うのはリンケージ周りぐらいでしょ。
0774デフォルトの名無しさん
2011/05/06(金) 02:56:26.460775デフォルトの名無しさん
2011/05/06(金) 03:36:25.970776デフォルトの名無しさん
2011/05/06(金) 07:18:08.22C++のはインライン展開されるか、無視されるかのどちらか
Cのは"Making a function an inline function suggests that calls to the function be as fast as possible"
言語仕様くらい把握しとけよ
0777デフォルトの名無しさん
2011/05/06(金) 07:37:08.51C99 は C++ とも仲良くやれるから、憎む理由が無い
C++0x で C99 との互換性も高まったし
ところで、D言語化してると繰り返し言ってるけど根拠となるデータはあるの?
0778デフォルトの名無しさん
2011/05/06(金) 07:51:45.64文面が違うのはわかるけどさ、インライン展開以外の最適化が禁止される
ことなんてないんだから、やっぱりいっしょじゃないの?
違うというのなら、C99のinline関数にできてC++のinline関数にできない最適化
ってどんなのがあるの?
0779デフォルトの名無しさん
2011/05/06(金) 08:16:37.80>>756>>757
0780デフォルトの名無しさん
2011/05/06(金) 11:49:01.79gccでアセンブラ出力してみると違いが分かる
C99 で extern 指定子を付ければ外部定義も生成しつつ
関数定義がある翻訳単位ではインライン展開してくれる
C++はそういうことはしてくれないね
0781デフォルトの名無しさん
2011/05/06(金) 11:51:56.01外部コールになるのでインライン展開できない。
0782デフォルトの名無しさん
2011/05/06(金) 12:06:02.61inline int f(int x, int y) { return (x * y + 100) / 10; }
int g(int x, int y) { return f(x, y); }
gcc -S -o - -O3 -x c++ -std=c++98
gcc -S -o - -O3 -x c -std=c99
シンボル名以外まったく同じでしたよ。 gcc 4.3.4 (Cygwin)
> C99 で extern 指定子を付ければ外部定義も生成しつつ
上のコードで extern int f(... にすると f() の定義が生成されるけど、そういうこと?
これは何がうれしいの?
0783デフォルトの名無しさん
2011/05/06(金) 12:06:05.11はぁ?何言ってんの?
0784デフォルトの名無しさん
2011/05/06(金) 12:13:50.83何回も呼び出されるところだけインライン化して、他は普通の関数呼び出しにすることで
悪戯にコードサイズが膨れ上がるのを防げる
インライン関数もLLなど他言語から呼べる
0785デフォルトの名無しさん
2011/05/06(金) 12:21:18.75C++のインライン関数ではそれができないってことでいいのかな?
できないと思う理由は?
あと、アセンブリ出力してみれば分かったはずの違いはどこに行ったの?
0786デフォルトの名無しさん
2011/05/06(金) 12:34:05.41C++ では extern 付けても外部定義が生成されないのは
アセンブラ見て分かっただろ?
どうも言語仕様を見ない主義らしいから、代わりにアセンブラ見ろって言ったわけ
C++の言語仕様には、インライン関数は翻訳単位毎に「同じ」関数定義を
繰り返すことが必要だと明記してある
0787デフォルトの名無しさん
2011/05/06(金) 12:57:15.63これはひどいwww
どこが根拠となるデータなんだよ
せめて>>437みたいなのにしてくれよ
0788デフォルトの名無しさん
2011/05/06(金) 13:07:34.61要らない(使ってない)外部定義が出力されないのに何か問題あるの。
C++でも関数ポインタ取るとか、必要になれば外部定義が出るよ。
逆にC99の規格がアセンブリ上に外部シンボルの出力を強制してる
わけでもない。
下2行も何を言いたいのかわからない。
結局、C99のinline関数にできてC++のinline関数にできない最適化なんて
ないんじゃないの?
0789デフォルトの名無しさん
2011/05/06(金) 13:42:37.94だってgccじゃ商売に使えないもん
GPLに汚染されているから金がもらえない
>>437は証拠にも糞にもならない
せめてIntel C++のC99モードにしろよ
0790デフォルトの名無しさん
2011/05/06(金) 13:48:21.09C99 の場合 extern 付けたら外部定義が生成されるのは
仕様で決まってる
> 下2行も何を言いたいのかわからない。
C++ では各翻訳単位で定義を持つんだから、それぞれで外部定義を作ったら
One Definition Rule 違反になるだろ?
だから C99 と同じように外部定義を作ることは出来ないの
0791デフォルトの名無しさん
2011/05/06(金) 13:58:26.54規格の話はわかってるから、繰り返さなくていいよ。
「extern 付けたら外部定義が生成される」ってのが
「C99のinline関数にできてC++のinline関数にできない最適化」だと
言いたいわけじゃないんでしょ?
何がうれしいのか説明してくれないと。
念のため言っとくと>>784はC++でも同じだからね。繰り返さなくていいよ。
0792デフォルトの名無しさん
2011/05/06(金) 14:05:34.19分かってないから繰り返し書いてんだよ
単純に >>784 は C++ ではできない
出来るというなら方法を示してくれ
0793デフォルトの名無しさん
2011/05/06(金) 14:18:41.53>>784にある2つのうち、
前者はinline指定しないことも含めてコンパイラに任せればいい。
必要ならコンパイラ依存の細かな指定を加える。
C99の規格でもプログラマが呼び出し毎に細かくインライン展開を
制御できるようには定められていない。
後者もコンパイラが提供する機能を使うことになる。
gcc なら __attribute__((externally_visible)) とか。
C99の規格で言う「外部定義」の存在はアセンブリ出力を含めて
コンパイラ出力中への実体の存在とは直接関係しない。
使われる可能性の無い関数の実体はコンパイル時に出力されなく
なってもいいしリンク時に出力されなくなってもいい。
これはC99でもC++でもいっしょで、inline指定も関係ない。
0794デフォルトの名無しさん
2011/05/06(金) 14:31:23.02そっちが >>776 という全然違う定義の文面を見て、
定義は違っても実際は同じように最適化されるんじゃないか?というから
実際も違うってことを示したのに、今度は規格で定まってない?
規格の話をしてるのか具体的なコンパイラの話してんのか
どっちなんだよ
0795デフォルトの名無しさん
2011/05/06(金) 14:52:55.62結果として全部コンパイラ任せの方がマシなものだとしても、
C99 の inline は「関数の呼び出しを可能な限り高速にすることを示唆する」
なんだから、そんなデメリットは無いわけよ
一緒にされては困る
0796デフォルトの名無しさん
2011/05/06(金) 15:10:50.45こういうこと
inline void func() {
_asm {
~
}
}
func(); //アセンブラで書いた関数をインラインで使用できる
0797デフォルトの名無しさん
2011/05/06(金) 15:11:26.93C、C++の最適化について語るスレ 3
http://hibari.2ch.net/test/read.cgi/tech/1215242849
0798デフォルトの名無しさん
2011/05/06(金) 15:13:12.92必要ない定義が出力されるっていう違いが最適化の例だとは思って
なかったんだけど、そういうことなの?
> 規格の話をしてるのか具体的なコンパイラの話してんのか
どちらかというと規格の話をしている。
でもC99でのみ可能な最適化の例を見せるのに使えるというなら、
具体的なコンパイラの話をするのもかまわない。
いいかげん、C99のinline関数にできてC++のinline関数にできない
最適化ってのを示してくれないか?グダグダ言ってないで、スパっとさ。
あるいはそんなものは無いと認めるか。
0799デフォルトの名無しさん
2011/05/06(金) 15:25:16.43C++のinlineも「速くならないようなら展開しない」っていう扱いにしても
かまわない(というか現存のC++コンパイラはほとんどそうする)わけだが、
それは知ってて言ってるの?
0801デフォルトの名無しさん
2011/05/06(金) 15:46:15.75> 最適化ってのを示してくれないか?グダグダ言ってないで、スパっとさ。
C99 の定義なら
何回も関数を呼ぶ箇所があったら、その箇所とインライン関数定義を
同じ翻訳単位にしてインライン展開し、他の場所は普通に外部定義を
呼ぶとかできるわけ
こうすることで、コードサイズの増加を押さえながらインライン展開できる
C++ ではできないし、少なくとも一度もできる方法は示されてない
0802デフォルトの名無しさん
2011/05/06(金) 15:53:21.62言語仕様にはそんなこと書いてないし、
gcc じゃ C99 でもインライン展開されるよ?
0803デフォルトの名無しさん
2011/05/06(金) 16:00:04.92見苦しいんだよ。
0804デフォルトの名無しさん
2011/05/06(金) 18:52:05.14gccの生成物(実行ファイル)にGPLは適用されません
0805デフォルトの名無しさん
2011/05/06(金) 18:54:10.750806デフォルトの名無しさん
2011/05/06(金) 19:20:25.290807デフォルトの名無しさん
2011/05/06(金) 19:22:19.090808デフォルトの名無しさん
2011/05/06(金) 19:33:53.82gccいじるくらいなら一から書いたほうがいいって
clangの人も言ってた
0809デフォルトの名無しさん
2011/05/06(金) 19:42:43.50つまり・・・
0810デフォルトの名無しさん
2011/05/06(金) 20:00:23.35啓蒙活動だよ
0811デフォルトの名無しさん
2011/05/06(金) 20:03:50.14使える物が偉い
0812デフォルトの名無しさん
2011/05/06(金) 20:10:54.41http://clang.llvm.org/docs/UsersManual.html
0813デフォルトの名無しさん
2011/05/06(金) 20:57:04.99codepadはgccだもん
0814デフォルトの名無しさん
2011/05/06(金) 21:38:57.38オプションに -std=c99 または -std=gnu99 付けてるってことだね
0815デフォルトの名無しさん
2011/05/06(金) 21:58:25.76付けなくても通る
0816デフォルトの名無しさん
2011/05/06(金) 23:40:50.79C99使えるし
0817デフォルトの名無しさん
2011/05/06(金) 23:46:19.16GPL v3 だと GCC が使えないというのは理解不能。
0818デフォルトの名無しさん
2011/05/06(金) 23:49:11.61表出ろやコラ
0819デフォルトの名無しさん
2011/05/06(金) 23:50:38.36意味分からんwww何でキレてんだよwww
0820デフォルトの名無しさん
2011/05/06(金) 23:50:52.120821デフォルトの名無しさん
2011/05/07(土) 00:04:12.730822デフォルトの名無しさん
2011/05/07(土) 00:06:06.990823デフォルトの名無しさん
2011/05/07(土) 01:28:38.64何を意味不明な事を
0824デフォルトの名無しさん
2011/05/07(土) 01:34:59.640825デフォルトの名無しさん
2011/05/07(土) 01:57:59.970826デフォルトの名無しさん
2011/05/07(土) 02:02:11.44> なんだから、そんなデメリットは無いわけよ
関数の呼び出しを高速化するだけだな。
デメリットがあるかどうかは関係ない。
0827デフォルトの名無しさん
2011/05/07(土) 02:07:41.140828デフォルトの名無しさん
2011/05/07(土) 02:22:13.68残念でした
0829デフォルトの名無しさん
2011/05/07(土) 10:44:14.25だから互換性が無いC99に怒りを覚えるのは理解できるよ
0830デフォルトの名無しさん
2011/05/07(土) 10:48:46.74ObjC も C と互換性がある訳だし、他人を恨んじゃダメよ
0831デフォルトの名無しさん
2011/05/07(土) 11:03:16.770832デフォルトの名無しさん
2011/05/07(土) 11:36:43.46それをせず代りにFUDをばらまくんだから困ったもんだよ
0833デフォルトの名無しさん
2011/05/07(土) 11:41:45.23悔し涙が出てるよ
>>829
だよなあ
C99はとっくの昔に業界から見捨てられた存在なのに
妙に入れ込んでるアホがいる
Intel C++もgccもC99を捨てればいいのに
0834デフォルトの名無しさん
2011/05/07(土) 11:42:29.66もう休んでいいんですよ・・・
0835デフォルトの名無しさん
2011/05/07(土) 11:51:23.36ほら涙を拭いて
0836デフォルトの名無しさん
2011/05/07(土) 12:02:14.060837デフォルトの名無しさん
2011/05/07(土) 12:15:14.65アプリケーションプログラミングは他の高級言語に取って代わられ
順調に業界から見捨てられつつあるのは C++
0838デフォルトの名無しさん
2011/05/07(土) 12:15:52.81今更 C99 の反対キャンペーンをしてももう遅いんだよなあ
10 年くらい遅れてる
0839デフォルトの名無しさん
2011/05/07(土) 12:24:55.53参考書すら出てないでしょ
0840デフォルトの名無しさん
2011/05/07(土) 12:33:03.780841デフォルトの名無しさん
2011/05/07(土) 12:38:31.670842デフォルトの名無しさん
2011/05/07(土) 12:38:52.360843デフォルトの名無しさん
2011/05/07(土) 12:40:50.76ろくに言語仕様も把握せずにC++書いてるじゃん
0844デフォルトの名無しさん
2011/05/07(土) 12:43:52.190845デフォルトの名無しさん
2011/05/07(土) 12:58:47.98もう消えそうな言語を擁護して何の得が?
0846デフォルトの名無しさん
2011/05/07(土) 13:01:43.390847デフォルトの名無しさん
2011/05/07(土) 13:57:56.750848デフォルトの名無しさん
2011/05/07(土) 13:59:28.050849デフォルトの名無しさん
2011/05/07(土) 14:27:22.280850デフォルトの名無しさん
2011/05/07(土) 14:32:13.94C++ さん、どうぞ
0851デフォルトの名無しさん
2011/05/07(土) 14:38:26.170852デフォルトの名無しさん
2011/05/07(土) 14:43:33.97もしかして C++ が良い物だと思ってないか?
0853デフォルトの名無しさん
2011/05/07(土) 14:48:55.50C++が良い物である確率の方が高いわな
0854デフォルトの名無しさん
2011/05/07(土) 14:50:15.02人格否定始めちゃったよ・・・
0855デフォルトの名無しさん
2011/05/07(土) 14:50:46.46一般的にも、ISOで標準化されたりいくつかのオープンソースプロジェクトで
採用される程度には有用なもののようですが、酷いものだと言う人もいます。
酷いものだという人の論調は決めつけが主であり、僕はそういう人が嫌いです。
0856デフォルトの名無しさん
2011/05/07(土) 14:51:19.16よりによって演算子のオーバーロードw
0857デフォルトの名無しさん
2011/05/07(土) 14:56:42.87裸で洞窟に暮らしているイメージ
0858デフォルトの名無しさん
2011/05/07(土) 14:57:38.590859デフォルトの名無しさん
2011/05/07(土) 18:03:16.86>もしかして C++ が良い物だと思ってないか?
C++を触った経験もないのになんでこんな上から目線の発言が出来るの?頭おかしいの?
0860デフォルトの名無しさん
2011/05/07(土) 18:05:18.740861デフォルトの名無しさん
2011/05/07(土) 18:09:34.60だからお前等C++ PGの圧倒的低能さとC++自体への無知が
余すところ無く示されたこのスレで何の冗談だよw
0862デフォルトの名無しさん
2011/05/07(土) 18:10:08.950863デフォルトの名無しさん
2011/05/07(土) 18:12:48.15CにとってはC++は数多在る相互運用できる言語のひとつにすぎない
しかもその他大勢の中でも出来の悪い部類
0864デフォルトの名無しさん
2011/05/07(土) 18:17:30.50いらない世界といる世界があるんだよね。
0865デフォルトの名無しさん
2011/05/07(土) 18:17:52.270866デフォルトの名無しさん
2011/05/07(土) 18:18:09.650867デフォルトの名無しさん
2011/05/07(土) 18:19:00.330868デフォルトの名無しさん
2011/05/07(土) 18:37:09.08みんなやさしいもんね。
0869デフォルトの名無しさん
2011/05/07(土) 18:44:30.84やさしいんじゃなくて粘着キチガイだらけ
0870デフォルトの名無しさん
2011/05/07(土) 19:08:11.600871デフォルトの名無しさん
2011/05/07(土) 19:13:50.99今日の粘着
0872デフォルトの名無しさん
2011/05/07(土) 19:56:02.81できない。
自分の場合は複素数を扱うので演算子オーバロードができるという理由だけで
C++を使っていたがC99は複素数がそのまま扱えるのでC++とは縁が切れた。
もちろんC++の機能はそこ以外使っていない。
0873デフォルトの名無しさん
2011/05/07(土) 22:58:09.72自己紹介乙としか言いようがないな自分に安価付けてるし
>>872
でも四元数を扱おうとするとクラスが欲しくなるでしょ
結局オーバーロードは必要なんだよ
0874デフォルトの名無しさん
2011/05/07(土) 22:59:23.700875デフォルトの名無しさん
2011/05/07(土) 23:02:17.25取り立てて不便は無い
http://marina.sys.wakayama-u.ac.jp/~tokoi/?date=20040321
0876デフォルトの名無しさん
2011/05/07(土) 23:03:37.900877デフォルトの名無しさん
2011/05/07(土) 23:36:12.39つ boost::numeric::ublas
そんなにカオスでもないと思う
0878デフォルトの名無しさん
2011/05/07(土) 23:39:39.29そんなに必要でもないと思う
0879デフォルトの名無しさん
2011/05/07(土) 23:43:41.16むやみにタイプ量を増やすのが趣味なんですね
タイプ量に比例してバグ発生箇所も増えて行くのに
クラスがあればクラスを直せばすぐ終わる
>>878
必死w
0880デフォルトの名無しさん
2011/05/07(土) 23:52:18.70下らん
0881デフォルトの名無しさん
2011/05/08(日) 00:05:29.70自己紹介乙
0882デフォルトの名無しさん
2011/05/08(日) 00:24:39.47標準ライブラリでは幾つか例外もあるけど、ユーザ定義関数はそういうお作法
真面目な話をしても無駄っぽいけど、一応
0883デフォルトの名無しさん
2011/05/08(日) 00:34:47.710884デフォルトの名無しさん
2011/05/08(日) 02:13:17.660885デフォルトの名無しさん
2011/05/08(日) 06:27:39.62> でも四元数を扱おうとするとクラスが欲しくなるでしょ
> 結局オーバーロードは必要なんだよ
四元数は知らなかった。これからも扱うことはないのでおれにとって
オーバロードは無用の長物。
0886デフォルトの名無しさん
2011/05/08(日) 06:34:59.16DirectXを使うとすぐに三次元物体の回転に四元数(クオータニオン)が
出てくるんだが
もしかして3Dゲーム組んだ事ない?すぐバレるよ
0887デフォルトの名無しさん
2011/05/08(日) 06:44:42.700888デフォルトの名無しさん
2011/05/08(日) 06:59:05.20図星でしたか
顔真っ赤ですよ?
0889デフォルトの名無しさん
2011/05/08(日) 07:28:35.32> もしかして3Dゲーム組んだ事ない?すぐバレるよ
ね〜よ。3Dゲーム組んだこともないしこれからも組むことはない。
それが顔真っ赤にするようなことか? 想像力がすごいな。
ついでに>>887はおれじゃない。
0890デフォルトの名無しさん
2011/05/08(日) 08:41:09.91四元数に限らずあらゆるデータ型を新規に作り出せるし演算子の
オーバーロードも出来るC++に比べるとC99はCに比べて大して代わり映えしない
0891デフォルトの名無しさん
2011/05/08(日) 08:47:05.58知れるわな。スマフォやそれ以下のガラケーですら3D対応がデフォなのに。
0892デフォルトの名無しさん
2011/05/08(日) 08:52:54.23C99に妙なこだわりを見せてる奴はロートルと思って間違いない
C++が全然分からないけどC99なら何とか分かるので使ってみて
わずかな優越感に浸りたいだけだという感じがよく伝わってくる
0893デフォルトの名無しさん
2011/05/08(日) 09:02:36.77陳腐化したから携帯端末にまで載せられるようになったとも言えるけど。
0894デフォルトの名無しさん
2011/05/08(日) 09:07:56.690895デフォルトの名無しさん
2011/05/08(日) 09:12:22.28C vs C++って話じゃないよね(Cベースではあるけど)。
0896デフォルトの名無しさん
2011/05/08(日) 09:14:16.25演算はCPUでやる事はいくらでもある
いちいちDirectXを呼び出していたら遅くて仕方が無い
そういう場合はプログラム側で演算する必要があるが
Cだとバグりやすい
0897デフォルトの名無しさん
2011/05/08(日) 09:27:41.63そう、陳腐化した技術すら使いこなせない。理解もできない。オ�hル。
0898デフォルトの名無しさん
2011/05/08(日) 09:33:07.410899デフォルトの名無しさん
2011/05/08(日) 09:38:24.080900デフォルトの名無しさん
2011/05/08(日) 10:08:36.873Dゲームを組む薄給PGが煽るスレですね
0901デフォルトの名無しさん
2011/05/08(日) 10:22:46.39吹聴してる輩は >>301 は理解できるようになった?
以前は理解できなくて、苦し紛れに「理解できなくても良い、ライブラリも読まないし」
って言ってたけど。
0902デフォルトの名無しさん
2011/05/08(日) 10:44:16.94http://shirokumaice.sakura.ne.jp/wp/archives/131
>“酸っぱい葡萄”に手が届かない現実と、執着のギャップが大きいほど
>当人自身が葛藤に対して脆弱であれば脆弱であるほど
>"酸っぱい葡萄”に手を伸ばすことが、傷つきのリスクをもたらしやすく、耐えることが困難であるほど
>“酸っぱい葡萄”は強烈で堅固なものになる。
「自分がC++を理解出来ない」という現実を認めたくないので、代わりに
「俺にはC++なんか必要ない、C99で十分さ」と「合理化」する
そして、このスレに粘着しているロートルはただのロートルではなく、葛藤に対して脆弱、
つまり精神的に弱い、打たれ弱いダメなロートルであるから、管理職にも就けない
本当に精神的に強い人間ならば素直に「C++はわかりません」と認められるものだ
PG35才定年説を考えても終�hル
0903デフォルトの名無しさん
2011/05/08(日) 10:47:42.85で、>>301は理解できたの?
警告を無視し、5000万行のコードを軽々と扱え、
演算子オーバーロードは理解できないから使用せず、
ライブラリは一切読まないC++ PGさん?
0904デフォルトの名無しさん
2011/05/08(日) 10:53:04.210905デフォルトの名無しさん
2011/05/08(日) 11:02:50.45また屁理屈か
そんな超人みたいな奴いるかいアホ
0906デフォルトの名無しさん
2011/05/08(日) 11:13:01.580907デフォルトの名無しさん
2011/05/08(日) 11:38:42.80超人5000万行
0908デフォルトの名無しさん
2011/05/08(日) 11:42:27.40つーか理解どころか一度も使ったこと無くても、試せばすぐ分かる
のに誰もレスしないって事がどうゆう事なのかも分からないの?w
0909デフォルトの名無しさん
2011/05/08(日) 12:13:57.17だから誰がそんな事をいつ言ったんだよ?そいつは多分PGじゃないよ
ちょっと考えれば無理な事ぐらい誰でも分かるだろ
共同開発した場合話は違ってくるだろうが一人でそんな多大なコードを
保守出来るわけがない
0910デフォルトの名無しさん
2011/05/08(日) 13:33:57.43結構レス付いてたよ?
難読化するなとかIOC++CCとかコメントされてたwww
全然難読化なんてされてないのに。
で、理解できたの?
0911デフォルトの名無しさん
2011/05/08(日) 13:36:38.53というか仕事で>>301のようなコードをあちこちに書いてデバッグをしにくくしたら
クビが飛ぶぞ
0912デフォルトの名無しさん
2011/05/08(日) 13:39:53.11理解できないのにどうやって避けることが出来る?
演算子オーバーロードを完全に使うのを止めれば避けられるが、使うんだろ?
0913デフォルトの名無しさん
2011/05/08(日) 13:58:31.39完全な仕様書があれば>>301も糞コードにならずに済んだかもしれない
しかしC++の文法をほとんど理解している俺でも>>301のコードの実行結果は
目を疑うような物だったぞ
そういうのを糞コードと言うんだ
C++を使うのなら、クラスや演算子のオーバーロードを使うのなら、それによって
「見やすい、保守しやすい」コードを書くべきだ
見にくいコードを書く位ならC++なぞ使うな
0914デフォルトの名無しさん
2011/05/08(日) 14:00:47.17こういうの見ると何だかな・・・
ゲームなんて作ってるのは業界の中でも一握りじゃないの。
自分の知ってる世界が全てという感覚で突撃されたら、
コミュニケーションなんて成立しないだろ・・・
0915デフォルトの名無しさん
2011/05/08(日) 14:04:41.80自分の知っている事しか言えないと思うが?
自分の知らない事を無理に言おうとすると間違った事を言ってしまう危険性があるぞ
それより自分の領分を正しく発言する方が余程マシだと思う
0916デフォルトの名無しさん
2011/05/08(日) 14:06:13.72そうじゃないと知らない人とのコミュニケーションは成立しないから
0917デフォルトの名無しさん
2011/05/08(日) 14:11:57.92じゃせいぜいデタラメな議論でも続けてくれよ
0918デフォルトの名無しさん
2011/05/08(日) 14:22:59.73簡単に出せてしまう言語は糞言語なのでは?
>>301と「見やすい、保守しやすい」コードの違いも説明されてないしね
0919デフォルトの名無しさん
2011/05/08(日) 14:26:54.58糞言語?見事な話のすり替えと言いたい所だがすり替えさせないよ
糞コードの話をしているのにいつの間に糞言語に?
それを言うならC言語もIOCCCを見れば分かるが読めないコードは
いくらでも掛けるからあんたの言い分ではCも糞言語なんですが?
0920デフォルトの名無しさん
2011/05/08(日) 14:33:34.44class Xはメンバ変数を持たないし
operator=もoperator*もどちらもその演算子が本来持ってるであろう代入も乗算もしてない
operator bool()が呼ばれたら必ず同じ値を返す
a * b = cだったらoperator bool()が返す結果が全てになる
a * b == cだったらtrue右辺も左辺も等しいのでtrueになる
あんまり頭ひねるような事でもないと思うんだけど
0921デフォルトの名無しさん
2011/05/08(日) 14:33:37.34だから邪悪なコードは避けることができる
一方C++では、パッと見で普通にクラスと演算子オーバーロードを使ってるだけに見える>>301と
邪悪ではないコードとの差を説明できない。説明できないのにどうやって避ける?
邪悪なコードを簡単に避けられない言語は糞言語では?
0922デフォルトの名無しさん
2011/05/08(日) 14:51:00.48証明終
0923デフォルトの名無しさん
2011/05/08(日) 14:51:53.55メンバ変数の有る無しも、operator=とoperator*の内部が殆ど空なのも
式 a * b = c が書けるのとは関係ないけどね
0924デフォルトの名無しさん
2011/05/08(日) 14:53:58.90operator= と operator* とoperator bool のどれを禁止する?www
0925デフォルトの名無しさん
2011/05/08(日) 14:54:47.110926デフォルトの名無しさん
2011/05/08(日) 14:55:19.380927デフォルトの名無しさん
2011/05/08(日) 15:02:39.64どこが分かりにくいかも説明できないくせにwww
0928デフォルトの名無しさん
2011/05/08(日) 15:02:43.78変換演算子がある時点で既に難読なんだよ
お前本当にC++知らないんだな
0929デフォルトの名無しさん
2011/05/08(日) 15:02:57.800930デフォルトの名無しさん
2011/05/08(日) 15:07:10.58全然>>301を理解できてないことが分かった
0931デフォルトの名無しさん
2011/05/08(日) 15:22:56.55邪悪だけどどこが異常か説明不可能な普通のオーバーロードだとか
それが可能なんだからクソって言いそうだな
0932デフォルトの名無しさん
2011/05/08(日) 15:24:50.25いや、それの邪悪さは説明できるwww
0933デフォルトの名無しさん
2011/05/08(日) 15:29:24.59だから=と==の事だろ?でもそれはCにも言える事だろ
今は>>301がC++で難読である理由を聞かれてるんだから変換演算子があると
答えたのになんか文句あんの?
0934デフォルトの名無しさん
2011/05/08(日) 15:34:24.40掲示板では細かい議論に付き合ってくれる人がいるけど、
仕事じゃそんな親切な人がいるとは限らないぜ。
0935デフォルトの名無しさん
2011/05/08(日) 15:37:01.69if文の条件式での代入がコーディング規約や使うライブラリ上仕方ないこともあるがあまりC++的ではない
operator bool()を使うのは大抵邪悪なコード。ただFalse型など邪悪でない使い方はある
まあconst関数じゃない時点で難読化にでも使うのかという感じだけど
で、C++固有の話では無いが使う人のことを考えない設計をする奴は首にしたいな。
0936デフォルトの名無しさん
2011/05/08(日) 15:41:31.12じゃあoperator=をコメントアウトしてもいーよ
それともoperator=を禁止する?
>>935
operator bool を消しても a * b = c が 真偽値を持たなくなるだけで
この式自体は書けるからね
理解できないからって無関係なとこばっかコメントするなよwww
0937デフォルトの名無しさん
2011/05/08(日) 15:42:38.460938デフォルトの名無しさん
2011/05/08(日) 15:48:04.29「C++は邪悪なコードを書くことが出来る」>>936にえらい後退したな
0939デフォルトの名無しさん
2011/05/08(日) 15:53:19.41>じゃあoperator=をコメントアウトしてもいーよ
>それともoperator=を禁止する?
変換演算子って代入演算子じゃないんだがなあ・・・・
恥ずかしいからお前もう書くなよ
0940デフォルトの名無しさん
2011/05/08(日) 15:54:16.25だからさ、そんな邪悪なコードをどうやったら禁止できるか
まったく説明できないだろ?
a * b = c なんて式は動的言語でさえシンタックスエラー返すぜ
0941デフォルトの名無しさん
2011/05/08(日) 15:56:05.70どんな処理系使ってんの?
0942デフォルトの名無しさん
2011/05/08(日) 15:56:40.81だからさ、operator bool なんて禁止しても
式が書けるかどうかとは関係ないわけ
禁止する意味あるのは operator= と operator* だけ
恥ずかしいなぁ
0943デフォルトの名無しさん
2011/05/08(日) 15:57:16.17if () の中に入れられなくなるだけで a * b = c は書ける
0944デフォルトの名無しさん
2011/05/08(日) 16:00:58.38いや、、書けてどうするんだ?
0945デフォルトの名無しさん
2011/05/08(日) 16:02:32.86そんなアホな式が書けるC++を馬鹿にしてるんだけど?
0946デフォルトの名無しさん
2011/05/08(日) 16:04:01.540947デフォルトの名無しさん
2011/05/08(日) 16:10:00.88一見アホな式でも書けるけど、それをどう使うかはプログラマに任されてるのがC++。
だからアホが使えば問題になるのは、そういう思想の言語だから仕方ないわな。
0948デフォルトの名無しさん
2011/05/08(日) 16:11:49.75>>301はただそれだけの話だろ
0949デフォルトの名無しさん
2011/05/08(日) 16:13:42.31全然違うwww
0950デフォルトの名無しさん
2011/05/08(日) 16:19:56.51また話のすり替えか
C++で難読になる理由を変換演算子と答えたのに
いつの間にoperatorの話になってんの?マジ頭悪いなお前
0951デフォルトの名無しさん
2011/05/08(日) 16:24:02.040952デフォルトの名無しさん
2011/05/08(日) 16:33:25.540953デフォルトの名無しさん
2011/05/08(日) 16:37:53.32a*b=c
で何がしたいのかがわからんしな。
めったに見ないコードだが、目的に対して手段が妥当ならそれでいいと思う。
0954デフォルトの名無しさん
2011/05/08(日) 16:39:47.09だからCだけで十分ニダってのはおかしいだろ
0955デフォルトの名無しさん
2011/05/08(日) 16:44:12.98More Effective C++に書いてあるね
0956デフォルトの名無しさん
2011/05/08(日) 16:47:04.360957デフォルトの名無しさん
2011/05/08(日) 16:50:38.970958デフォルトの名無しさん
2011/05/08(日) 16:51:37.350959デフォルトの名無しさん
2011/05/08(日) 16:51:57.81動的言語だからじゃなくて、ポインタがないから右辺値から左辺値を作る演算子を見つけづらいてことやろ
http://ideone.com/pTGKu
その言語をよく知っていれば変なことは大抵の言語でできる
0960デフォルトの名無しさん
2011/05/08(日) 17:44:19.47話のすりかえじゃなくて、独りピント外れなこと言ってるから。
お前が>>301で理解できたのはそこだけだもんね?
もう今じゃお前だけじゃね?理解できてないの。
0961デフォルトの名無しさん
2011/05/08(日) 17:52:52.08Ruby なら変なことしなくても a + b = c は書けてしまう
http://codepad.org/xvV9nvk5
0962デフォルトの名無しさん
2011/05/08(日) 17:54:03.60CからC++の関数呼び出して
例外飛んできたらどうなるの?
0963デフォルトの名無しさん
2011/05/08(日) 17:54:20.18お薬足りないの?
0964デフォルトの名無しさん
2011/05/08(日) 17:57:00.07馬鹿ですねえ
もう分かってるけど難読な理由を変換演算子だと書いただけですよ
そりゃ演算子のオーバーロードを他の目的に使えば読みにくいですよ
例えばoperator+を-の意味に使っちゃうとか
ストリームに<<をオーバーロードしたのはなかなかいいセンスだと思う
0965デフォルトの名無しさん
2011/05/08(日) 17:57:45.04多分そうでしょう
>>960には見えない物が見えて聞こえない物が聞こえるようです
早めに精神科に行って薬をもらって飲むべきでしょう
0966デフォルトの名無しさん
2011/05/08(日) 17:58:41.81理解できないロートル呼ばわりして煽ったのに
いざ自分たちが理解できてないことを指摘されたら怒るのは
どうかと思う
0967デフォルトの名無しさん
2011/05/08(日) 17:59:43.33> そりゃ演算子のオーバーロードを他の目的に使えば読みにくいですよ
> 例えばoperator+を-の意味に使っちゃうとか
今だに>>301が理解できてないことが分かった
0968デフォルトの名無しさん
2011/05/08(日) 18:01:13.82いつまでも言っててください
はい次の患者さんどうぞ
0969デフォルトの名無しさん
2011/05/08(日) 18:01:41.49>>960は二度と書き込むな。
0970デフォルトの名無しさん
2011/05/08(日) 18:08:29.75>CからC++の関数呼び出して
>例外飛んできたらどうなるの?
C++ で catch してないのと同じ動作、つまりそのまま更に上位の関数に
例外が伝播するだけ。
0971デフォルトの名無しさん
2011/05/08(日) 18:14:28.22ん?catch句がないと
>もし、規定以外の型の例外を返した場合は異常終了します
>許可のない型の例外が発生した場合、unexpected() を呼び出します
じゃないの?
それにCとC++の処理系が違うとさらに妙な事が起きる可能性がある
0972デフォルトの名無しさん
2011/05/08(日) 18:22:53.84どうなるかわからんからやっちゃいけない。多くの場合 catch (...) が必要になる。
0973デフォルトの名無しさん
2011/05/08(日) 19:27:10.30> C++ is a horrible language. It's made more horrible by the fact that a lot
> of substandard programmers use it, to the point where it's much much
> easier to generate total and utter crap with it. Quite frankly, even if
> the choice of C were to do *nothing* but keep the C++ programmers out,
> that in itself would be a huge reason to use C.
は的を射てると解る。Linusは賢人だな。
0974デフォルトの名無しさん
2011/05/08(日) 19:46:30.91> The typical C-hacker will fail to give any rational and logical argument about
> why C++ is a bad language and why C is better.
は的を射てると解る。
0975デフォルトの名無しさん
2011/05/08(日) 20:05:03.660976デフォルトの名無しさん
2011/05/08(日) 20:08:08.91C++ PGは語れば語るほど低能さを露呈するからね?
0977デフォルトの名無しさん
2011/05/08(日) 20:26:33.04ちょっとお兄さんに聞かせてごらん?
0978デフォルトの名無しさん
2011/05/08(日) 20:43:38.56日曜日に何時間チャットしてるんだよw
0979デフォルトの名無しさん
2011/05/08(日) 20:59:14.310980デフォルトの名無しさん
2011/05/08(日) 21:08:51.560981デフォルトの名無しさん
2011/05/08(日) 21:10:21.68今更遅いけど
0982デフォルトの名無しさん
2011/05/08(日) 21:10:26.210983デフォルトの名無しさん
2011/05/08(日) 21:18:42.66悔しかったらC++覚えてみ
0984デフォルトの名無しさん
2011/05/08(日) 21:22:07.330985デフォルトの名無しさん
2011/05/08(日) 21:23:37.420986デフォルトの名無しさん
2011/05/08(日) 21:25:14.95顔が真っ赤ですよ?
0987デフォルトの名無しさん
2011/05/08(日) 21:27:39.94それについて議論する流れになってくれたらいいな。
・・・ならないんだろうけどな。それならもう次スレも要らん気がするな。
0988デフォルトの名無しさん
2011/05/08(日) 21:28:26.99コンパイラ作ってちょ
0989デフォルトの名無しさん
2011/05/08(日) 21:28:52.90コンパイラ買う金もないのか
無職か?
0990デフォルトの名無しさん
2011/05/08(日) 21:29:46.480991デフォルトの名無しさん
2011/05/08(日) 21:31:05.40作ってちょ
0992デフォルトの名無しさん
2011/05/08(日) 21:44:22.060993デフォルトの名無しさん
2011/05/08(日) 21:47:24.99金払え
高いぞ
gccでも使ってろ無職は
0994デフォルトの名無しさん
2011/05/08(日) 21:52:21.06100万ぐらい?
0995デフォルトの名無しさん
2011/05/08(日) 21:59:22.26アホ抜かすな5000万円だ
0996デフォルトの名無しさん
2011/05/08(日) 22:20:26.830997デフォルトの名無しさん
2011/05/08(日) 23:07:03.190998デフォルトの名無しさん
2011/05/08(日) 23:08:06.200999デフォルトの名無しさん
2011/05/08(日) 23:09:02.34eを飛ばすな
小学生か?
1000デフォルトの名無しさん
2011/05/08(日) 23:20:24.60規格を完全に準拠したコンパイラってもう出来ているの?おしえて
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。