C++は難しすぎ 難易度:4
■ このスレッドは過去ログ倉庫に格納されています
>>1 馬鹿。C++の全機能を無理に使おうとするから難しいんだよ。 まずBoostは当分使うのをやめて身の丈に応じた機能だけ使っとけ。 WindowsアプリならVBとかDelphiとかで十分。 だいたい、GCの無い言語でアプリ書きたくない。 スマートポインタは継承に対応できないのでクソ。 参照カウンタは実はGCより遅い。 デバイスドライバとかはオブジェクト指向いらないので メモリモデルが単純なCのほうがいい。 Linuxでプログラムを組むんだったらPythonかRubyでいい。 サーバーサイドならJava。 これでパフォーマンスが要るアプリ(ゲームとか)はこれからDに 取って代わられる可能性大だから、もはやC++をやる価値無し。 難解でしかもツカエナイ言語。 C++で悩むくらいならもっと役に立つことに頭使え。 釣りかどうかはわからないが、16分弱で馬鹿が釣れたのは確かだな。 もし、継承に対応できないがキャストできないということなら、それは違う。 shared_ptrにはdynamic_pointer_castなんかがある。BoostもTR1も。 大分前からOOの有用性については現場レベルから疑問視 する声が上がっていました。 かような擬似技術が今までまかり通っていた原因は供給側、つまり 日経提灯やセミナー屋にももちろんあるでしょうが、需要側にも 擬似技術を受け入れる下地があったと思われます。 何時の時代にも仕事の出来ない、自分の能力の限界に気付いてしまった 若いPGがいます。 今のままでは決してベテラン技術者に追い付けない事を仕事で 実感している連中です。 彼らの逆転のチャンスはなんでしょうか? 社会の混乱を醸成し、混乱に乗じた革命。これしかありません。 OOの出現はそんな彼らの需要にぴったりのモノでした。 従来からある用語を言い換えただけのインチキ性。 既存の技術者のスタイルを否定する構造。 反対者や疑問を抱く者には「新技術について行けない人」というレッテル を貼るだけで追い出せるのですから、詐欺師にとってはこんなオイシイ 仕掛けはありません。 しかし、もう結果は出始めています。 革命ごっこはもう終わり。 まだ詐欺師に占拠されていない会社においては、一刻も早くこうした 擬似技術者の駆逐による経営の健全化を強く望むものです。 C++は完全なオブジェクト指向言語じゃないとかJava厨が騒ぐが 完全なオブジェクト指向って何だ? JavaはC++同様メッセージパッシングではないし全てがオブジェクトでもないので そのJava厨さんが何をいいたいのかはエスパーするしかないな Java オブジェクト指向以外を認めないあたりがそう。 それを分かっていないのがJava厨。 もちろんだからと言ってC++が最高と言うわけではないけどな。 JavaはC++憎しで突っ走った結果 別のベクトルでヒドい言語になっちゃった哀れな子 俺は別にJavaを叩く気はないけど、Java使いがC++を叩いてるのを見ると「なんだかなぁ」と思う。 Java 云々は抜きにして、C++ は ADT もあるし OO 的な広がりは見せなかったね。 >>22 C#はベストと言えるんじゃね? Javaは最早カスだがC#誕生の役にはたったよ >>28 C#がいいのは俺も強くそう思うけど、 ラムダ式があるあたりオブジェクト指向オンリーな言語とは思えない (つまり完璧なオブジェクト指向ではないと思う)のだが。 C++がオブジェクト指向的でないコードが量産される背景には、 interface 概念がはっきりした形で存在しないために(Java C# 等には明白な形で存在する)、 実はそれはRTTI+仮想多重継承で同様の機能が実現できるにも関わらず 使いこなせないケースが多いように見受けるな。 オブジェクト指向を推進するにも関わらず、多重継承を嫌うという事態になっている人を多々見かける。 その結果、オブジェクトをインターフェイス、つまり共通の仕様を通してアクセスするという概念が希薄。 それでも、共通でなければ不便である事は分かっているようで、無理やりな共通化をして、 結果クラスの継承ツリーが歪なコードを量産してしまう、ただの知識不足なのでもったいないんだが・・・ また、メッセージパッシング式の動作を書けないのは、ガベージコレクタが無いのが原因だろうな。 この方式は、ちゃんとインスタンス管理ができていないと、まともにコードできない。 C++のインスタンス管理は面倒くさいので、おろそかになりがちな人が多い。 ところが、おろそかであるにも関わらず、本人はその自覚が無いケースも多い、 むしろインスタンス管理がしっかりできていると信じて疑わない人は多々あり。 これは、例外に関わるバグにも発展するのでしっかり勉強して欲しいのだが、 自覚症状無しというケースに当たると辛い。 >>30 >ラムダ式があるあたりオブジェクト指向オンリーな言語とは思えない 別にラムダがあったって問題無いよ。 Smalltalk にだって block closure があるし。 だからと言って C# が良い訳ではないけどね。 >>32 2chの「まとめろ」は「根拠をすっ飛ばせ」って意味だけど、 誰かの耳に痛いことを書く場合、それではただの煽りになるからなぁ。 なんだその俺解釈? 一般的な意味でまとめろ、3行に。 完璧なまとめだな >>31 みたいにクドイ奴がクラス、メンバ名とか決めるとどんだけクドクなるんだろうな 見たくもないが サーバサイドと携帯アプリは Java Mac は ObjC UNIX は C Win は知らんけど C# なの? C++ にとって難しすぎな世の中かもね。 C++ハ ムズカシクナイ アプリを作るのが難しい 難易度でいえば、Cの方がむずい 少なくとも、C言語を含むC++は、Cよりかは簡単に作れる メモリ管理や文字列処理などの点はC++ おまらは大事なことに気づいていない。 int もしくは char でCを格納したらインクリメントしたらDになるはずだ。 いわば、c++=D だ。なのにD言語は別に存在する。矛盾している。 >>41 ポータビリティを無視してはいかん 'C'をインクリメントして'D'になるとは限らん それ以前に'C'は右辺値だからインクリメントなんか出来ない >>45 そりゃそうだ。お前んとこはCOBOLが主流だもんね。 これからもっとも給与面で優遇されるのはコボラーになる C++はまだ一山10セントが続く COBOLは延命措置に躍起になってくれるのに C++はあっさり破棄される!不思議! 数年前はjava?m9(^Д^)プギャーってかんじだったのに 今はjavaがかなり支配的になってきた COBOLはたぶんちょっとずつ減ってるんだろう 全然知らんけどw decimalが扱えればCOBOLである必要はないからな javaの方が遙かに保守が簡単だし COBOLは仕事以上にコボラーが減ってきているので、言語とは全く別に COBOLの仕事の価値が上がってしまっている希ガス。 減った分価値が上がる=COBOL 減ったら忘れ去られる=C++ 再利用性(笑) >>51 残念。いまコボル案件マジ氷河期。ちょっと募集かけると 仕事にあぶれたコボラがわんさか集まってくる。そんなだから単価ちょう叩き売り状態。 ちなみにCもC++もだいぶ減っているかな。いま携帯がやばいからね。 Javaってなんで+演算子で文字列連結できるんだ? 演算子オーバーロードをサポートしてるわけでもないのに >>57 C だって演算子オーバーロードをサポートしていないのに + は複数の型を取れるでしょ。 つまり演算子オーバーロードなんて必要無いんです。 Javaの「このクラスを継承してるとこういう書き方が出来るよ!」みたいなのは正直キモイ >>59 複数の型は取れないよ。 コンパイル時に暗黙の型変換されてる。 >>65 変換を行った後でもint + intとかdouble + doubleとか何種類かあるでしょ。 >>59 の必要無いは変な表現だと思うけど。 yaccのように評価順位とか自由にいじれるわけではないからな。 演算子オーバーロードは中途半端な機能に思える。 ピアソンの本ってやった? おれは コーディングスタンダード と エフェクティブ と エフィシエンとはやった >>67 確か Haskell だったと思うけど、優先順位と結合方法も指定出来る言語があったね。 C++ が中途半端なのは仰る通り。 C++もわかんない奴なんか所詮使えない そういう奴が業界から消えるのが一番いい。 もちろん、分かった上で使わないという選択肢を取るのはありだと思う。 上の方でオブジェクト指向はムリとか何とか書いてあったが、 C++でもSmallTalkに近い純粋なオブジェクト指向もできなくもない。 ただ、幾分かコーディングの手間と、実行時の無駄がある上、C++らしくない。 ttp://codepad.org/cwvFDlrt きつい言い方をすれば、出来なくもないというのは 中途半端で使い物にはならないってことでしょ。 外面だけ真似しても意味無いじゃん。 >>73 >中途半端で使い物にはならないってことでしょ。 ところがどっこい、速度の要らないMVCの実装は非常に楽になる。 #>>72 に貼っつけた即席コードのスコープやらアクセス修飾子が無茶だったorz Smalltalk が優れているのは統一感のあるクラスライブラリだったり、 充実したリフレクションだったり、インタラクティブな環境だから、 喩え C++ で真似事をしたとしてもなぁ。lambda とか class とか C++ は中途半端に採用するのが好きだよね。 半端なんじゃなくてC++に合う形で取り入れてるだけ。 その結果、本家の良さをスポイルして中途半端になってしまうのが C++ だよね。 C++って名前だけはセンスいいと思ったんだけどなw 名前のおかげでCの正統な上位の言語だという誤解を植え付けることに成功したからなwww こっちはC++が難しい あっちはC++は別に難しくないが糞言語 一応主旨が違う 「問題点だらけの糞言語だから無駄に難しい」で一つに纏めろ 個人の趣味でいじくる分にはとても楽しい言語なのは否定しない でも何万台も量産する機械に組み込んだり人の命に関わるようなものを制御させようとは 絶対に思えない >>87 それは他の新しい高級言語でも同じなんじゃ? 面白みがなくても、その分複数人でやる時は有効な言語ってのもあるだろ 例えば …何? >>87 君が思っているよりC++は世界中で使われているよ。 >>87 いまやPOSレジにもWindowsが乗っかっていて、 中のアプリがC++でガリガリ書かれている時代だからなあ。 boostなしじゃC++なんて使い物にならんな STLとかもう要らないんじゃね? 嘘はくな STLはC++の中心 これ無しでは、C++は勝ちをなくす 標準のくせに可搬性のカケラもないアレがC++の中心? 冗談もほどほどにしろ STL使ってて移植に困ったことなんてないけどな。 どうせ>>100 が変な使い方してるだけだろw >>101 >>>100 嘘はくな 「嘘吐き」と書いて、「うそつき」と読むことはご存じない? ここから正しい日本語教室になります。 ム板ではよくあることです。ご静聴下さい。 >>102 例外をサポートしてない環境==stl使えない しかもデカい市場なんで無視できないんだわ >>105 gcc で普通に例外使えるし、わざわざ「環境」って言ってるんだから、 コンパイラの制限じゃないよね?そんな制限のあるコンパイラはとっくに淘汰されてるだろうし。 どんな環境? Symbian とか? libstdc++ や STLport なら例外投げないように小細工して使うこともできるよ。 素人さん?stlは例外投げれないと使い物にならないよ 正直>>107 みたいな半可通は黙ってて欲しい そういうカキコみた新人が勘違いする >>108 各種アルゴリズムなんか例外なくても使えるだろ。 auto_ptr だって使える。 コンテナは例外投げれないとつらいかもしれないが、例外を abort() にマップすれば 十分なことだってある。そこまでやってダメなときに、ようやく自前でコードを組むことに なるんだ。 十把一絡げに「STL」と呼んで捨てるのはあまりに非効率。 コンテナの使用頻度が一番高いと思うんだが・・・ つか、例外使えない=コンテナ使えない(使いにくい)=可搬性低い、 で別に間違ってないだろw >>110 >例外を abort() にマップすれば 勘弁してくれ、頼むからいますぐプログラマやめてくれ >>111 それを言うならSTL以前に 例外使えない=new使えない(使いにくい)=可搬性低い 例外使えない=コンストラクタ使えない(使いにくい)=可搬性低い つまり C++ は可搬性低いってことだな。 >>112 それでダメなら〜って書いてるだろ。ダメなこともあるだろうが、十分なことだってあるんだ。 スレッドセーフで例外セーフな新しいライブラリを誰か作ってくれ。 >>114 例外が使えない処理系や環境は(仕事で)よく見るが 例外をabortにマップして十分なプロジェクトは見たことない まあそんな小さい仕事は請けたこと無いから、 もしかしたらabortで許される仕事もあるのかも知らんけどw 俺からしたらそれは超レアケースだな、つかありえない >>111 その後に「=使い物にならない」とは続かないって話だろ。 >>117 ちょっと無理矢理すぎないか? 普通の感覚ならSTL使えるって言われたらコンテナ使えることを期待する 俺もコンテナが使えないならSTLなんかいらないし、 そういう意味で使い物にならないってのは全然言い過ぎではない STLはStandard Template Libraryですよ どこにもコンテナなんて出てこない テンプレート使ってる標準ライブラリは全部STL ところがどっこい basic_stringはテンプレート使ってて、かつ標準なのにSTLじゃないstream系も同様 この辺全くもって不条理だ でもbasic_stringなんてSTL入りなんかせずに消えてしまえばいいと思います そもそもSTLはC++用語じゃないと何度言えば(ry これだろ。 562 名前:デフォルトの名無しさん[sage] 投稿日:2005/05/05(木) 02:58:39 "STL"なんて呼称の範囲は、C++の標準ライブラリに 取り込まれてしまった今となっては明確に区切れる物では無い。 HP STL や SGI STL のことを指して言ってるのかもしれないが、 今使われてるのはそれらをベースにしたC++標準ライブラリだ。 範囲が明確に決まってるかのように、含まれるだの含まれないだの言うのは時代遅れだぞ。 CSL(is an acronym for the Cplusplus Standard Libraries)っていう言葉を流行らせよう!! Javaは引数の参照渡しすらできないVB以下の言語 JavaがVB以下であることとC++が難しいことに何の関係があるのか説明せよ 日本語は本質的に論理構造を正確に表すのには向いてないからな プログラムとは相性が悪い んなこたーない 本多勝一の「日本語の作文技術」はイデオロギーと関係なく一読しておく価値がある >>140 その作文ってのは、架空のことを事実であるかのごとく文章を作るってことだろ。 >>142 俺も偏見もってたけどまともに技巧的な内容。 文節は長い順に並べるとか >>142 まさかプログラマ板に脊椎反射国士さまがいるとは思わなんだw まさかプログラム技術板をプログラマ板とか言う 底辺な人がまだ生息しているとは思わなかった >>143 んでも自分が読むときは ただ要点を箇条書きにしてくれるだけでいいのにとか 思ってたりしない? 特に急いで内容を把握しないといけないときは >>145 そんな言葉の使い方一つで底辺とか何とか人物像まで決めつける、 星座占いで人生決めるレベルの人がいつおは思わなかった。 分かったからもう書き込むな。 つーかわざと誤字入れてんのか?w き うぼ ま ら く っ なの て いす る カす んダウむ だウンみ い ン トち つ で は お まぁお前らは実は煽られてるだけで 真に煽っているのは俺だから / ̄ ̄ ̄ ̄\ ( 人____) |./ ー◎-◎-) (6 (_ _) ) カタカタカタ | .∴ ノ 3 ノ ______ ゝ ノ .| | ̄ ̄\ \ / \__| | | ̄ ̄| / \___ | | |__| | \ |つ |__|__/ / /  ̄ ̄ | ̄ ̄ ̄ ̄| 〔 ̄ ̄〕 | | ̄ MS-BASIC勉強をしている>>157 、がんばれ、ガンバレ! ADLやSFINIEで悩んでる人のスレかと思ったらがっかりですよ 各コンパイラメーカーが便利機能を追加してあげているのに、 開発者が移植性を気にして新機能を使わなかったり、 みょうちくりんな回避策(#ifdefで切り刻む)を施したりするのは、どうかと。 何が言いたいかって、#pragma onceくらいいーじゃねーかよ。 #pragma onceは標準じゃないし絶対標準にしないって禿も言ってたし あきらめろ リンク(ファイルシステムの)とか考えると 「ファイルの同一性」 をどう判定すべきか決めるのが難しいとかいうことだっけ? それとは別に、#includeを潰してもっとましな仕組みを入れたい、みたいなことを言っていなかったっけ? そんな凝ったテクはいいから、__FILE__、__LINE__の延長で__FUNC__を作ってほしいな 意味はわかるでそ 次期C++で導入予定だけどな。__func__って名前だが。 わざわざプリプロセッサでネームマングルしないでしょw C++ゲームのシーンなんかで、enumをたくさん使い、 switchで多分岐するのはよくないらしいが、 それを継承?を使いどう解消すればいいかさっぱりだ。 >>172 サンクス。 ポリモーフィズムで調べていたから、近い所だったようだが、 こっちの方が解説に分かりやすい例が出てくる。 まだ理解がないから、わざわざクラス(ファイル)を たくさん作ってめんどくさいと思ってしまうが、 辛抱してStrategy風にのっとってやってみる。 シーンの変更時にデータの受け渡しがある場合が 少し厄介なんだよね。>Strategy パターン そのあたりよく考えて設計する必要がある。 ttp://www.e-chishiki.com/jpn/articles/programming_languages/cpp/internals_of_virtual_functions ポリモーフィズムはここのサイトが基本的な書き方? クラスの宣言をmainに書いているけど、 ゲームシーンの切り替えに使う場合、 親クラスのshapeの中にprivateで書けば、 サブクラスの切り替えが制限できるから、 使いやすいとか思ったり。 ただ、自らの中に自らを書く感じだから、危険な気もする。 >>174 まだ、データは別のクラスのpublicな位置に置いているが、 これもまたものすごくてこずりそうだ・・ public メンバ変数は害悪だ。 カプセル化を完全に無意味にしてしまう。 よく覚えておくように。 >>176 そうして private: int foo; public: int get_foo(){return foo;} void set_foo( int v ){ foo=v; } と全てのprivate変数に対して書く輩が出てくるw まあ、どうしても必要なら書いてもいいけどね・・・。 ブレーク貼れるくらいのメリットはあるし。 >>176 玄人気取りのニワカがよくそう勘違いしてるよね get_ set_書くならpublicフィールド ちぃ覚えた protectedのこともたまには思い出してあげてください C/C++ Coding Style Thread http://pc11.2ch.net/test/read.cgi/tech/1096687703/347 347 名前:デフォルトの名無しさん[sage] 投稿日:2006/05/01(月) 09:21:05 >>346 protected は中途半端。 方針としては中途半端。 「見えちゃ嫌だけどちょっとは見えたほうが」 そんなの微妙すぎ。 クライアントが「C++で」といってくるもんだから Cのみで書いて、拡張子だけ"cpp"にして納品してみる。 >>185 それはだめだ。externなどの扱いが異なるのでコンパイルエラーになる場合がある 全部 extern "C" { : : : } でくるめば無問題。 リンカの問題はそれでいいけど 言語仕様の微妙な違いが悪さするともう… 実際、今日見たソースにはdeleteという構造体メンバがあった。 仕方ないので、 extern "C" { #define delete delete_ #include <foo.h> #undef delete } してみた。 これが関数名だったりすると、C でラッパ巻数用意しないといけないんだよな C++って、親が酔っ払って作った不貞(ジョーク)な子供なんだろ? プロレタリア文学を読んで悦に入ってる「なんちゃってインテリ」 と同じだって気づけよ・・・C++信者君(w プロパティよりもPascalみたいに関数内関数のほうが必要だ。 C++ほんとにみんな使いこなしてるのけ? とりあえず人に提供してもらったライブラリ使ってるだけなんじゃないの? Cだと書きなぐれるものが、C++でクラスの継承なんかを本気で使うと すごく時間がかかってしまう。クラス内部で宣言した変数をめぐって スパゲッティになりかねないし。どんな使い方をされてもメモリリークに対して ロバストなクラスを人に提供するなんてのはすごく大変だし、神経も使う。 そもそも開発現場が派遣の寄せ集めみたいなとこばっかだからスキルにばらつきありすぎてC++導入は難しい ってのが現実かも >>196 単なるお前の勉強不足 デザパタとUMLはこれから間違いなく主流になるぞ なんでC++ってCとの互換性を持たせようとしたんだよ せめてCの構文はextern "C" {}の中だけってことにしとけば もう少しシンプルにできたと思う >>201 C++を使わず別の言語を使えばよろしい。 C++のできた経緯からは当然のこと。 なんせC++の原形はC89以前からあるからね 互換性を保てと言われてもそういう経緯ではね・・・ 関数プロトタイプとかconstとかは、CがC++から取り込んだ そしてC99は誰にも使われない言語になってしまった >>41 おいおい… せめせて ==ぐらい使ってくれ…orz なんで今頃そんな大昔の書き込みにレス返すのか知らんが、 突っ込むなら「C++の戻す値はC」 ろくにオブジェクト指向について考えないで テンプレートとかの悪用および勘違い技術ばっかり身につけてる奴ってどうよ。 始めは継承もテンプレもなかったんだからオブジェクト指向がどんなもんかそこからわかるはずなんだが。 いや、別に使うなってことじゃないよ。 どうも変な方向で覚えてる奴が多いんだよな。 STLやらBoostやら覚えることにはやけに熱心だけど 肝心のオブジェクト指向はさっぱりわかってなくて 設計が絶望的にヘタクソってのがいてちょっと心配。 >210 オブジェクト指向とテンプレートによる汎用プログラミングは軸が別じゃね? どっちか使ってもいいしどっちも使ってもいいというのがマルチパラダイム変態言語 C++ の利点にして欠点じゃないかと。 別にテンプレートがどうとかじゃなくて、単に使うことに偏りすぎて設計が下手ってだけじゃない? どうせテンプレート使った設計させても下手だよね? C++が悪いだけだろ オブジェクト指向やジェネリクスの精神を忘れて機能だけを悪用できてしまうのが悪いだけ もっとまともな言語で再教育した方がいいよ 時には悪い事もする必要がある、がC/C++のスタンスだから そろそろ、C/C++レベルで使える言語が出て欲しい。 ハードウェアに近い分野での。 C++をちゃんと理解してるやつなんて、日本に何人もいないだろ。 つまり、テンプレートバリバリのプログラムを作って、 ワケのわからんエラーが出ても、すぐにバグの場所がわかるぐらいに。 Google、コード検索から分かった統計を紹介 http://japan.internet.com/webtech/20090724/12.html >たとえば、「オープンソース プログラムは、 >『C』と『C++』のどちらで書かれたものが多い?」といったような質問だ。 >答えは C 言語ベースのプログラムで、C++ の倍以上あるという。 C++涙目w 当たり前だろ 普及度でCに勝てる言語なんてあるわけないし 今後もおそらく永遠に現れない だいたいCの正統後継者であるC99ですら10年経った今でも マイナー言語だしなw C++ で C スタイルキャストを使ったのがダメなんだろ。 安全かみそりしか使えないような奴が、 プロの包丁は危ないとか言ってるような話だな。 空前の床屋ブームで理容師不足ともなれば、 まともに剃刀も使えないレベルの奴にも仕事をしてもらわねばならんわけで。 そうするってーと、そいつらにとって「安全剃刀は素晴らしい道具」なんですよ。 坊主頭専門店か 質で差別化は難しいし、となると安さと早さの勝負になるか ちゃんと修行してきた床屋には所狭しと飾ってある賞状やトロフィーの類が一切なく 儲けを目当てに他業種から参入してきた営業上がりの経営者が ブーム終了とともに坊主頭専門理髪師を残したまま去っていく たとえがぴったしなのが悲しい 安全剃刀で事足りる分野に颯爽と紛れ込んできては頚動脈を切って去っていく これがC++プロ(笑) 昔は、覚えたての継承やら、例外処理やら関数オブジェクトやらデザインパターンやら 抽象基底クラスやら使って、不必要にソースコードを難解にしていたなw 後悔はしている 今は継承構造もなるべく単純にし、不必要な機能は使わないようにしてる。 折角ある機能なんだからJWordとかも積極的にインスコして使わないと勿体無いよな >>230 あなたみたいのをC++上級者というんだと思う アセンブリの方が難しい 何でも出来るけど何にも出来ない C++って難しいのか? Perlを覚えようと頑張ってるけど、C++より難しい気がする... perlは記号が多すぎだな。 PHPみたいにすっきりしてればいいんだが。 C++は信者ですら簡単だとは言わないけど Perl信者はアレをわかりやすい読みやすいと困ったことを平気で言う分タチ悪い >>236 書くだけなら簡単。 だけど、人の書いたコード&過去の自分が書いたコードは読みたくないw まあこれは”やりすぎた”C++プログラマでもあることだけど。 プログラミング言語の特徴を視覚的に比較する ttp://d.hatena.ne.jp/KZR/20091001/p1 もうdefine使いまくるのはやめようぜええええええええええええええ 意味わかんねーんだよおおおおおおおおおおおおおお #ifdefの嵐が>>245 を襲うw でも確かにSTLのソースとか異様に読みにくいよな… >>246 俺が引き継いだプログラム書いたのはおまえか! 定義したマクロの関数2〜3回しか使わないならベタ書いてくれてでいいから! いろいろ使いたいなら普通に関数定義してくれればいいから! constで検索してまったくひっかからないとか冗談だろ!? もおおおうううくぁw背drftgyふじこlp;「’」 >>245 boost 方面にも言ってやってくれ. オブジェクト指向ってたいした事ないよな C++のクラスもCの構造体に毛が生えたようなもんだし http://codepad.org/EGbmhw93 クラスのoperator deleteが静的型で呼び出されるなんて今日初めて知った。 >>250 いや、それ未定義動作だから。 5.4.5 p3 > if the static type of the operand is different from its dynamic type, the > static type shall be a base class of the operand’s dynamic type and the static type shall have a virtual > destructor or the behavior is undefined. >>250 ところが、Aに仮想デストラクタを設ければ、B::operator deleteが呼ばれるようになる。 なお、たとえBがoperator deleteを定義していなかったとしても、 基底クラスにアップキャストしたポインタを通じてdeleteするなら仮想デストラクタが必要。 結局、publicで非仮想的なデストラクタを持つクラスは継承すんなという証というお約束になっている。 C/C++は未定義とか処理系依存が多い印象 はっきり禁止と言えばいいのに いろんなハードや処理系に対応しなきゃならないから仕方ない 移植性のあるプログラムを書くためには、-2^15〜2^15-1の範囲に収まらない可能性がある整数を扱うときには、 intではなくlongを使う必要がある。 けどこれは、例えば、intが32bit, longが64bitな処理系では、無駄以外の何物でもない。 そうか!!! 俺がオブジェクト指向を理解できないのは、 > 基底クラスにアップキャストしたポインタ なんて言い方が平然とまかり通っているからだな!!! 底には落ちろよ!!! なんで昇ってるんだよ!!! UMLは日本発祥じゃないから 現地語で考えないとだめだ 悲しいかな、日本人なんだよ俺は 分かってる奴がちゃんと訳せよ ツリー構造とかも上に根があって下に枝が生えていくよな 向こうの国の植物は皆そうなのか? Smalltalkではスーパークラス、サブクラスと呼称している。 で、お前らと同じ事を思った我らが禿はC++で代わりに基底(Base)クラス、 派生(Drived)クラスという用語を作ったわけだ。 あるよ。ついでに言えば、super-は上とか超えって意味だ。 つまり、ジャスコなんかは超市場なんだな。 GUIを暮らすライブラリで習うと 継承関係の親子と Window関係の親子が ごっちゃになって訳分からなくなる 翔泳社から2月3月とテンプレート関連の本が続けて出たけど このレベルの本を書ける日本人の物書きっていないんだよなあ。 エビステーメーがC++標準化委員会だっけ? ただ所属してるだけのような感じだけど。 何年経っても文字配列の大きさをチェックしない、 知り合いプログラマを見てるとC,C++には欠陥があるように思える。 少なくとも文字列処理に関しては。 そんな馬鹿は C で文字列つかわなければいいだけ。 >>268 C++にはstd::stringがある。Cと一緒にしてはいけない。 そんな奴はstd::stringすら適切に扱えないんじゃないだろうか クラスはいらねえ! ネームスペースだけCに追加してくれんか? >>274 auto_ptr使えば。 それで不十分なら、GCのある言語使え。 C++でマルチスレッドは不可能に近いってのは有名な話 >>280 WIN32 API システムプログラミングという本にマルチスレッドの方法が いくらでも書いてあるわけだが しかも同期を取る手段まで網羅されているんだが >>284 そういうのは移植性低いから openMP とか使うんだよ。 まあそれでもメモリ管理についてはどうにもならん部分がでそうだけど。 >>284 Win32APIの話なんて誰もしてないと思うけどw >>287 俺がしてるの わかった? Win32 APIならマルチスレッドは出来る 他のOSは知らん 設計者であるお禿さんが難しいって言ってるんだから難しいんだろうな。 >>286 「不可能はないんだからアセンブラですべて組めばいい」 とか言ってるやつがいたらどう思う? 現実にC++で書かれたマルチスレッドのプログラムは Windowsに限らず大量にあるわけだろ。 それを前にして、「不可能」と言い張るのはなんか意味があるの? >>292 馬鹿だと思う 「不可能」という自分の言葉に酔ってて現実が見えてないだけだよ 多分無職だろう 偶然動いているだけと言う事実に気付けない馬鹿ばっか >>294 偶然動いているという事にして自分の心の安定を図りたいだけの馬鹿発見 C++に問題はなくて人次第なのに、そこに不可能って単語使っちゃうって馬鹿じゃないの 紛らわしいから死ね C++よりも簡単にマルチスレッドプログラミングをできる言語もあるかもしれないが、 C++でマルチスレッドプログラミングができないというわけではない。 そもそも、マルチスレッド動作させるだけならそれほど難しくない。 同期を取る必要が出てきて始めて、難しくなるんだ。 マルチスレッドの何が難しいの? 必要に応じて排他処理させるだけでは。 だからC++でマルチスレッドができないと言ってる奴は馬鹿だって 放っとけ 不可能に近いを不可能と読み替えて勝手に怒り狂ってる奴って何なの そうだね。 誰かさんにとって不可能に近いってことなら単なる事実だろうし、 赤の他人に全然関わりのないことだよね。 メモリをだだ漏らし共有データを壊しデッドロックを場当たり的に躱しつつ ごく短い時間なら走れるプログラムを「動く」と呼んでいいなら信者の意見も正しい >>299 必要に応じるのが難しいと言ってるのに、キミは馬鹿なの? >>304 だからマルチスレッド関連の本にはちゃんとデッドロック対策も スタベーション対策もレース状態の対策も書いてある 本だけ読んで実際には何の実践もした事が無いデッカチ君は帰りな >>307 はあ?実践してますが何か? お前こそC++でマルチスレッドのプログラム書いた事ないだろうが あーはいはい 自分一人でシコシコ書いてる分にはさぞ簡単だろうなw 誰もそんな自明な事を言及してないと思うが 会話レベルが高くなってきたwwwwwwwwwwwwwwwwwwwwwwwwwwwwww >>310 複数人で、C++で、マルチスレッドプログラミングをしているの? まるちすれっどだけでも不可能に近いくらいむずかしいって言い放っちゃうアホもいるほどむずかしいかもしれないようなに気配のするものなのに><; >>310 お前みたいな単純バカだと人生楽だろうな でもプログラミングは出来ないだろうよ どうせマルチスレッドなんてやったら逆に遅くなるような 短いコードしかいじってないんだろ。 数年の継続案件で延べ10人以上が関わっててコードが数十k行ってても同じ事を言えるかだよな マジでいまの2chってなんなの???? >>316 なんでこういうゴミみたいなレスをだれも叩かないで放置してんだよ 叩くのが飽きたから??? それとも間違いがわからないから???? 本当にイラつく 死ね 間違ったレスが放置されてそのままになった時 真実がわかるのは初めから知っている奴だけ ゴミみたいな学生が2chの情報を鵜呑みにするから、リアルで意味わからない事を言い始めるんだな うるせえよ屑 レス順的に放置したのはテメェだろ そのまま脳卒中で死ね マスターベーション中毒患者 C#病院に行くらしいまで読んだ! とりあえずFirefoxやChromeがC++で書かれていることを思い出そう オナニー後にふき取ったティッシュが亀頭に張り付き剥がす時に痛いという衝撃の事実。 まんこにトイペが付いてることがあるので舐める前に良く確認しなければならないという衝撃の事実。 オナニー後に精子が糊の役割を果たし尿道を塞いで尿が二股に分かれて出てしまうという衝撃の事実。 C++はネーミングが簡単すぎるだろ、難しさから言ったら C++++++++++++++++++++++++++++++++++++++++++ これぐらいだろ。 C++ が後置なのは C++ != D にするため >>343 C++の方がDよりはるかに歴史があるわけだが CはBの次という意味だが、 これは単にアルファベット順で次だというのではなく、 B言語の元になった「BCPL」の順番で考えて次になっているからというもの しかし、アルファベット順で次だという風に誤解されてしまったため、 次の言語をP言語にし辛くなってしまった そこで、次の言語はC++とすることによって、 次はDじゃないよ、つまり、C++ != Dであるということを強調したのだ 民明書房 「死威腐羅巣腐羅巣の歴史」より C#はちょっと上どころかC言語とは完全に別の方向に進んだ言語だけどな なんで++CじゃなくてC++になったのかって問題が C++Primerの練習問題になってた気がする 超入門書に書いてあるよくあるたとえ話 ポインタを実際の住所に例える クラスやインスタンスを車の設計図と実際の車に例える オブジェクト指向の本とかでよくある「動物」で、犬が「ワン」猫が「ニャー」等 変数は「箱」です こういうのは誤解を招くし余計わけがわからなくなるからやめたほうがいい。 オブジェクト指向の説明にAnimal/Dog/CatやらShape/Circle/Rectやら最初に使い出した馬鹿は誰なの? 笑い所が分からんな 毛唐の感覚だと理解出来るのかな >関数の頭にプログラマの名前が付く これはないが 自分の名前.so は作ってしまったことがある C++は環境作りの段階で躓く。 たんにコンパイラをインストールするだけなら簡単なんだけどさ。 ちょっと変なライブラリを入れようとすると すんなりいくときは行くけど、はまると2、3日はヘーキでストーンってすっ飛ぶ。 >>359 javaのドメイン反転ネームスペースじゃないけど 会社名を入れるってのはよくやる。 jp.co.xxxx.hogeみたいなのをjp_co_xxxx_hoge.oって。 すんげー冗長でかっこ悪いけど。 >>351 あれはもはやギャグだな コードと動作のほうが百倍分かりやすい >>364 読者が、分かった気になりさえすれば良いんだろう...たぶん 変数はともかく初心者の頃は「ワン」「ニャー」 でよくわかったけどな。is-a関係だけだけど あれで分からない奴はワンニャー並みっていうメッセージだよ これ ; デリミタっていうんだけどさ、これをつけなきゃエラーになるような そんな言語使ってる奴ってどうみてもゴミだと思うんだけど もしかして「;」これ打ち忘れてコンパイルエラー出すのが楽しいの? そうか、二度と話かけんなよ ゴミが何いってもゴミ 天使#test_s 「天使の煽り」の提供でお送りしました ハーベイ・M・ダイテルの本と林晴比古の本とどっちがわかりやすいですか? そして、グローバル変数だらけのCコードに回帰するわけですね、分かります。 >>372 なんでもpublicにしてる時点でグローバル変数みたいになってるから大丈夫 「アクセサは免罪符にならない」ってのも記事に付け足すべき フィールドごとに getter/setter を用意するな ttp://d.hatena.ne.jp/bleis-tift/20090126/1232949719 はーぁ、deleteしたらNULLに〜・・・ なればな・・・・ 良いのにな・・・・ ま、もうなれたから良っか >>377 delete はスマートポインタの仕事。 そんな動作を欲しがるほど自分で delete を書いてるのが間違い。 スマポとintrusive_ptr(インポ?)があれば大抵の事は済む。 なんとかポインターが多すぎる コンテナとイテレーターだけでいいだろ デザインパターンの実現でのために頻繁に使う相互参照や循環参照を今の企画だと標準で楽に安全に実装できないことがC++を難しくしている 循環参照を楽で安全に扱おうとしたら自動GCしか方法がなくね? C++的にはまだ今後の課題だな すでに計測してあるのがあるなら それにこしたことはないし 自分で計測だと自分の環境でしか測れないじゃん 自分の環境以外の計測結果を信じて自分の環境のプログラムに反映するのかい? 変数 C がインクリメントされ いつの間にか Cの値(C言語の素晴らしさ)がとてつもなくデカくなっている件 ポインタは電話番号です(キリッ って参考書がなぜか高評価なんだよなぁ >>391 kwsk 流石に電話番号は無いわ…… >>392 元々はCでC++コンパイラが書かれたんじゃなかったっけ >>391 住所(アドレス)ですならわからんでもないが・・・。 >>396 郵便番号だけ書いてもハガキ届かないから駄目じゃね? 公社の時代は、執念で、宛名のひとを探して届けてくれたそうだ ずうっとおなじ家に住んでたら、しってるひとがいるもんだ 番地も書いてないざっくりした住所でも まちがった住所でも 郵便局はがんばって届けてくれてた記憶はたしかにある。 地域に根ざしてたのね。 マイコンの経験があれば、ポインター≒間接参照(又はインダイレクトアドレッシング)、で通じるけど、 ハード知らない者に、ハード寄り言語を教えるのは工夫が必要。 >>401 おまいらネラーみたいに面倒になって捨ててた局員もたまにいたけどな 田舎だと、村長より偉い、殿様局長様だったから、 宛先の違う手紙など、コアダンプしてやる! スレタイの「難しい」ってどんな所なんだろ? 俺の場合だと、Cで組みにくいロジックに当たった時にC++で解決、ってやってるから特にC++が難しいと思ったことは無いが。 Thursday, February 14, 2013 Dev-C++ 5.4.0 released http://orwelldevcpp.blogspot.jp/ 参照はC++で最悪の仕様 暗黙でアドレスが渡されるとか、マジで正気を疑う 関数を呼び出す側のコードを見ただけでは 引数が書き換えられる可能性があるか否かわからんのがクソ > 参照 非 const 参照は C++11 から std::reference_wrapper を使えば、呼び出し元が std::ref() になるからそこらへん問題なくなるんだよね? >>411 へえ、配列渡しを見ただけで書き換えられる可能性があるのか分かるのか へえ 関数呼び出し側だけをみたら 書き換えられる可能性があると考えるしかないだろ馬鹿か 設計の悪さを言語の所為にするなってことだね。 どの途自然言語に比べれば自由度は低いんだから。 配列や特定のメモリ空間を指しているポインタなら、呼び出し元が 関数にアドレスを渡していることを知っているから その先が書き換えられることが予想できる 参照は普通の変数のコピー渡しのように見えるくせに 呼び出し先にアドレスが渡っているという極悪っぷり アドレスが渡っていると思い込んでいる辺りが間抜け。 そんな規定はどこにもないし、アドレスを渡さなくていいからこその最適化が行なわれるわけで。 まず、C言語をそこそこやる事だな。その次にオブジェクト指向を学ぶ。C++はそれから。 確かに最初にいきなりC++はちょっと難しい。いきなりやるとC++を使いながらオブジェクト指向と 無関係なソフトを組む。 JavaとかC#を先にやると変な癖がつくようにも見える。 >>419 ある程度同感。需要があるんだろうけど Cを起点に考えると、C++への方向と、Java/C#への方向とは、進化の目的が違うからね。 C++・・・システムプログラミング向け。ハードの進化も利用。 Java、C#・・・アプリケーション向け。ハード詳細を知らなくても済む方向。 当初のJavaはC++の悪いところを反面教師としたんだろな。徹底的に。 中途半端なジェネリクスなんて無くて非常に気持ちよかった。 C#はさらに、ひょっとしたらJavaに不満を持った人の支持を得ようという狙いもあったんじゃないか。 値型とか、そりゃ欲しいのはわかるが、それでrefとかoutとか、さらにdelegateとか。 うんうん、そういうの欲しい人居るんだろうけどね、というある種の突き抜け感あり。 refとoutはちょっと良いかも知れない 呼び出し側に規制するという意味で JavaはC++とは全く似ていない。Cとも似ていない。 似ているのは見てくれだけで中身はSmalltalkの方が近い。 演算子の優先順位すらないウンコ言語じゃダメってことで Javaが作られたからな ネイティブ無しでコンピュータを役立たせることは不可能だ BASICソースがネイティブのチップも有るけどな。 smalltalkerからみたJavaは がっかりおっぱいだったけどな 月日の経過とともにどんどんがっかりになっていく ぼいんぼいんのサイボーグおっぱい C++の演算子の順序は決められてた筈だが? C++はコンピュータの基本構造、オブジェクト指向の両方を学ばないと活かせない。 それでも単に手続きを組むだけでPCで非ネイテブよりは速く動くが。 JavaやC#などBASICみたいなもんだ。言語仕様が言語の限界 >>419 Javaっていつから参照渡しできるようになったの? C++が難しいんじゃなくて前提のCが難しいんじゃないの? コンピュータって機械に興味がないとポインタを覚えにくい >>436 Javaは参照型変数の値渡しでしょ。 foo(Bar bar) { bar = xxx;}したときの動きを考えれ。 テンプレートとマクロを駆使して 構文破壊してでもC++で実装したふりをする魔術師共が恐ろしい c++ <- 十字架へ磔にされたキリストと2人の死刑囚 >>440 もうC++はやめてC+++とかにしたほうがいいと思うんだよな。 メタとかジェネリックとかわかっているとのちのち生産性も上がるし、 高度なことをしていると思えるから自分はいいんだけど、 よっぽど恵まれた職場でない限り、周りからは 「これななんの呪文?」っていわれて説明したりして実は生産性が下がるんだよな。 なんか呼び方あったと思うけど単純なクラスがあるCが一番いい CもC++も独自に進化してバージョンが上がってる。Cが拡張されるとC++も互換性を保とうとする。 >>444 今度C++++++++++++++++++++++++++++ になって、またその後に++が3つ増える 悟空の戦闘力みたいに途中でどうでもよくなってしまいそう。 面接官「あなたの使える言語は?」 応募者「えーっと、CぷらぷらとCぷらぷらぷらぷらとCぷらぷらぷらぷらぷらぷらぷらとC〜」 面接官「もういいです。」 面接官「あなたの使える言語は?」 応募者「えーっと、パイソンです。ナムパイとパイパイとパイパイjaを〜」 面接官「もういいです。」 面接官「あなたの使える言語は?」 応募者「日本語のみですが、何か?」 面接官「もういいです。」 うーん、ネタにマジレスになるが 面接官が「あなたの使える言語は?」などと聞きはしない。 面接官「今C#の人手が足りてないんだけどどれくらいできる? あ、できないなら帰っていいよ」 「C++が難しすぎ」ってのはノイマン式コンピュータの仕組みを理解できないって事じゃね? 1000ページを超える規格書ということで、 ある程度の複雑さは仕方がない ライブラリと称して変なトリックをぶち込みまくったから printf文の事か?文字列型変数という物を扱っていれば理解が難しいかもしれんが ID:WP7oRJZ8 って、C++ って単語を使ってるものの、単なる C の話をしてる様にしか見えない・・ CとC++を区別しない癖が抜けなくてね。ここからがC++ですって状況は無かったからな なにこの、ID:WP7oRJZ8ひとりだけ精一杯背伸びしながら喋ってるような状況は 就職した時からVisualStudio使える連中は良いよな、苦労知らずで。 C++が使ってくれよと手招きしてる状況でアホ上司が使わせない苦労は分かるまい。 かと思えばVC++で組んでるってだけでオブジェクト指向言い出す新人のおもりとか やらされるし 小学生が三角形の面積の求めかたを連呼してるみたいに聞こえるぞw 小学生「てーへんかけるたかさわるにっ!てーへんかけるたかさわるにっ!(どやぁ」 大人「お、おう」 自分だけ苦労してると思ってやがるw オブジェクト指向という言葉を聞きかじってる分マシだろ? 俺なんかC言語も知らないズブの素人のおもりなんだが。しかも別会社の そういう奴に限って三角関数とか学校に忘れてきてるけどなww >>470 俺より苦労してる奴に言うつもりはないよ。レスしすぎた結果、叩きに来た奴が来たから 払ってるだけだ >>472 お前がな >>473 お前も苦労知らずだな。上司に手足縛られながら使える機能を使うしかない状態で 一々線引きが出来ると思ってんだからな だからノイマン式コンピュータを知らん奴しか言わんのだろ>スレタイ >>472 お前のような奴が書いた使えないコード直させられる身にもなってみろよ >>473 お前の最初にC++で書いたコードはC++の仕様を全部使い熟しているのか? 仕事中にそういう離れ業が出来ると思ってるのか? このスレの内容の技術レベルに到達して無いのよ、要は。 その後の転嫁もみっともないし、それを客観視も出来ていない。もう発言やめとけって。 >>478 だよな。 自分ひとりだけ周回遅れなのに本人、それを分かってない。 だからなんかチンプンカンプンなことを平気で言い続ける。 毎日そうやって釈迦に説法してんだろうな。 笑わせるなよ、ネイテブが書けないトーシロの集まりだろ?こいつら ポインタが分からないレベルかと思ったが、意識しないでも書く方法もあるからな 「C++で悩んでます。C言語なんて簡単です」って言える訳だ。 ここまで底の浅さを自覚できないでいるってのも凄いな。 いいよな、その程度で他人を苦労知らずだって非難できるんだから その程度で人を周回遅れとか言う方が笑いものだろ だいたい何が「いいよな、」なのか意味不明 面倒なライブラリを嫌がってた奴がいたから、ちょっと同意を見せただけで まさか同レベルと思ってるんじゃないだろうな? C++が難しいんじゃなくてライブラリが使いにくいんじゃ?>>1 難しいのは当たり前 熟練者にとって生産性が上がるように進化してるが 理解しなければいけないことはどんどん増えている 優先度が低く複雑度が高いものを導入して劣化していくコースに嵌り込んだのではないか C++って、コンパイラ・コンパイラ・コンパイラだから STLもboostもノータッチですわ 今時はC++で正規表現が使えるんだっけか 他の言語はあれは駄目これは駄目って感じで窮屈。C++は自由! あれを忘れてた、これを忘れてたって事になるけど >>500 テンプレートも例外も大好きだ・・・ なんでも例外投げる コードがとてもシンプルになってグッドです 最終的に誰がcatchするんかは知らんけど、 少なくともデバッグの役には立ってる もはやコレなしには生きられない >>501 たまにコードがググっとスッキリする時は使うんだけどねえ gotoと同じくらいの頻度だわ >>504 コンパイラについてるソース見てみよう pairなんて、ただ2個のメンバに入れてるだけ しかもムーブ付き 忙しいときにmakeとかしちゃって良いんだろか? って思ってたけど、わりと単純な仕様で低コスト pairは簡単だけど、tupleを自前で作ろうとしたら死ぬ思いをした >>508 最低限、これは知っとかなきゃダメでしょう っての以外は、必要に応じてだと思う Cと共通するような部分、基本的な言語仕様、昔ながらのポリモーフィズムって感じな やり方に加え、少しばかりテンプレートに慣れ親み、それとの違いを認識し、それに 加えて右辺値参照、ムーブセマンティクス(これらは必須)を抑えとけば、とりあえずは 十分だと思う あとは必要になってから、その都度学習する 最初から全部とか無理 面倒な技術を使う場合、大抵出来る人がラッパ組んで他の人はそれ使うだけじゃない? 今はJavaもC#もテンプレート&関数オブジェクト全盛だし 相対的に難易度は減ってると思うんだけどな 今メジャーな言語でC++固有の難しい所ってvirtual継承とムーブぐらいじゃね 細かく見ればunionとかplacement newとか色々あるだろうけどさ c++の凝ったコードを見てると上には上がいるんだなーと思わせてくれる しかしdefineが使いまくられているコードは読む気が失せる defineだけが頼みという事もあった。こりゃC言語じゃんって有様 GUI専門言語とか計算専門言語とか通信とかデバイスとかオブジェクトライブラリの標準化で楽になろうよ …でも専門に作ったはずが何でもやるようになるのもよくある話 >>516 もうどっかの標準規格団体がビシッと決めてくれないかね? 標準から外れた新しいハードを作ろうとする連中をビシッと排除することが大事 初心者会の動画を見てわかったこと C++は初心者レベルになる事すら難しすぎ 未だに難しい書き方した方が偉いと思ってる馬鹿が一番多い言語。 まあ最新の書き方の使い方を広めるために プログラムの仕事はしませんとか言い出す馬鹿がいるような言語だからな。 c++ がいかにそういう馬鹿であふれてるか表す良い例だと思われる。 C++は使う機能だけ学べば使えるようだけど 高度な機能を使ったソースを読み下して学習が捗らない 古いCのソースなら何とか読み下せるけど C++恐ろしい子 スタティックなメンバ関数からインスタンスへのリファレンスをstd::make_sharedで作ろうとしたら プライベートコンストラクタが呼べねぇって怒られた 暫く「は?」ってなった 仕方なくfriend struct __gnu_cxx::new_allocator;したらMacでビルドが通らなくなる事案が発生。 最後にはもう何もかも面倒くさくなってpublic:したけど 今ググったら継承させたクラスを関数内に作ってup-castする方法が出てきたわ。 引数無くて良いならこれでも良いんだけどね・・・。 C++は入門書すら難しすぎ Bjarne Stroustrupのプログラミング入門書の査読の感想 ttps://cpplover.blogspot.jp/2016/08/bjarne-stroustrup.html >>530 紹介されたページを読んでみたが、C++の入門書じゃなくて プログラミングの入門書で使用言語がC++って本みたいだね。 あと、内容が難しいんじゃなくて、内容が酷いという意見。 これから訳書を売り出そうってのに原書をボロクソに貶すとは 思い切った人だわ。それだけに信憑性も感じるけど。 「内部コンパイラエラー(ICE)に関するものなど深刻なものを含む110以上のバグが修正されている」 GNU Project、バグを修正した「GCC 6.2」リリース | OSDN Magazine https://osdn.jp/magazine/16/08/23/160000 よく知らないけどテンプレート機能ってマクロみたいなものだよね マクロを読んで理解したりマクロで展開されたコードを読み下すのって地獄ちがう? LISPの同期しながらネット上でやり取りするコードもマクロを使っていて 生成されたコードがボリュームテンコ盛りかつなにやっているのか意味不明な難易度だゲンナリすると言う 理解できないー学習に剥かないー当然不具合の発見も困難な感じ >>533 マクロだと地獄になるから そうならないようにしたのが テンプレートじゃね? マクロ地獄から抜け出せたと思ったらテンプレート地獄に堕ちた、みたいな。 Cよりは簡単だと思うけどな Cはいちいち「そんなのわかりきってるだろ」みたいなことまでつらつら書かないといけないのに C++は簡明に書けるし 学生時代にCのレポート書いてるときにめんどくさくなって、楽だからって勝手にC++で書いてたら、しばらく担当教が授気づかなかったな すっかりCの仕様忘れてしまった。 CよりC++の方がずっとわかりやすくない? 書くのは楽でも読む方は苦痛ってプログラムになってそう。 list実装してこいって課題でstd::list使うマンやってたなーw ラムダでつまづきました。 どこかよいサイトか書籍ありませんか? >>540 「ラムダ式 C++入門」っていうサイトが分かりやすいよ。 自分で書ける程度にはなったが 読める程度には至らない。 知らない機能、文法が多すぎる。 入出力イテレータなんて使った試しがない。 STL難しすぎ。 C++ほど機能が煩雑な言語って他にあるのか? テンプレートやスマートポインタのような基本的機能もそうだが、 戻り値の型に依存した例外処理、引数の参照渡し、new()との相性の悪い*なしクラス型など、 後発の言語が採用しなかった一貫性の無い仕様や、 #defineマクロ、グローバルstaticやヘッダとソースの分離などの70年代の因習をそのまま残しており、 しかもC時代に由来するmalloc/free、typedef struct、グローバル関数などをそのまま使う人が多い。 標準ライブラリにもstdio/iostreamのような重複が全体に生じている。 それに加え、ラムダ式やジェネリック、右辺値参照、constexprなどの機能拡張も進んでいる。 STLやBoostなどのライブラリも加えればきりがない。 そのくせまともなガベージコレクションはない。 実際のプログラミングではコーディング規約で一貫したルールを定め、余計な機能は使わないようにするのが普通だが、 やはり現代的な言語に比べるとずいぶん使いづらい。組み込み用途、DLLやドライバの開発以外では用いるべきではないのかも。 スマホでマイクラがサクサク動くような時代にGC積んでない言語って正直厳しいと思うの… それに組み込み系でも別にc++なんて使わなくてもcで足りるし でもGCを積んだら積んだでc++の存在意義が薄くなるしそれなら他選ぶよってなるわ objective-cとswiftみたいに代替言語でてくるかもしれんし(使った事無いけど) 結局所詮道具なんだからシンプルで扱いやすいほうがいいに決まってるんだよなー c++erの行き着く先はスパゲッティ職人っすかね C/C++ は低級が売り これ以上複雑にしなくていい GCなんて余計管理が困難になる気がする。 GCは不要。 objective-cは{}じゃなくて@を強制されてひたすら読みづらいし構文がクソきもいけど そこらへんをc++かjavaに近づけて appleじゃなくてWindows(とLinux)が採用してればobjective-c使ってたわ どうしてもCocoaかiOS周りにしか使えないからクソなんだよなぁ まあそれでもcのライブラリが潤沢だから使おうと思えば使えるけど 言語自体はシンプルだから、実質apple専用ってのが残念だわ 一応WinObj-CがあったりGNUstepがあるのはしってるけどmacosと同等につかえるわけじゃなし swift完全移項して空気になってしまうなら悲しいなー 高級言語は高級側を目指せばいいけど、CやC++は低級を保ってほしい >>548 そういうとこにすら表れてるよな 物事を複雑にして喜んでるようなスジの悪さが あんなクソみたいな表記のラムダ式持ち込んで一体何がしたいんや(笑) 右辺値参照(笑)ムーブコンストラクタ(笑)型推論(笑) >>553 それみんなコードが簡潔になる機能じゃん。 548 :デフォルトの名無しさん [sage] :2017/06/19(月) 09:36:34.36 ID:S/5ZPkdK C/C++ は低級が売り これ以上複雑にしなくていい 仕様が複雑だから理解できない、っていうのをdisる理由にされてもな。 コードが簡潔になる事が重要。 コードが簡潔になることを最重要項目としてほしくない、CやC++の役目はそうじゃない という主張 アセンブラとの親和性、非常に低レベルな環境への対応、命令レベルの速度チューニング、... そういう低級言語としての役目が重要であると >>557 C++ の時点で「アセンブラとの親和性」とかあり得ないんだが‥ メジャーなコンパイラですら規格に対応しきれてないのにさらに仕様を増やすとか、規格自体が目的になってる感じで 私自信は規格書も読んだり、積極的に新規格についていってるつもり >>558 C++とアセンブラの混合コード、よく書くけど >>560 それは extern C なんでしょ? 別に低レベル性を犠牲にしているわけでは無いのだからデメリットは無いでしょ 機能追加で便利になってるのに、何が複雑なのかわからん 仕様が理解できないって意味で複雑って言う主張なら、使うなとしか c++至上主義者達は難解なパズルを解いてエレガントにプログラムすることが全てで 可読性とかそういう他人のこと考えてないとこないですかね・・・? 追加する仕様の方向性もまさにこういうとこが見受けられるから文句も言いたくもなるわ〜 別にc++つかっててもできるだけシンプルに見やすいようコーディングしてる人は好きよー C++はF1マシンみたいなもん ちょっと近所に買い物するのにわざわざF1マシン乗りたくないし しかもC++は速いけど脆いマクラーレンかな? pythonとかjavaが人気なのは 上質なリクライニングシートにクーラーとカーナビもついてるからなんだよなぁ プログラムは、小さくて速いのがいい。エレガント、可読性なんて二の次だ > 機能追加で便利になってるのに、何が複雑なのかわからん そういう感覚なんだろうなw 何が複雑かのセンスがそーいう状態なんよ 俺が何を言ってるかも、多分分からんやろな C++の書籍って、浅い入門書か、すでに使いこなしてる人向けの高度な本の両極端なイメージ やはり、コードの字面から動作を予測しやすいというのがわかりやすいプログラムなんだと思う。 そういう意味で、テンプレート、オーバーロード、SFINAE、ADLなんかを駆使してドヤッてるC++プログラムは マクロ使いまくりのLispやCなみにわかりにくい。 >>566 実用的かどうか。これに尽きる 自己満のゴミプログラムなんていらない 複雑と思うなら、その機能を使わなければいいだけでしょ 低レベルさに加えて、流行りの高級機能も使えるという、「選択権」があるのがC++の良いところなんだから 自分の理解不能な機能を見て、ドヤってると感じるのは劣等感じゃね? もちろん、普通に関数作れば良いところでlambda使って無駄に読みにくくしてる人がいると言う事実には同意する 例えばマクロを多用したプログラムが理解しにくいというのと、マクロの機能を理解しているかどうかってのは別の話。 言語機能自体を理解していたとしても、わかりにくいプログラムはわかりにくい。 >>573 にlambdaを挙げなかったのは、lambdaはそういう意味での分かりにくさは比較的少ないから。 >>575 が一体C++で何を作ってきたのかが疑問だな お前C++の良さを語れるような立場じゃねえよな 無理に使わなくてもいいというのは同意だけど 例えばメンバとして持つものにstd::tupleなど、ムーブをサポートしているクラスを想定して ムーブコンストラクタ、ムーブ代入演算子など定義するけど 「それ以外ほぼ何もしない」クラス作ってドヤってる人(サンプルコードの話ではない)は最近よく見かけるんだよなぁ・・・w セオリーや流行ばかり追いかけて実用性皆無なコードしか書けない趣味グラマ?ばかりが 最近C++界隈で目立っている気はする。 ある程度なんでも出来るようになれば言語のことはどうでもいいから、 結果そういうのばかりが目立ってるのかもしれんけど >>576 具体的に言うと、どの言語がわかりやすいの? 煽ってる訳ではなく、純粋に意見が聞きたいだけよん。 絶対的な順位というのは決められないだろうけど、少なくともCはC++より分かりやすいよな。 a = b + c; こんなコード片があるとき、Cならここで数値かポインタの加算が行われると推測できるし、あとは オーバーフローの可能性を気にする程度でいいけど(マクロが使われていた場合は別として)、 C++だと選択肢が多すぎて判断が難しい。下手したらコード全体を隅から隅まで調べないと実際の 動作を把握できないかもしれない。 書きやすいと読みやすいは別物で C++はC以上に書きやすさを求めた結果 読み手に優しくないコードが書けるようになったのは事実だよね 精通すればスラスラ読めるようになるってんならまだしも 単なる独りよがりなコードも書けるから手に負えない >>580 ああそういう事ね。 確かにわかる。 まあ、その点だけで言うと、その operator を提供しているクラスを信じられるかどうかって点に行き着く気がするけどね。 プラスの意味論 (セマンティクス) に逆らう機能を実装するような、質の悪い設計なのかって言う点から、実際ちゃんと動くのかって点ね。 セマンティクスに逆らわない機能で、単体テストされていれば、基本的に疑いの眼差しを向ける必要はないはず。(カプセル化) >>581 ああー、同意。 うまく使えば読みやすいのに、慣れない人が使うと酷いことに。 なるほどー、わかってきた気がする。 あまりにも簡単に無意味に複雑なコードが書けてしまうことが問題なのか。 違う。書いた本人以外に合わせるんだよ。 あんたのコードを周りの人が理解できないのはあんた以外全員バカだからというわけじゃない。 ポリモーフィズムを使うとき、デストラクタにvirtual付け忘れると 場合によってはメモリリークして大変な事になる サブクラスをdeleteした時に スーパークラスのデストラクタしか呼ばれない この罠に引っかかった奴は多いに違いない >>586 とにかくデストラクタにはvirtual付けるようにしてる。 今ほど継承の問題点が言われていなかった過去の常識という印象。 virtualなデストラクタが必要なのは、上に言われてる通りポリモーフィズム使う時だけなんやで 基底クラスのポインタに派生クラスをまとめて管理する(基底のポインタからdeleteする)んでなければ virtualにする必要は無いんやで でないと、vtblを持たない、メンバ変数の通りの内容(パディングが無ければ、サイズもメンバの合計に等しい) しか持たないクラス/構造体とか作れないしな。 継承の問題点って具体的にどの辺?自分にはちょっと想像つかんかった 継承(is-a)は、構造が硬直化する。柔軟ではない 一方、包含(has-a)は柔軟で、処理の委譲(丸投げ)にも使われる。 依存性の注入(DI)も、最近の流行 世間でそう言われているという話ならコピペでも不思議はなかろう。 >>590 has-aの関係だと言えるものならそうすべきだけど、is-aの関係を包含でやると そのうち必ず破綻するよ? まぁ多態しないならデストラクタを仮想関数にする必要ないってのはその通りで shared_ptrなんかはダウンキャストしても正しいデストラクタが呼び出せるように ポインタ自体がデストラクタを持ちまわってるし、知らなきゃ驚くようなことをしている が そんなことより、C++が雑多だっていうなら 筆頭は多重継承、ダイヤモンド継承だろ だーれも使ってない機能、goto以上に誰も使わない、盲腸のような機能 ここから読み取れるのは、つまりは要らない機能は使わなければよい ってのがC++の流儀であり習わし 今に始まったことではない、昔からそう 多重継承のダイヤモンド継承がどれぐらい使われないかというと 明らかに問題があってめちゃ複雑なのに ここで例に上がらないぐらい誰も使ってないし すっかり忘れて頭から抜け落ちるぐらい使われてない 使ったこともないから困ったこともない、そんぐらい使われてない こんな使ってはならないような機能を持っている言語なんだから 使う側で工夫するしかないのだわな ちなみに仮想継承なんか、実用的なプログラムで使ったことあるやつ居るのかね コンパイラ開発者がかわいそうだよ 実装が面倒くさそうなのに誰も使わないんだから NVIインターフェースを複数継承するみたいなクラスはよく書くから多重継承がないと困る そして、スマポが持ってるのはデストラクタではなくてカスタムデリータでしょ? RAIIのためのデリータを指定するのと、ポリモーフィックなクラスのデストラクタを仮想にすることは独立だと思うけど ん? オブジェクト志向バリバリだと、普通に多重継承起こるでしょ? 「インターフェースクラスの」ではあるけど。 >>598 インターフェースかどうかはどうやってジャッジするの? 子供の発表会みてるような微笑ましさがあるな ID:MWDK7HMBのことな インターフェースの多重継承は否定してないって言ってるのになぁ インターフェースの多重継承は他言語でも見かけるけど C++の場合は実装の多重継承も出来て、これはJavaやC#では禁止されているわけだけど CにOOを追加したのがC++の売りであるから、継承は筆頭株主というか鳴り物入りというか 当時としてはCに対するアドバンテージで、売りであったはず そこでマズったのはハッキリ言ってかっこ悪いが いらない機能は使わなきゃ済む話、それがC++ 仮想継承とか誰が使うの?ってね gotoより使わないし、gotoより害悪 江添亮とかいうやつやたら偉そうだけど C++界になんか貢献したの? Linux プログラミング・インタフェース、Michael Kerrisk, 千住 治郎、2012 C++11/14 コア言語、江添 亮、2015 組込み開発者におくるMISRA‐C:2004―C言語利用の高信頼化ガイド、MISRA‐C研究会、2006 神の啓示を受けし者たちが記した、神の書。 この3冊が出版されているのは、日本だけ 皆、これらの本を持って、山ごもりするw >>606 俺は江添氏のブログで助かってるけどなぁ 新しい仕様を実践的に教えてくれるのでわかりやすい 対してメタプログラミングやらコンパイル時のポリモーフィズムやらを 「今どきのC++の使い方」とばかりに押し付けてくる風潮がうざい(ああいうのはアマチュアの意見だと断言できる) アマチュアが言ってるのはわかるけどC++系のライターにまでそういうバカが居るから困る 誰とは言わんけど >>607 1番目のはLinuxシステムプログラミングと内容が似てるみたいだけどそっちのが良いの? >>594 標準ライブラリをはじめ多重継承は至るところで使われてるし、禿4にも、真のC++使いは恐れなく多重継承を使うと書かれている。 個人的には多重継承を避けてきたのだが、そろそろ使ってみようかと思う。 昔のgoto危険みたいな話なのかも。 使った方が良い場合は確かにあるので。 禿4によると過度の総称型も良くないらしい。 よくありがちなObject型ってやつ。 >>611 多重継承が一番いいと思ったらためらいなく使うわ gotoも同様にね、まあ、これはgotoの出番かーと思っても やっぱり必要なかったなとなるんでgoto使う機会は今のところないな >>609 「Linux プログラミング・インタフェース」の著者、 Michael Kerrisk は、Linux man ページを、10年書いてきた人。 世界中の開発者から、神と崇められている! 開発者は、この本を枕にして寝ろ、と言われている この本に似ている本は、 詳解 UNIX プログラミング 第3版、2014 C++テンプレートテクニック 第2版、 επιστημη(えぴすてーめー)・高橋 晶、2014 επιστημη も、C++標準化委員会の会員 江添も、テンプレート・メタプログラミングの需要があれば、 本を書きたいって言ってたけど、既にこの本が出ている 江添はそいつらよりちょっと頭が悪いからまともに見えることもあるってだけだな。 本質は変わらん。 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方 役に立つかもしれません グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』 LNCSZ 屋上屋を架す形での仕様の肥大化が続いてもう巨大迷宮みたいな言語 理解してるって自信があるのはコンパイラ開発者や規格策定者だけじゃないかってレベル いやそれさえも怪しいけど そんな言語を一介のユーザーが進んで使いたいなんて思うわけがないよね K&Rを再読したんだけどさ… スタックVMの作り方だろこれ。 「足りない分は自分でつくってね」という。 それで出来たのがjava,ruby,python。 禿に騙されて寄り道するなよ。 知れば知る程嫌いになる言語C++ パフォーマンスを維持したまま互換性を維持したまま言語仕様を肥大化して コード以前に言語が汚くなっているC++ COBOLと同じ負の遺産C++ javaとか気持ち悪いよね オブジェクトの中身弄くるのか分からなさすぎて 無料の処理系があるかってことなら「ある」。 例えば Linux 上で gcc 使えば無料だよな。 流石にコンピュータ本体までタダで入手できるとは言わんけど。 C++ のコンパイラを作って売る商売をする場合でも、 どこかとライセンス契約するような形でお金を取られることはないみたい。 『C++の設計と進化』にそんな感じのことが書いてあった。 正式な規格の本はスゲー高いらしいが、よく知らん。 スレが立ってから10年経過してるけど、まだやってるんだ。 最初の方を読むと、これじゃC++なんて無くなる勢いで貶されてるけどまだあるね。 javaのfinalもそうだけど finalやconstだらけで眩暈がするというか 凄くゴチャゴチャした感じがして嫌 いまどきのES7/TypeScriptだと、ほとんどの行にconstかawaitかあるいはその両方が書かれる。 もう少し abc(const: int i,int j) みたいな事くらいいえねぇのかよ やたら省略が好きなくせに ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.0 2024/04/24 Walang Kapalit ★ | Donguri System Team 5ちゃんねる