- 1 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 09:52:47 ]
- 文法面での機能拡張しすぎ。
C++の構文解析とか、もうワケワカメ。 マイクロソフト拡張大杉。 gcnew とか使うぐらいなら素直に Java でも C# でもつかえ!!!
- 853 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:45:15 ]
- >>851
何で? メジャーな環境のフリーなコンパイラがあるのにそんなことするのは 余程上の人間か、もしくはただのアホだろ
- 854 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:45:43 ]
- >>852
やっぱりそうか 「独自実装」で一番最初に思い浮かんだw
- 855 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:48:08 ]
- >>853
何でって、昔は俺言語を作るのが普通だったから… ガッコでコンパイラの授業あるだろう
- 856 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:48:17 ]
- J#あったなw
最後までJDK1.1(笑)互換だったけど騙されて使ってた会社は、 今もメンテで使ってるかもな。
- 857 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:50:58 ]
- 授業で習って、その流れで俺言語作るのと、
実用のために俺言語作るのはわけが違うだろ常考。 どんだけの新言語がポシャッってると。
- 858 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:54:11 ]
- 俺言語作るよりチャレンジングなのがC++のtemplate変態プログラミング。
- 859 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:55:29 ]
- ハードウェアとセットで囲い込むか、
マーケティング力が無いと無理だろうな。 そういう意味でRubyはすごいと思うよ。 Railsのおかげではあるけど。
- 860 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:55:35 ]
- 実用の為の俺言語作ってる奴も多かったよ
ツール組み込みのマクロとか
- 861 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:58:29 ]
- マクロまでハードル落としたなw
そりゃマクロなら結構居るだろうさw
- 862 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:59:59 ]
- >>861
マクロっつってもフルセットの Scheme とかだぜ まあ俺言語じゃないけど…
- 863 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:01:30 ]
- 反応を見てると、やっぱり最近の人はそういうのやらないんだな…
- 864 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:05:39 ]
- 俺の先輩は新入社員研修でCのコンパイラ作らされたって言ってたな
やっぱり文化が違うw
- 865 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:07:44 ]
- 俺言語の話をしたいのか互換実装の話をしたいのかちゃんと絞ろうぜ・・・
俺も別に完全否定する気はないし、 小規模な俺言語(マクロ) コンパイラが無いプラットフォームへの実装 標準についていく力がある組織による競合実装 なら十分有りだと思ってる。 C++の個人での俺拡張がありえないって言ってるわけで。
- 866 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:10:51 ]
- >>865
>C++の個人での俺拡張がありえない 俺もそう思うよ。腐った木に水やりをする人間はいないからね。 D や Java はそこら辺ちゃんと筋を通してる。
- 867 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:22:25 ]
- 今日は入り浸りすぎたんで暫くレスを自粛するわ…
じゃあね
- 868 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:24:39 ]
- Javaはコンパイラ拡張が専門のPolyglotって実装があるよ。
C++はg++ベースが多い。例えばConceptGCC。
- 869 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:16:59 ]
- プログラム書くのにコンパイラの実装なんて気にする必要ないじゃん
つか、C++簡単だろう わかんない、どんだけ低能なんだよ
- 870 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:20:55 ]
- 簡単ではないだろう
STLからbostまでにどれだけの英知が必要だったか
- 871 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:38:30 ]
- >>870
それは別にC++が特別ではないだろ。 本格的な言語ならどれだって大量のリソースが注ぎ込まれているはず。 あと、使う方もC++が特別難しいとは思わないが、ほかが特別簡単とも思わない。 例えば、自分1人で作るプログラムなら当然C++は候補の1つ。 利点欠点を考え気分を加味して、C++が最良と思えばそれを使う。別のが良ければそれを使う。
- 872 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:50:00 ]
- 程度問題だけど
標準ライブラリがあれほど言語の能力を使いきれてなかったのも珍しくない? つまり標準化委員達にも把握できてなかったわけで 自分はC++を理解しているつもりだけど、本当はboostの先が果てしないのじゃないかと
- 873 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:56:03 ]
- そもそも標準ライブラリのbind.*とかが欠陥品だからなぁ・・・
- 874 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 01:58:11 ]
- かなり早い時期に作られたライブラリなんだから責めないで。
何年もの研究の成果があってこそのboostなんだし。
- 875 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 02:01:05 ]
- というわけで正しくC++を使うのは識者たちにも難しかった
- 876 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 02:13:02 ]
- 正しくって?
限界まで、の間違いだろ
- 877 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 07:40:58 ]
- iostreamきもい
- 878 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 07:43:23 ]
- >>847
パソコンで箱売りされているソフトの大半がVCで書かれてますが?
- 879 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 07:49:17 ]
- 土方の話はしてないからw
- 880 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 11:16:01 ]
- >>870
道具を作るのには英知が必要かもしれないが 道具を使うのには英知なんて必要ないだろうが
- 881 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 12:22:17 ]
- >>879
話を限定しないと、C++に大衆性が無いなんてトンデモ理論は 言い続けられないですもんねw
- 882 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 16:13:39 ]
- >>880
最近その言葉の意味を身をもって知ることになったんで同意する。 道具を使うのは簡単なんだよな。使い方勉強すればいいだけなんだし。
- 883 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 16:32:55 ]
- まぁ、使うのは作る知識の5%くらいは必要とかそんな感じなんじゃない。
その5%にも満たないという残念な実感、そんな経験が俺にもありました。
- 884 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 17:01:25 ]
- よく見ると>>2が痛々しいな
- 885 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 17:34:27 ]
- > 新総督はナナリーだよ!!! <
 ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄ _ - '´rニ- 、_ ノ} /{/:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.: ̄._ニア : , '´::::::::::::::::::::::::::::::`丶、: {:.:.| .:.:.:.:.:.:.:.:.:.:.:.:.:.:. :.ノl:.:.ヽ : /:::::::::::::::::::::::::::::::::::::::::::::::ヽ : __,>:.:.: .: :.:.l:.l:.:.l:.:.:.:.:. .: .ヽ、.:.:.\ : /::::::::::::::::::::::::::::::::::/::::::::::::::::::::', : ∠_:.:.:.:.:.:.:.:.:.ノノ_:.`ニ=‐.:.:.:.:ハ:.ヽ:.:.:.:.ニ=- : //::::l:::::::/:::::;/::/::::;ヘ:::::::|:::::::::::::} : . |.:.:.:.:.|:.:.|:.:.|:.ゝゞ`、:.:|:.|_}.:.|:.:.:.:..} ://::::::l:::::;ヘ/, '/:/::/ ::::|:::::l:::::::::::::{ : . |:|.:.:.:.{:.:.{∨仁¨-、ヽ/≦ソリ:.:i|ノ : /|::::::l/(◯), 、(ひ)::::リ:/:::::::::::::l : リ:.:(\ヽ rr=-, r=;ァ{:./´ : .|ハ::|:::l"",rェェェ、"" ::::::/::::::/`i;':| : `ヽヽゝヽ  ̄  ̄ l:.ヽ、 : l' |l:::! |,r-r-| :::::/;::::::;'_.'´ハ : ∠_:..:.¨ヽ 'ー=-' ,ノ  ̄ : l;' ', `ニニ´ :::::/:://:::/ :
- 886 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 18:08:58 ]
- >>883
5%どころか0.05%ぐらいが妥当じゃないかと
- 887 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:22:26 ]
- >>880
残念だが、俺の作ったライブラリを使うには とびっきりの英知が必要になるぞ
- 888 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:26:44 ]
- mb2sync乙
- 889 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 22:42:56 ]
- >>887
使い勝手が悪いってことじゃないかそれ。
- 890 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 23:25:02 ]
- >>887に英知が無いことだけは良く分かった
- 891 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 00:19:01 ]
- 酷いネタにマジレスを見たw
- 892 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 10:27:56 ]
- レスを追ってて思ったんだが、
CのFree()とC++のデストラクタとC#のDispose()って具体的に挙動や用途としてはどうちがうの? なんとなくはわかるんだが、正確にどういう違いがあるかわからん。
- 893 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 10:39:12 ]
- C++にはdeleteもあるぞ。
- 894 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 10:39:25 ]
- malloc して free しない →100%メモリリークする
new して delete しない →メモリリークするかどうかはケースバイケース New して Disposeしない →メモリリークするが一部はガベージコレクションで救済される
- 895 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:25:11 ]
- ちょっと3レスに分けて書くよ。
<C> ・malloc() :メモリ確保 ・free() :メモリ解放(mallocが再利用出来る。OSに返すとは限らない) すぐ終了するプロセスは、大量に確保を 繰り返すもので無い限りfree()しなくても大丈夫。 長期的に動くプロセスはfree()を使わないと malloc()で再利用出来ないため、問題となる。 ただし、mallocの実装によっては徐々に断片化してオワル。 なので、組み込みのようなものではmalloc系を使わない、 ページ単位で確保する処理でラップなどで対応。
- 896 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:25:40 ]
- <C++>
・new:malloc()して、それをthisとしてコンストラクタを実行 ※厳密にはmallocとは限らない。 ・delete:デストラクタを実行したあと、free()する ・デストラクタ:メモリ解放はしないけど、リソースの解放などをする。 なので基本的に呼ぶこと。 newを使用しない自動変数の場合は、 変数のスコープから出る際にデストラクタが呼ばれる。 リソースもモダンなOSはプロセス終了時に破棄するけど、 名前付き共有メモリマップのような プロセスを超えて生存する仕様のリソースは当然残る。
- 897 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:26:06 ]
- <C#>
・メソッド内のusing:指定された変数が usingのスコープから出る際にDispose()が呼ばれる。 ・Dispose():メモリ解放はしないけど、リソースの解放などをする。 なのでDisposableを持っている場合は基本的に呼ぶこと。 C#はGCがあるので放っておいてもメモリは解放される。 その前段でFinalizeが呼ばれるので、その際通常はDispose()が呼ばれる。 つまり明示的にDisposeしなくて呼ばれるが、 GCはコネクションプールの枯渇などを検知しないので、 メモリに余裕がある場合はいつまでもFinalizeも呼ばれず問題となる。
- 898 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:35:43 ]
- デストラクタはいるけど、deleteはいらないな。
- 899 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:39:44 ]
- そうだね
delete不要論はsmart_ptrによるRAIIのテクニックが広まった頃にC++プログラマは口々に言ってたよね
- 900 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:42:10 ]
- >>894
1行目をリークとするなら2行目も100%リークです。 3行目もおかしい。文脈的にはそのケースはメモリリークしない。 >>898 何で?
- 901 名前:900 mailto:sage [2008/05/05(月) 11:43:55 ]
- スマートポインタが内部的に呼ぶから明示的なdeleteは不要、
ということならおk。それなら同意なので。
- 902 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:51:30 ]
- ユーザコードでdeleteを記述したかどうかなんてのは、deleteの有無を論じる上で正確じゃない。
A * a = new A; // iroiro a->~A(); こんなコードを書く奴が出てきてしまうかもしれん。
- 903 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:07:00 ]
- >>902
しかし、 class A{ B *b; public: A(){ b = NULL; }; ~A(){ delete b; }; void SetB(B *s){ b = s; }; B *GetB(){ return b; }; //色々な処理 } というクラスの場合、 自分がnewしたからと言ってbを勝手にdeleteしちゃうと不味いよね
- 904 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:19:12 ]
- それただのクソコードじゃんw
どういう責任範囲か不明だし、Aが責任もつならSetBのときにdelete bだろ
- 905 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:21:21 ]
- newをユーザコードで直接使わずにfactory methodを使えと言うことですか
- 906 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:22:20 ]
- >>903
>>902のAの設計思想を知らんけど、Bの生存期間をAに移譲しないなら、 自分でdelete bに相当する操作を行うべきで、~Aにdelete bがあるのがおかしい。 仮に>>902のAをそのまま使うとしても、次のようなコードにするべきだ。 some_smart_ptr<A> a(new A); some_smart_ptr<B> b(new B); a->SetB(b.get()); // iroiro a->SetB(NULL);
- 907 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:44:55 ]
- >>906
a = new A; some_smart_ptr<A> b(a); delete a;
- 908 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:50:13 ]
- >>907
何が言いたいんだw バグを披露したいのか?
- 909 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:51:27 ]
- そこでGCだ
- 910 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 12:55:43 ]
- newしたらdeleteすべしと言うことは、>>907って事だろ
a->SetB(new B); とどう違うのかって話にも取れるな
- 911 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:03:18 ]
- どんだけw
a = new A; //newしたら some_smart_ptr<A> b(a); //deleteすべし 「明示的な」「責任」「生存期間」とか言い方はそれぞれだけど >>899 >>901 >>902 >>904 >>906 は皆そういうことを言ってる
- 912 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:10:26 ]
- >>896
> ・delete:デストラクタを実行したあと、free()する ちがうぞ。allocatorのdeallocate()を呼ぶ。
- 913 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:14:52 ]
- >>912
だから「※厳密にはmallocとは限らない。」って書いたんだけど・・・。 >>892向けに書いたから分かりやすいようにあえてそうしたの。
- 914 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:17:21 ]
- newも厳密に言ったらoperator newとか配置newとかあるしな
- 915 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:19:26 ]
- >>911
>>903コードだと、class Bは、class Aのプライベートなメンバーじゃん class A以外で、*bをdeleteしちゃ不味いだろ、Aの生存期間が終了するまでの間にBを利用する可能性があるんだし ゲタやセッタがあって、Aのコンストラクタでbをnewしないって事は、クラスBの派生クラスCを使う可能性だって考えられるし
- 916 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:21:52 ]
- >>911にclass Bなんか出てきてないけど。
- 917 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:23:30 ]
- >>916
>>903にでてるじゃん
- 918 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:23:55 ]
- >>913
malloc/free使う実装ってあるの?
- 919 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:27:32 ]
- >>915
> >>903コードだと まだ>>903のコードのこと言ってると分かって軽くフイタw > プライベートな privateだろうがset,getがあれば同じこと > Aの生存期間が終了するまでの間にBを利用する可能性 >>904 >>906であるようにAの仕様が意味不明なので何とも言えない > 派生クラスCを Cを使っても問題無い(virtual ~B()でないのに継承してAに渡すのはただのバグ)
- 920 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:27:49 ]
- >>917
なぜ>>911に対してコメントしたの?
- 921 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:30:38 ]
- >>920
>>910への返答が>>911だから
- 922 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:31:55 ]
- >>918
あると思うよ。
- 923 名前:919 mailto:sage [2008/05/05(月) 13:33:41 ]
- >>921
ああスマン a->SetB(new B); のところはどうでも良すぎて無意識にスルーしてた
- 924 名前:922 mailto:sage [2008/05/05(月) 13:36:30 ]
- >>918
とりあえずVC++ okwave.jp/qa2980583.html
- 925 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:42:05 ]
- a->SetB(new B)は駄目で、some_smart_ptr<A> a(new A)はいいって、どんなやねん
どっちもスマートポインタだろうがw
- 926 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:43:16 ]
- >>918
g++は下請のlibiberty/xmalloc.cからmalloc()呼び出してる。 libibertyは差し換えられるようになっているけれど。
- 927 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:48:46 ]
- >どっちもスマートポインタだろうがw
>Aの仕様が意味不明なので とあるように、それならそうと始めから書いてくれないと。 >>903のようなコードからスマートポインタを 書こうとしたことを読み取るのは難しい。 分かってる人ならサフィックスに_ptr付けるとかする。
- 928 名前:903 mailto:sage [2008/05/05(月) 13:52:39 ]
- 俺のコードですまんかった
C++覚えてまだ半年ぐらいで難しいことはわからん ウインドウズ用のクラスライブラリ作ってて、MDIクライアントとかdeleteするのが面倒で、あんなコードをいっぱい書いてる そっか、駄目なのか...楽でいいのに...orz
- 929 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:53:41 ]
- >>925
> どっちもスマートポインタだろうがw 分かんねぇよw コンストラクタくらい付けろw コピーされた場合もどうすんだよ
- 930 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:55:14 ]
- >>929
色々な処理に入ってるんじゃないの?
- 931 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:56:29 ]
- >>928
std::auto_ptr, boost::shared_ptrあたりの使い方を覚えるべき。
- 932 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 13:59:35 ]
- >>930
auto_ptrの仕様や、shared_ptr・weak_ptrが作られた理由は、 色々、で片付けられるほど気軽なものじゃないんだせ・・・。
- 933 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 14:05:27 ]
- >ウインドウズ用の
まぁ今だったらマジでC#オヌヌメ 既存の資産もDLLにしとけばC#から使えるし。
- 934 名前:903 mailto:sage [2008/05/05(月) 14:13:05 ]
- >>933
大枠は既に出来て、あとは細かいコントロール類だけだから、今更C#を覚えるよりは速いかな C++をマスターしたと思ったらC#も触ってみるよ
- 935 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:29:02 ]
- これらを元に考えると、 犯人は男、もしかすると女の可能性もあり。
年齢は10代〜50代、あるいは60代以上。 身長は1m〜2mくらい。 犯行は単独もしくは複数。
- 936 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:36:25 ]
- そして調査の結果、事故死であることが判明。
- 937 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:38:00 ]
- 車の中でC#動いてたらイヤでしょ
- 938 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:14:19 ]
- >>937
バグでエンジンがかからなかったり事故を起こしたりしなければ別にどうでもいい。
- 939 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:20:41 ]
- プログラマって授業中にずっとノートにコード書いてたり、家でこそこそギャルゲ作ってて
将来のことで親と喧嘩して、ゲームとかソフトとかなにか作って食って生きたいって言うも、 そんな子供みたいなことをいつまでもやってるんじゃないって頭ごなしに否定されて 夜の街を彷徨って帰ってきたら、みんな寝てないみたいで、暖かいご飯が用意されてて、 おかんと「おとうさんが大事な話があるからって」「・・・うん」みたいな会話しちゃう生き物だと思ってたけど違うの?
- 940 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:27:21 ]
- >>939
それプログラマじゃなくてただの勘違いしたお子ちゃまだから。
- 941 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 07:06:03 ]
- >>939
そういう生き方でもいい。お前の人生なんだもの。お前の思うとおり生きれよ。
- 942 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:14:18 ]
- …といった具合にネタにマジレスしちゃうのがプログラマ
- 943 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:25:32 ]
- マジレスに見えるんだw
- 944 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:27:14 ]
- 少なくとも>>941はマジレスじゃないだろw
- 945 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 00:27:51 ]
- 被った・・・
- 946 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 04:01:18 ]
- …といった具合にネタにマジレスしちゃうのがプログラマ
- 947 名前:デフォルトの名無しさん mailto:sage [2008/05/07(水) 05:21:21 ]
- C++と関係ない話題は他所でやれ
- 948 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 12:17:44 ]
- しかし、ベースになるクラスライブラリを作るのに、STL使えってのはどうなの?
むしろ、そういった物の場合は、vectorすらゆるさんぐらいで良いと思うが
- 949 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 14:10:30 ]
- vectorを許さないで俺vectorを書くんですね、わかります
- 950 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 17:28:18 ]
- 自分の靴紐を持ち、上方にグイと強く引っ張ると身体が持ち上がります
次に反対側の靴の靴紐も同じ様に引き上げれば、宙に浮くことが出来ます
- 951 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:27:03 ]
- >>950
空飛べた! サンクス
- 952 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:28:18 ]
- >>948
もちろんmalloc/free/printf/scanfも使わないんだよね? 対応するOSのAPIをラップするところから始めないと。
- 953 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:41:53 ]
- >>952
STL使う使わないとは関係ない話だけど、大抵のポータブルなライブラリでは そこらへんはランタイムまかせにせずラップ関数を使ってるよね。
- 954 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 22:19:09 ]
- >>952
一歩間違えると、newやdeleteすら、オーバーロード無しには使えなかったりする環境もあるけどな
- 955 名前:デフォルトの名無しさん [2008/05/13(火) 12:22:26 ]
- >>739
VB知らないから、的を外してるかもしれんが AdaとかPythonは名前付きの引数使えるよ
- 956 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 06:37:04 ]
- D言語のテンプレート機構は、明示的なインスタンス化が必要になる代わりに、C++には出来ないようなことまで出来る。
それば事実なのだが、それがいいか悪いかは別問題である。思えばJavaやC#にもGenericsが導入され、いよいよ本格的に足並みをそろえた感もある。 また、やねうらおも通常はC++でテンプレートを用いてかなり複雑なメタプログラミングを行なうこともある。 しかしだ。やればやるほど、こういう方向性は根本的に誤っているのではないかという疑念をいだくようになった。 それぞれの言語がそれぞれの方法でテンプレートをサポートしたり、それぞれ異なる仕様のプリプロセッサを持っていたりするのは非常にばかげていると思う。 現実問題として、C++のソースをC#、あるいはJavaに移植しないといけないことがある。この逆をしないといけないこともある。 そういったときに、言語に依存する機能ほど移植を難解にするものはない。 その言語を使う限りは気持ちよくプログラミングできるのかも知れないが、そんなプログラムを移植させられる者はたまったもんではない。最近、それを特に感じる。 結局何が悪いかというと、Genericsやらメタプログラミングやら、プリプロセッサやら何やらかんやら。 そういったものは、言語間で共通するサードパーティ製のツールで実現するべきであって、決して、言語仕様そのものを改定すべき問題ではなかったと思うのだ。 たとえばmix-inにしても、AspectJ/C#/Cppを用いることで比較的すんなり実現できる。 言語そのものにmix-inを取り入れて、それをその言語のアドバンテージかのように言うのは、もういい加減やめにしないか?DbyC(design by contract:表明つきプログラム)にせよ、何にせよだ。 結局何が必要かというと、もっと汎用的なテンプレートやDbyCを実現するための、Aspectほにゃららをも包括するようなツールと、そういったツールを受容する言語側の仕組みなのだ。 決して、必要なのはGenericsでも何でもない。その言語にしかないような言語固有の機能なんてメリットでも何でもないのだ。いい加減、みんな早く目を醒ませ!
- 957 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 07:58:53 ]
- PL/1の夢、再来ですね。わかります
- 958 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:05:52 ]
- まぁ、俺も移植することあるから気持ちは分かるけど、
外部ツールで実現された場合、移植元と先の知識を持つ技術者も減ったりと、 移植は余計大変にならない? そのツールがたまたま移植元と先を両方ともカバーしていれば 容易にはなるだろうけど。 それに、ソース生成系でなくても、 cfrontは例外が実装出来ずにティウンティウンしたし、 GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。 ※ Boehm GCはハックみたいなもの あとC++,Java,C#のジェネリックは全然足並み揃ってないです・・・
- 959 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 08:51:10 ]
- >>958
> GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。 > ※ Boehm GCはハックみたいなもの 「コンサバしか無理」と言えばいいのでは。
- 960 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 10:27:27 ]
- コンサバが何か分からずググちゃったよ・・・w
「保守的GCしか実装出来ない」とは一度書いて消した。 そう呼びたくなくてね。 ハックみたいなもの、とやんわり言ったけど、 はっきり言うと俺はアレを「出来損ないGC」だと思っています・・・。
- 961 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:34:45 ]
- それにしても、C++の言語デザインは忌むべきものだと思う。
「Effective C++」や「More Effective C++」、あるいは「Modern C++ Design」、あと「Effective STL」有名なのが、この4冊。 あとARM(The Annotated C++ Reference Manual:注解C++リファレンスマニュアル)、それからFDIS(C++ Final Draft International Standard) ついでに「Exceptional C++」とか「More Exceptional C++」とかもか。 プロのまともなC++プログラマならば、これらをすべて読んでいて然りだし、少なくともFDIS以外は精読していて然りである。 そうは思うものの、いま「Effective C++」やら何やらを読み返してみると、ホント頭悪いなぁと思う。 もちろん「Modern C++ Design」もだ。書いている人が頭が悪いと言っているのではない。 こんな解説書が必要になり、また必須であると思われている状況が、もうどうしようもなくやるせなくなるのだ。 こんな解説書が必要になるというのはC++の言語デザインの悪さゆえなのに。 「Modern C++ Design」を知らずしてテンプレートを語るなと言われる。確かにそうかも知れない。 この本以前のテンプレート批判は本当に的はずれだった。 かと言って、「Modern C++ Design」が珠玉のテクニック集か何かと思われている雰囲気、これがもうたまらない。 はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。 そっちのほうが、何倍も有益で、普遍的なものなのに。
- 962 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:47:27 ]
- 956も961も見覚えがあるんだが、いつどこでだったか思い出せない。
>>961 「C++の設計と進化」を追加。 そういうデザインにせざるを得なかった事情の一端が書いてある。
- 963 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 18:56:21 ]
- C++はともかくとしてJavaのGenericsは正直どーか?と思うが。
- 964 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 20:25:13 ]
- 正直 C++ は酷いよなあ。
- 965 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:45:21 ]
- >>961
お前結構前で知識が止ってるよ。 試行錯誤時代の「Modern C++ Design」をそんなに熱く語られても。
- 966 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 21:46:37 ]
- 上から目線ワラタ
- 967 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:11:25 ]
- ARM & FDISも今となってはC++03規格と0xドラフトに置き換えだな。
- 968 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:13:57 ]
- そして C++ は永遠に表舞台から消える訳か…
それ良いな
- 969 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:26:30 ]
- 縁の下の力持ちとして生き続けるということですね、わかります
- 970 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:31:43 ]
- いや、どちらかというと蚊帳の外
- 971 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:31:54 ]
- >>967
ARMは規格と違ってannotatedの部分が面白いけど、D&Eに置き換えだね。 「オブジェクトモデル」に相当するのがない。
- 972 名前:デフォルトの名無しさん mailto:sage [2008/05/16(金) 23:36:24 ]
- 今北産業
- 973 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:01:05 ]
- >>972
言語に依存すると移植が大変 有名な本は全部読め 次スレ頼む
- 974 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:04:44 ]
- >>972
c++は言語オタが素人に本売るために複雑になっている
- 975 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 00:23:25 ]
- >>961
> はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。 それは無いなぁw
- 976 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:15:56 ]
- VCが最後の砦という感じはする
- 977 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:17:36 ]
- Windows Universe ではそうかもしれんね
- 978 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 01:51:39 ]
- C++は最近使用範囲が広がってる感じがする
GoogleもMozillaも使っている 新しく始めるプロジェクトでC++を使えるのにCで書く必要はないのだ 名前空間と関数のオーバーロードがあるだけでかなりベターなCとして使えるのだから もちろん主要なターゲット環境にCコンパイラしかないのならCを使うしかないが
- 979 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:01:54 ]
- Mozilla は昔からでしょ
Google は Java も Python も JavaScript も独自言語も使っているし
- 980 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:12:40 ]
- そうだよ
ネイティブコードを吐く言語としてC++を選択している JavaもPythonもJavaScriptも使われる場面や用途が違う
- 981 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:20:40 ]
- でも Yahoo! の Hadoop とかは Java なんだよね…
- 982 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 02:28:35 ]
- そんな><
- 983 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 06:05:50 ]
- 名前空間はともかくオーバーロードはたまに困ったちゃん扱いされるじゃないか
ベターから外れる
- 984 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:29:03 ]
- JAVAそのものはC++じゃなかったけか?
- 985 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 12:44:06 ]
- C++を見捨てたというより、頭が悪くてC++についていけないだけの話だろ
- 986 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 13:48:25 ]
- >>985
残り少なくなった C++ 信者の脳内設定ではね。現実は真逆。
- 987 名前:デフォルトの名無しさん [2008/05/17(土) 14:31:55 ]
- CとC++の中間に位置する言語があればいいのに。
- 988 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:39:00 ]
- 中間もなにもC++でC++特有の機能を使わない様にコーティングすれば
済む話だと思うが。
- 989 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:47:15 ]
- C++の終わりなき拡張(でいいのかな?)のせいで
どんどんとっつきにくくなってるから そろそろ現ANCI準拠のC++と今以上に拡張するC++は別物として扱って欲しい。 そんな俺は最近C++に触れ始めたC++初心者。
- 990 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 14:53:01 ]
- >>988
済まないからみんな困ってるんじゃないか それで済むなら EC++ なんて作らないよ もっと現実を直視しようぜ
- 991 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:41:22 ]
- ANCI
- 992 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:49:42 ]
- ANSIだったな。すまん
- 993 名前:デフォルトの名無しさん mailto:sage [2008/05/17(土) 15:56:16 ]
- >>983
Cよりも新しい言語では関数のオーバーロードを許す言語は多いじゃない そしてC++より新しい言語でも多いでしょ 言語設計者が有用であると判断しているケースが多いわけだ
|

|