>>948 もちろんmalloc/free/printf/scanfも使わないんだよね?
対応するOSのAPIをラップするところから始めないと。
>>952 STL使う使わないとは関係ない話だけど、大抵のポータブルなライブラリでは
そこらへんはランタイムまかせにせずラップ関数を使ってるよね。
>>952 一歩間違えると、newやdeleteすら、オーバーロード無しには使えなかったりする環境もあるけどな
955 :
デフォルトの名無しさん:2008/05/13(火) 12:22:26
>>739 VB知らないから、的を外してるかもしれんが
AdaとかPythonは名前付きの引数使えるよ
D言語のテンプレート機構は、明示的なインスタンス化が必要になる代わりに、C++には出来ないようなことまで出来る。
それば事実なのだが、それがいいか悪いかは別問題である。思えばJavaやC#にもGenericsが導入され、いよいよ本格的に足並みをそろえた感もある。
また、やねうらおも通常はC++でテンプレートを用いてかなり複雑なメタプログラミングを行なうこともある。
しかしだ。やればやるほど、こういう方向性は根本的に誤っているのではないかという疑念をいだくようになった。
それぞれの言語がそれぞれの方法でテンプレートをサポートしたり、それぞれ異なる仕様のプリプロセッサを持っていたりするのは非常にばかげていると思う。
現実問題として、C++のソースをC#、あるいはJavaに移植しないといけないことがある。この逆をしないといけないこともある。
そういったときに、言語に依存する機能ほど移植を難解にするものはない。
その言語を使う限りは気持ちよくプログラミングできるのかも知れないが、そんなプログラムを移植させられる者はたまったもんではない。最近、それを特に感じる。
結局何が悪いかというと、Genericsやらメタプログラミングやら、プリプロセッサやら何やらかんやら。
そういったものは、言語間で共通するサードパーティ製のツールで実現するべきであって、決して、言語仕様そのものを改定すべき問題ではなかったと思うのだ。
たとえばmix-inにしても、AspectJ/C#/Cppを用いることで比較的すんなり実現できる。
言語そのものにmix-inを取り入れて、それをその言語のアドバンテージかのように言うのは、もういい加減やめにしないか?DbyC(design by contract:表明つきプログラム)にせよ、何にせよだ。
結局何が必要かというと、もっと汎用的なテンプレートやDbyCを実現するための、Aspectほにゃららをも包括するようなツールと、そういったツールを受容する言語側の仕組みなのだ。
決して、必要なのはGenericsでも何でもない。その言語にしかないような言語固有の機能なんてメリットでも何でもないのだ。いい加減、みんな早く目を醒ませ!
PL/1の夢、再来ですね。わかります
まぁ、俺も移植することあるから気持ちは分かるけど、
外部ツールで実現された場合、移植元と先の知識を持つ技術者も減ったりと、
移植は余計大変にならない?
そのツールがたまたま移植元と先を両方ともカバーしていれば
容易にはなるだろうけど。
それに、ソース生成系でなくても、
cfrontは例外が実装出来ずにティウンティウンしたし、
GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。
※ Boehm GCはハックみたいなもの
あとC++,Java,C#のジェネリックは全然足並み揃ってないです・・・
>>958 > GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。
> ※ Boehm GCはハックみたいなもの
「コンサバしか無理」と言えばいいのでは。
コンサバが何か分からずググちゃったよ・・・w
「保守的GCしか実装出来ない」とは一度書いて消した。
そう呼びたくなくてね。
ハックみたいなもの、とやんわり言ったけど、
はっきり言うと俺はアレを「出来損ないGC」だと思っています・・・。
それにしても、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」が珠玉のテクニック集か何かと思われている雰囲気、これがもうたまらない。
はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。
そっちのほうが、何倍も有益で、普遍的なものなのに。
956も961も見覚えがあるんだが、いつどこでだったか思い出せない。
>>961 「C++の設計と進化」を追加。
そういうデザインにせざるを得なかった事情の一端が書いてある。
C++はともかくとしてJavaのGenericsは正直どーか?と思うが。
正直 C++ は酷いよなあ。
>>961 お前結構前で知識が止ってるよ。
試行錯誤時代の「Modern C++ Design」をそんなに熱く語られても。
上から目線ワラタ
ARM & FDISも今となってはC++03規格と0xドラフトに置き換えだな。
そして C++ は永遠に表舞台から消える訳か…
それ良いな
縁の下の力持ちとして生き続けるということですね、わかります
いや、どちらかというと蚊帳の外
>>967 ARMは規格と違ってannotatedの部分が面白いけど、D&Eに置き換えだね。
「オブジェクトモデル」に相当するのがない。
今北産業
>>972 言語に依存すると移植が大変
有名な本は全部読め
次スレ頼む
>>972 c++は言語オタが素人に本売るために複雑になっている
>>961 > はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。
それは無いなぁw
VCが最後の砦という感じはする
Windows Universe ではそうかもしれんね
C++は最近使用範囲が広がってる感じがする
GoogleもMozillaも使っている
新しく始めるプロジェクトでC++を使えるのにCで書く必要はないのだ
名前空間と関数のオーバーロードがあるだけでかなりベターなCとして使えるのだから
もちろん主要なターゲット環境にCコンパイラしかないのならCを使うしかないが
Mozilla は昔からでしょ
Google は Java も Python も JavaScript も独自言語も使っているし
そうだよ
ネイティブコードを吐く言語としてC++を選択している
JavaもPythonもJavaScriptも使われる場面や用途が違う
でも Yahoo! の Hadoop とかは Java なんだよね…
そんな><
名前空間はともかくオーバーロードはたまに困ったちゃん扱いされるじゃないか
ベターから外れる
JAVAそのものはC++じゃなかったけか?
C++を見捨てたというより、頭が悪くてC++についていけないだけの話だろ
>>985 残り少なくなった C++ 信者の脳内設定ではね。現実は真逆。
987 :
デフォルトの名無しさん:2008/05/17(土) 14:31:55
CとC++の中間に位置する言語があればいいのに。
中間もなにもC++でC++特有の機能を使わない様にコーティングすれば
済む話だと思うが。
C++の終わりなき拡張(でいいのかな?)のせいで
どんどんとっつきにくくなってるから
そろそろ現ANCI準拠のC++と今以上に拡張するC++は別物として扱って欲しい。
そんな俺は最近C++に触れ始めたC++初心者。
>>988 済まないからみんな困ってるんじゃないか
それで済むなら EC++ なんて作らないよ
もっと現実を直視しようぜ
ANCI
ANSIだったな。すまん
>>983 Cよりも新しい言語では関数のオーバーロードを許す言語は多いじゃない
そしてC++より新しい言語でも多いでしょ
言語設計者が有用であると判断しているケースが多いわけだ
C++を鼻で笑いつつ夢を追い求めて作ったJavaとC#も、
浸透し「現実のつらい部分」も自らが受け持たなくてはならなくなるにつれ、
結局はC++的な複雑さを取り込まざるを得なくなってるしね。
だな。
ただ、C#に関しては鼻で笑っていたわけでは無いと思うぞ。
structとかunsafeがあるように、
元々、コスト・効率についても結構意識されてるし、結構c++的な考えを持ってる。
LINQとか型推論とかむしろ積極的に構文を拡張してるしね。
javaとは違って、開発効率と実行効率のためなら複雑さ上等ってスタンス。
関数型言語が見直されて来たから
JavaやC#などで無理矢理関数型っぽいことできるようにして
カオスになった感じ。
>>989 gccでC89とC99がコンパイルオプションで分かれているように、
C++98とC++0xは別に分かれるなんて事例が起こりそうな気がする。
>>996 それでもC++と比べれば月とすっぽん。
>>993 それでもC++の多重定義解決の規則をそのまま使う言語なんてないはず。
少なくとも、Java/C#/DはC++と違う。
1000 :
デフォルトの名無しさん:2008/05/17(土) 21:50:25
【 html化されたこのスレを読んでいるお前へ 】
おい、お前。そう、お前だよ。
「このスレおもろいから見てみ」「2ちゃんの歴史に残る名スレだぜ」とか言われてホイホイと
このhtml化されたスレを見にきた、お前のことだ。
どうだ?このスレおもしれーだろ。
でもな、お前はこのスレを読むだけで、参加することはできねーんだよ。
可愛そうにな、プププ。
俺は今、ライブでこのスレに参加してる。
すっげー貴重な経験したよ。この先いつまでも自慢できる。
まあ、お前みたいな出遅れ君は、html化されたこのスレを指くわえて眺めてろってこった。
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。