08/05/02 14:46:05
>>626
なぜ「デストラクタなんて要らない」のかを説明してくれないか。
628:482
08/05/02 14:55:04
>>627
簡単な話。
Cではデストラクタが無くてもみんなプログラムを組んでるから。
それとも、
『デストラクタが無いCはまともに使う気しない』人が可哀想だね。
『デストラクタが無いとプログラム出来ません』なんて恥ずかしいよ。
つう感じでガソリンを補給して欲しいのか?
629:デフォルトの名無しさん
08/05/02 15:10:03
それは「無くてもなんとかなる」
だけで、「要らない」理由にはならない。
自動車、飛行機、原子力、etc
630:482
08/05/02 15:14:27
何だよ。言葉遊びか?
下らん。
631:デフォルトの名無しさん
08/05/02 15:20:23
ここはニュースグループか
632:デフォルトの名無しさん
08/05/02 15:25:22
>>628
>>529 >>587 >>604の通りでCには要らなくてもC++には必要。
で、>>590と答える?
だとすると「デストラクタは要らない」じゃなくて、
クラス、例外、テンプレートなどのC++の機能が要らないってことでは?
それは単に「俺はC言語で十分」ってことだと思うんだけど。
違う?
633:デフォルトの名無しさん
08/05/02 15:28:19
>>631
反論の余地がなくなると国語辞典持ち出して単語の粗探しするんだよなw
634:デフォルトの名無しさん
08/05/02 15:31:27
ノイマン型コンピュータのプログラムを組むのに
Cを超える高級言語は不要ってこと?
んー以外に支持受けるかもしれんな
635:482
08/05/02 15:32:08
どうでも良い話だが「俺はC言語で十分だからデストラクタは要らない」
という文章は思い付かなかったのか? 元々そういう文脈だし、余程
国語が苦手じゃなきゃ自明だろ。
こんなどうでも良い話でよくこれだけ盛り上がれるな…
636:デフォルトの名無しさん
08/05/02 15:34:20
URLリンク(mentai.2ch.net)
637:デフォルトの名無しさん
08/05/02 15:38:27
>>635
思いつくわけないだろw
何でピンポイントにデストラクタだけなんだよ。
C++要らない、とかなら分かるけど。
638:デフォルトの名無しさん
08/05/02 15:42:43
C言語はコンストラクタが無いから使えねぇ
639:482
08/05/02 15:43:31
>>637
お前 >>481 を読んでないのか?
粘着する前に周りを良く見ろよ
640:デフォルトの名無しさん
08/05/02 15:43:44
cには不要。
c++には必要。
でFA
641:482
08/05/02 15:49:24
>>640
『C++要らない』も追加でw
642:デフォルトの名無しさん
08/05/02 15:59:40
そうだな、そういやそういうスレだった
643:デフォルトの名無しさん
08/05/02 16:03:47
そもそもC++なんぞ窓以外では閑古鳥
644:デフォルトの名無しさん
08/05/02 16:12:48
つまり、正統派はCOBOLと言いたいのだな
645:デフォルトの名無しさん
08/05/02 16:43:22
C++はいらない子
646:デフォルトの名無しさん
08/05/02 18:04:51
でもCよりC++の方が明らかに便利じゃないか?
int func(int arg) {
if (arg < 0) return -1; // error
int param = ...;
}
Cだとこんなのがコンパイルできないし。
647:デフォルトの名無しさん
08/05/02 18:08:29
C99で十分
648:デフォルトの名無しさん
08/05/02 19:08:08
てst
649:デフォルトの名無しさん
08/05/02 19:43:48
よくわかんないけど、これわだめなのか
% cat c.c
#include <stdio.h>
#include <stdlib.h>
int func(int arg) { if (arg < 0) return -1; int param = 0; return param; }
int main() { printf("%d¥n", func(-1)); exit(0); }
% cc -ansi -Wall c.c
% ./a.out
-1
650:デフォルトの名無しさん
08/05/02 20:26:46
Javaの方がC++よりひどい欠点がある。
JavaのJava Runtime Environmentのバージョンの問題だ。
Javaで書かれたプログラムはRuntimeバージョンが違うと動作が保障されないだろ。
これだと、Runtimeバージョンが違う二つのソフトは同じマシンで動作する保障がない。
駄目だこりゃ。
651:デフォルトの名無しさん
08/05/02 20:28:43
>>603
それはこういう所の楽しみ方が分かってないからだよ
意見が純粋に意見として存在出来るというのは貴重なんだぜ
誰であるかという属性を意識したいならば、そういう場所へ行けば良い
652:デフォルトの名無しさん
08/05/02 20:36:46
>>651
単に>>616みたいなことにならないように、ってことじゃね?
スレ毎でいいってのも属性を意識する気はないってことかと
653:デフォルトの名無しさん
08/05/02 20:50:27
>>647
少なくとも既存のCでは不足ということでよろしいか?
というか、Cが好まれる理由はポータビリティにあると思うのだけど、
C99にその役目は果たせるのか?
あと、C99でよくてC++でダメな理由は何?
>>649
あれなんでコンパイルできるの?
msvc6,7,8、もBorlandCも全部できなかったよ。
654:デフォルトの名無しさん
08/05/02 20:54:59
>>643
個人PCの約9割がwindowsを使っているわけだが・・・
655:デフォルトの名無しさん
08/05/02 20:55:44
>>650
JREって複数バージョンを同一マシンにインストールできるんじゃないの?
656:デフォルトの名無しさん
08/05/02 20:59:26
vcランタイムやvbランタイムや.netやjava VMやらが、しかも複数インスコされたら
もうそれだけでお腹いっぱい。
657:デフォルトの名無しさん
08/05/02 21:02:29
gccだと>>649のコンパイルできるんだな
-std=c89 -pedantic-errors
これつけるとだめだけど
658:デフォルトの名無しさん
08/05/02 21:12:58
これでいいのか
% cc -ansi -pedantic -Wall c.c
c.c: In function ‘func’:
c.c:3: warning: ISO C90 forbids mixed declarations and code
たしかにC99でじゅうぶんだな
% cc -std=c99 -pedantic -Wall c.c
% ./a.out
-1
659:デフォルトの名無しさん
08/05/02 22:13:54
>>650
Runtimeバージョンが同じでもプラットフォームが違うと動かなかったりする。
WOREをもじってWOTEと冗談ぽく言われたり。
660:デフォルトの名無しさん
08/05/02 23:10:46
>>651
意見=その瞬間の思いつき、ならそれでいいけどね。
ちょっとでも「根拠」というものが関わってくる「まともな」意見交換になると、
ある1レスに意見の全容が入ってることはまず無くて、そいつの発言のラインを辿って
読み込んでいく必要が出てくるけど、そこで誰が誰やらわからないと、ちょいと面倒になる。
661:デフォルトの名無しさん
08/05/02 23:18:06
そういうのを求めるのであれば別の所へ行く方が君の為だろう
662:603
08/05/02 23:50:16
まさに俺自身が誤解されてるような気がするから書いておくけど、
>>603以降で俺のレスは>>627と>>640だけだからね。
663:デフォルトの名無しさん
08/05/02 23:52:04
>>661
「そういうの」がどういうのかわからないけど、
「意見が純粋に意見として存在」するためには前後の認識が必要になるという話。
>>651が「意見ではないものを意見と呼んでいる」場合、野暮なツッコミだったけどね。
664:デフォルトの名無しさん
08/05/02 23:59:02
>>662
誰が誰だか気にし過ぎ
665:デフォルトの名無しさん
08/05/03 00:07:59
そうでもないと思うよ。
666:デフォルトの名無しさん
08/05/03 00:13:52
651は属性とか言わず、普通に
単発の適当な内容をわかった風に書き散らすには、IDは邪魔
って言っておくべきだったんだよ
667:デフォルトの名無しさん
08/05/03 00:14:58
わかった風な事言うなよ
668:デフォルトの名無しさん
08/05/03 00:19:21
お楽しみ頂けただろうか。
実はこのスレには俺とお前と読んでるだけの奴の3人しか居ないんだ。
669:デフォルトの名無しさん
08/05/03 00:27:10
ねーよw
670:デフォルトの名無しさん
08/05/03 00:30:14
以下の不等式に付いて論じよ(30点)
C + LL > C++
671:デフォルトの名無しさん
08/05/03 00:45:44
ナタネ油くらいの燃料が投下されました。
672:デフォルトの名無しさん
08/05/03 00:49:42
#include <iostream>
class Hoge {
public:
Hoge(int n) : n_(n) {}
Hoge(const Hoge& hoge) : n_(hoge.n_) {}
bool operator>(const Hoge& rhs) const { return n_ > rhs.n_; }
Hoge operator+(const Hoge& rhs) const { return Hoge(n_ + rhs.n_); }
Hoge operator++(int) { Hoge tmp(*this); ++n_; return tmp; }
private:
int n_;
};
int main(int argc, char* argv[]) {
Hoge C(10), LL(20);
bool ret = C + LL > C++;
std::cout << ret;
return 0;
}
# 1 (BCC5.6.4)
673:デフォルトの名無しさん
08/05/03 01:30:55
> C++ が唯一無二の最高言語
俺にとってはそうだ。
既に万人向けの言語ではなくなってしまったが…
674:デフォルトの名無しさん
08/05/03 02:05:56
何が最高なの?
675:デフォルトの名無しさん
08/05/03 02:18:25
template
boost
concept
move semantics
676:デフォルトの名無しさん
08/05/03 02:25:29
自分は >>673 ではないが自分にとってもC++は最高だ
実用に耐えるのに面白い
初心者向きではないだろうが、長い間使い続けても新発見があるカオス言語
プロは毎日コードを書くんだよ
すぐに全貌が見えきってしまう言語なんて飽きちゃってつまらないだろう
Haskellとかは面白いけど実用に耐えないから仕事で使えないし
677:デフォルトの名無しさん
08/05/03 02:46:21
C++に関してはgccの方が規格外
678:デフォルトの名無しさん
08/05/03 08:17:50
>>676
×初心者向きではない
○一般人向きではない
×長い間使い続けても新発見があるカオス言語
○誰も全貌を把握していないカオス言語
変態言語のトップランナーである事を分かって使ってればオケ
679:デフォルトの名無しさん
08/05/03 08:38:23
どこまで登っても頂上が見えてこないのがC++
680:デフォルトの名無しさん
08/05/03 08:42:43
※頂上が見えて来たら土を盛って継ぎ足します
681:デフォルトの名無しさん
08/05/03 09:16:26
boost使うと、C++っていったいどこまで上れるのかってそりゃあ恐ろしくなるな。
682:デフォルトの名無しさん
08/05/03 09:27:54
下りのエスカレータを上ってるみたいなもんか
683:デフォルトの名無しさん
08/05/03 09:38:24
C++は登れば登るほど汚くなる山
684:デフォルトの名無しさん
08/05/03 10:21:44
富士山?
685:デフォルトの名無しさん
08/05/03 10:54:14
汚いのがわかってても下山できないのがC++プルグラマ
686:デフォルトの名無しさん
08/05/03 10:59:09
山がある限り登り続ける
687:デフォルトの名無しさん
08/05/03 11:05:06
有名な登山家が言ったよな
地球は青かった
って
688:デフォルトの名無しさん
08/05/03 12:00:59
>>678
c++に限らず、他の言語もお前さんが思ってるより奥が深いよ。
しかし言語のすべてを理解して、すべての機能を使ってコードを書く必要は無い。
クラスを作らせず、スマートポインタやvecterなどの
用意されたライブラリを使って書かせれば、Cより初心者向きだ。
まぁそうは言っても、
俺もwindowsアプリならC#、サーバーサイドならjava、
比較的簡易なウェブアプリならPHPを薦めたりするんだけどな。
他人にC++を薦めるのはActiveXとかの場合かな。
689:デフォルトの名無しさん
08/05/03 12:24:26
>>685
C++は馬鹿が使ったり、馬鹿と一緒に使ったりすると悲惨だけど、
自分が一人で高みに行って使う分には、実に強力だからなぁ。
「ある程度以上へ登れた」人間には、下山する理由が無いんだよね。
690:デフォルトの名無しさん
08/05/03 13:04:18
意味のある難解さは歓迎だ。
691:デフォルトの名無しさん
08/05/03 13:30:20
URLリンク(members.jcom.home.ne.jp)
日時:2001年12月14日18時30分~ 場所:京都YWCA
在日外国籍市民の参政権を考える連続講座 第3回
演題:在日韓国・朝鮮人と国籍 講師:李敬宰さん
ただ、在日が日本国籍をとるということになると、天皇制の問題をどうするのかという人がいますが、
外国人がたくさん日本国籍を取ったほうが、早く天皇制は潰れると思います。
というのは、この先もどんどん外国系市民が増えます。 ある統計では、
一〇〇年後には五人の内三人が外国系になるといいます。 そうなれば、
日本で大和民族がマイノリティーになるのです。 だから、私はあと一〇〇年生きて、
なんとしても日本人を差別して死にたいです。これが夢です(笑)。そういう社会が来たら、
その時に天皇なんていうのは小数民族の酋長さんみたいなものになります。
こうした素晴らしい戦術があるのに、それを、今の左派のように、日本国籍を取ったらダメだということをやっていたら、
いつまでたっても天皇制は温存されたままではないですか。
692:デフォルトの名無しさん
08/05/03 13:45:33
難解さって言っても
C++の難解って誰かの言ったことを丸暗記しろとかそういう類でしょ
693:デフォルトの名無しさん
08/05/03 13:46:31
いや大量のバッドノウハウ
694:デフォルトの名無しさん
08/05/03 14:00:27
>>688
深い奥地まで行っちゃったつもりの奴が一番たちが悪いというか…
底が浅いから辿り着いた事に気付いていない奴が一番痛いというか…
一歩上がっただけで高みに登ったつもりの奴が一番目障りというか…
自覚症状が無いのが哀れだな。
言語の仕様をすべて理解する必要がないって、どんだけ酸っぱい葡萄だよw
695:デフォルトの名無しさん
08/05/03 14:01:31
そうは言うが常人には全て理解するのはまず不可能だと思うぞ
696:デフォルトの名無しさん
08/05/03 14:07:36
誰も全てを理解してないからあんな汚くなったんでしょ
普通の言語じゃ考えられないよね
697:デフォルトの名無しさん
08/05/03 14:08:12
>>692
使わないならそうだね。
使うなら、機能同士が引き起こす「組み合わせ爆発」にも挑まなきゃいけない。
これは丸暗記とはまるで系統の違う難しさだよ。
698:デフォルトの名無しさん
08/05/03 14:12:06
>>689
そのまま山に籠りきって街に出てこなくても誰も困らんけどね
699:デフォルトの名無しさん
08/05/03 14:19:29
>>694
上の文は俺に対してか?
俺は奥地とやらに行ったつもりも、高みに居るつもりも無いぞ。
例えば、boostは基本的にブラックボックスとして使う、と割り切っているし。
あと、俺が言った「奥が深い」は、
複雑性についてでは無いからな。
必要に応じて、より特化出来ることを指している。
javaで例えを挙げると、ソフトリファレンスを使ってキャッシュするとか、
スレッドローカルでやや初期化コストがあるスレッドセーフで無いオブジェクトを使い回すとかな。
俺は出来るだけ言語仕様を理解しようと努めているけど、
他のメンバーにまで強要は出来ない。
それでも開発・メンテで、それによるさしたる問題は起きてない。
700:デフォルトの名無しさん
08/05/03 14:26:21
>>692
馬鹿丸出しの発言ですね。
自分のことでしょう。> 丸暗記のみ
701:デフォルトの名無しさん
08/05/03 14:27:05
いやいや、こういう事がさらっと言えちゃう奴は何か勘違いしてる奴だろ。
>他の言語もお前さんが思ってるより奥が深いよ。
しかもやっぱり自覚が無いみたいだな。
702:デフォルトの名無しさん
08/05/03 14:28:38
>>701はどんな言語も浅く見える天才
703:デフォルトの名無しさん
08/05/03 14:30:18
>>702
俺は何だって必要以上に崇めたりはしないよ
704:デフォルトの名無しさん
08/05/03 14:30:30
>>701
反論なら具体的に頼むよ。
独り言ならそれで結構だけど。
705:デフォルトの名無しさん
08/05/03 14:31:28
小手先のテクニックに溺れるには一番良い言語だよなあ。
706:デフォルトの名無しさん
08/05/03 14:32:46
>>703
ああ、崇めてる、と読み取ったのか。
単なる誤解だな。
707:デフォルトの名無しさん
08/05/03 14:34:51
>>704
>>688 は自分で書いた通りの人間だって事さ。
他人より深い所とやらが見えてしまう病気だね。
708:デフォルトの名無しさん
08/05/03 14:35:56
なにこれ、こんなのrubyなら(ry、haskellなら(ry、lispなら(ry
って考え方しちゃうと生産性の低い言語って見方になっちゃうから変態極めるのも難しいのぅ
709:706
08/05/03 14:37:16
補足すると、
>>678の「誰も全貌を~」に対して、
他の言語も全貌を把握するのは容易ではない、と言いたかっただけだ。
710:デフォルトの名無しさん
08/05/03 14:40:30
>>707はすべて見通せる超人
711:デフォルトの名無しさん
08/05/03 14:40:39
>>709
>他の言語も全貌を把握するのは容易ではない
C++と一緒にされたら笑うしか無いなw
レベルが違うよ
712:デフォルトの名無しさん
08/05/03 14:47:09
それでも規格書のページ数ならまだcommon lispの方が上だよw
713:デフォルトの名無しさん
08/05/03 14:49:46
>>711
俺には「俺はjavaやc#の全貌を把握している」
なんてことを言うことは出来ない。
言語以外もだけど、まだまだ勉強は続いている。
力不足ですまない。
714:デフォルトの名無しさん
08/05/03 14:53:21
天才がいらっしゃるようですね
715:デフォルトの名無しさん
08/05/03 14:55:01
おまいらさっきまで意気揚々と山登りしてたくせに、えらい変わりようだな。
716:デフォルトの名無しさん
08/05/03 14:56:50
山登りしてますよ
717:デフォルトの名無しさん
08/05/03 14:59:09
一番高い山はどの山?
718:デフォルトの名無しさん
08/05/03 15:02:01
haskellに一票
719:デフォルトの名無しさん
08/05/03 15:05:13
lispとperlもヤバいw
ハッカー連中は雲の上行ってんなw
720:デフォルトの名無しさん
08/05/03 15:08:36
一人で登る分にはいいけど馬鹿と一緒だと悲惨な山は?
721:デフォルトの名無しさん
08/05/03 15:09:48
boostって山道教えてもらったんだけど。どう?C++山の近道らしいよ。
722:デフォルトの名無しさん
08/05/03 15:09:59
全部
山をなめんな
723:デフォルトの名無しさん
08/05/03 15:14:08
サーセンw
みんなと街にいるのが好きなもんで
724:デフォルトの名無しさん
08/05/03 15:15:49
Lispやべぇ
URLリンク(www.geekpage.jp)
725:デフォルトの名無しさん
08/05/03 15:17:43
>>698
別に地球の人々を救うためにプログラミング言語選ぶわけじゃないからなぁ。
なに言語のユーザーであれ、山で餓死しようが海で溺死しようが、他人はあんまり困らないものだよ。
726:デフォルトの名無しさん
08/05/03 15:18:55
むしろ山にいるつもりのままで里に下りて来られると困る
727:デフォルトの名無しさん
08/05/03 15:20:33
ねーよw
728:デフォルトの名無しさん
08/05/03 15:20:40
特に、無能が無能であることに寛容なヌルい里はやばいね。
修行帰りの人が混じると地獄と化すね。
729:デフォルトの名無しさん
08/05/03 15:21:03
修行w
730:デフォルトの名無しさん
08/05/03 15:23:47
>>729
実際、C++を学習する程度のことが、なんかこう、修行とか拷問に見えちゃうたぐいの人、
結構多いからねぇ。このスレ立てたのもそのクチだけど。
731:デフォルトの名無しさん
08/05/03 15:25:27
いやいや、c++に限らず、他の言語も奥が深いよ。
732:デフォルトの名無しさん
08/05/03 15:27:42
むしろ、c++以外わからない奴が必死にc++広めようとしてるんだろ
733:デフォルトの名無しさん
08/05/03 15:31:26
まあ、C++より簡単な言語は、C言語ぐらいで、他は難しいもんなぁ
734:デフォルトの名無しさん
08/05/03 15:32:19
しかし、>>1が言ってるのは実は
C++でなく、C++/CLIである件
735:デフォルトの名無しさん
08/05/03 15:32:32
せめてJavaくらいは学んで欲しいよね
736:デフォルトの名無しさん
08/05/03 15:34:59
JAVAなんて、なぜ、仮想マシンなんか作ってその上で実行しないと行けないのか考えたら
夜も眠れなくなるから、学ぶ気にもなれない
JAVA使うぐらいなら、Java Scriptでいいじゃないかと思う
737:デフォルトの名無しさん
08/05/03 15:35:47
落ち着け
738:デフォルトの名無しさん
08/05/03 15:35:56
最後の行はネタだよなw
739:デフォルトの名無しさん
08/05/03 15:36:18
ソースを見たときに、
float x = std::min( 1.0f, y );
とあったとする。このソースから
関数の機能は、名前からある程度推測することは可能だが
二つの引数の意味を知ることは、不可能だ。
俺は、ここはC系統のひとつの弱点だと思っている。
これを克服した言語はあるか?VB以外で
740:デフォルトの名無しさん
08/05/03 15:37:01
最後の行だけ?
741:デフォルトの名無しさん
08/05/03 15:38:36
>>739
名前から推測で良いなら CL, Smalltalk, ObjC などなど
742:デフォルトの名無しさん
08/05/03 15:44:34
>>740
悩むのは自由w
というかjavavmを使わないケースあるからね
743:デフォルトの名無しさん
08/05/03 16:06:50
>>739 Python
def foo(a, b, c):
print a, b, c
foo(a = 1, c = 3, b = 2)
名前つき引数が可能
744:デフォルトの名無しさん
08/05/03 16:07:48
C++にはキーワード引数は無いの?
745:デフォルトの名無しさん
08/05/03 16:13:46
ocaml
746:デフォルトの名無しさん
08/05/03 16:15:07
>>744
無い。
D&Eのどっかにその話があった気がする。
747:デフォルトの名無しさん
08/05/03 16:18:56
JAVA VMを使わないなら、JAVAを使う意味も無いのでは?
そして、JAVA VM使うなら、Java Scriptでも十分じゃなかろうか?
748:デフォルトの名無しさん
08/05/03 16:20:53
意味有るし、javaとjavascriptは単に名前と構文が似てるだけで、
別の言語。
749:デフォルトの名無しさん
08/05/03 16:22:21
>>746
考慮したんだ。意外。
750:デフォルトの名無しさん
08/05/03 16:25:06
JAVAとJava Scriptは違うなんて常識の話じゃん
何を今更
それはともかく、JAVA VMを使わないJAVAに何の意味があるのか全く判らない
751:デフォルトの名無しさん
08/05/03 16:29:46
まず、何で意味が無いと思うか聞こうか。
vmware上で動くlinuxが、
物理マシンで動いても何ら困らないと思うんだが。
752:デフォルトの名無しさん
08/05/03 16:38:15
つまり翻訳するとこういう事だろう!
ECMAScript は現在望み得る最も素晴らしい神の言語。
C++ は Tamarin や JavaScriptCore の実装言語だから
それなりに良いんじゃない。どうでも良いけど。
753:デフォルトの名無しさん
08/05/03 16:44:40
戸田翻訳かよw
754:デフォルトの名無しさん
08/05/03 17:12:13
>>751
それは意味が違うだろう
x86用のソフトを、68000で動かしているそんな違和感
755:デフォルトの名無しさん
08/05/03 17:15:12
Tamarinが悪いのっ
756:デフォルトの名無しさん
08/05/03 17:17:40
>>754
68000で動くとソフトの意味無くなるの?
757:デフォルトの名無しさん
08/05/03 17:20:10
奈津子さんこそ神だろ。
wつけんなよ。
馬鹿にしてると思われるぞ。
758:デフォルトの名無しさん
08/05/03 17:22:04
ごめんなさい。
759:デフォルトの名無しさん
08/05/03 17:26:31
Tamarin、Tamarinうっせーよと思いつつググって、
ちょっと興味持ってしまった。
760:デフォルトの名無しさん
08/05/03 17:53:39
>>744
boostで名前つき引数に対応してる
URLリンク(www.kmonos.net)
761:デフォルトの名無しさん
08/05/03 17:54:40
>>756
貴方日本語判りますか?
私少し判ります
貴方日本語変
762:デフォルトの名無しさん
08/05/03 18:01:47
>>761
変でも何でもいいけど、
>>750-751の通り、意味が無いと思う理由を書いてくれないかな。
763:デフォルトの名無しさん
08/05/03 18:09:25
貴方JAVA理念しってますか?
VM使わない、理念に合わない、しってますか?
764:デフォルトの名無しさん
08/05/03 18:12:42
JazelleとかLiquidVMとかjavaコプロセッサとか
ネイティブトランスレータとかあるけど、
理念に合わないことはない。
理念に合わない理由を説明してもらえないか?
765:デフォルトの名無しさん
08/05/03 18:20:30
>>764
貴方嘘良くない
貴方言うハードワイヤードVM
それJAVA VMね
766:デフォルトの名無しさん
08/05/03 18:22:30
それも仮想マシンに含むならそれで結構だよ。
767:デフォルトの名無しさん
08/05/03 18:27:50
プロセッサも仮想マシンならCも仮想マシン上になるな
処理系がターゲット環境だし
768:デフォルトの名無しさん
08/05/03 18:31:21
HotSpot も Strongtalk も LLVM も Squirrel も Tamarin も
JavaScriptCore もその一部の KJS も C++ なんだよな。
Firefox も Thunderbird も OOo も KDE も Qt も Qtopia も
wxWidget も C++ だし、C++ が分からないとパッチも
書けやしない。嗚呼 C++ がもう少しまともだったら…
769:デフォルトの名無しさん
08/05/03 18:32:16
>>760
すげーな、
boost無理やりすぎ
770:デフォルトの名無しさん
08/05/03 18:33:44
>>767
それは、違うだろ
771:デフォルトの名無しさん
08/05/03 18:39:04
C++は言語自体はあれで出来るだけ最小化されてるんだけどな。
それでも足りないからライブラリで補う、って言って、
あのカオスなライブラリなんだよな。
実際、キーワード引数やガベージコレクタや
今ライブラリでどうにかしてる他多数の機能を
言語に入れろって要求がめちゃめちゃ来てるそうだし。
多分、手に負えない程高度に見えるのは、
ライブラリ作る人達が気合い入れすぎだからだと思う。
772:デフォルトの名無しさん
08/05/03 18:39:07
それじゃあ、JavaVMの理念どうこう以前に
仮想マシン自体が存在しなくなっちゃうよ
773:デフォルトの名無しさん
08/05/03 18:39:40
>>770
何で?
774:デフォルトの名無しさん
08/05/03 18:42:53
>>770
Cの処理系=ネイティブトランスレーター
775:デフォルトの名無しさん
08/05/03 18:48:56
>>773
JAVA VMってのは、仮想のCPUを定義したクラス
インスタンスとしてのJAVA VMがソフトウェアかハードウェアかは問題では無く
JAVA VMの定義に合っていればJAVA VM
776:デフォルトの名無しさん
08/05/03 18:56:01
>>775
Cは物理的なマシンとかCPUを定義してたっけ?
777:デフォルトの名無しさん
08/05/03 18:58:38
何か面白いの見つけた
URLリンク(www.geocities.co.jp)
778:デフォルトの名無しさん
08/05/03 19:01:06
>>771
大きい小さいと言うのもあるけど、みんなが嫌がってるのは
文法が汚いって事じゃないかな。その所為でコンパイルも遅いし。
779:771
08/05/03 19:09:03
>>778
>>777も見て納得した。
ただ、Cとの互換を維持しようとしたのと、
拡張を重ねたって事情はある程度分かってあげて。
この対処は作り直ししかないけど、
javaとかDも徐々に拡張が・・・
780:デフォルトの名無しさん
08/05/03 19:09:55
>>776
してないよ
781:デフォルトの名無しさん
08/05/03 19:13:49
C++の文法は汚いって言われればそのとおり何だけど、それ以上に強力で面白い。
782:デフォルトの名無しさん
08/05/03 19:14:01
だよな
だからCは処理系という仮想的な環境で動いてる
と考えられるわけだ
783:デフォルトの名無しさん
08/05/03 19:14:12
>>771
ライブラリで無理やり実装ってのはCOMで懲りた。
俺もライブラリで補填ってのは間違った方向性だと思う。
言語仕様にあるなら使う、無いなら使わない。
これを守れば、それなりにすっきりまとまるのに
無いならライブラリでそれっぽいの作りましょうとかするから
複雑化するんだよな。
784:デフォルトの名無しさん
08/05/03 19:26:31
>>777のはマジ別の言語を作ろうとしてるなw
テンプレートも使い過ぎると高度過ぎるけど、
プリプロセッサまで使ってメタプロされると流石にギブアップ
boostのmplとかラムダとかの人はそろそろ勘弁して欲しい
785:デフォルトの名無しさん
08/05/03 19:28:48
間違えた
777じゃなくて>>760のリンクだった
786:デフォルトの名無しさん
08/05/03 19:30:03
URLリンク(en.wikipedia.org)
C++は文脈依存文法であるのがコンパイルを遅くする原因みたいだから、
JavaやDが拡張されてもC++の様にはならなさそうな。
787:デフォルトの名無しさん
08/05/03 19:32:13
テンプレートとプリプロセッサだけでここまでできるなんて、C++なんて恐ろしい子
788:デフォルトの名無しさん
08/05/03 19:33:59
>>782
ちげぇーよ
CやC++に仮想環境なんてないよ
そんなの、古いコンパイラに今のコード突っ込めば判るだろ
789:デフォルトの名無しさん
08/05/03 19:35:23
ソリアセンブラで出来ることさえ押さえてまけばマクロで銅にでもなる
790:デフォルトの名無しさん
08/05/03 19:36:19
自前プリプロセッサでラムダとかC++の人は節操ない
791:デフォルトの名無しさん
08/05/03 19:37:43
>>788
はぁ?
792:デフォルトの名無しさん
08/05/03 20:20:15
>>786
特にDは、コンパイラの作りやすさに重点を置いていることを
はっきり明言している言語だものな。
793:デフォルトの名無しさん
08/05/03 20:42:10
Javaもその道の達人が設計に関わったからな
794:デフォルトの名無しさん
08/05/03 21:31:04
コンパイラの作りやすさなんていう利用者には
問題にならないことを優先するよりも、コーディング時の
融通の利きやすさを優先させたほうが、使うほうには
有りがたいと思うけどな。
コンパイル速度はさすがに無視できんけど。
795:デフォルトの名無しさん
08/05/03 21:31:51
処理系の実装のし易さと言語それ自体の使いやすさを混同しないように
796:デフォルトの名無しさん
08/05/03 21:45:58
>>795
釣りだとは思うが…
797:デフォルトの名無しさん
08/05/03 21:54:30
>>796
どういう趣旨の釣りだとお思いで?
798:デフォルトの名無しさん
08/05/03 21:55:05
コンパイラの実装しやすさと、
言語の使いやすさが別物というのに異論は無いけど、
コンパイラの実装しやすさが、コンパイル速度の向上や、
コンパイラが用意されるプラットフォームの増加に繋がって、
言語ユーザーへの恩恵にもなったりするよ。
799:デフォルトの名無しさん
08/05/03 22:12:26
>>797
パーサが書き易いと言う事は自分で好きなだけ構文を弄れるという事だ。
Boost を有り難がってる人種ならその意味が分かるだろ。
釣りか素人かどちらか知らんが、こんな事説明させるなよ。
800:デフォルトの名無しさん
08/05/03 22:19:37
>>799
あほですな
801:デフォルトの名無しさん
08/05/03 22:20:06
パーサを弄るのとテンプレート弄るのは難易度や労力が全然違うだろ。
わかりやすい文法はパーサ作るのは楽だろうが、パーサ作るのが楽なら文法がわかり易くなるかというとそうではないし。FORTHのパーサとか超簡単だけど読みにくいし。
802:デフォルトの名無しさん
08/05/03 22:22:35
>>801
誰もそんな話してないだろw
曲解して否定するのが得意だな
803:デフォルトの名無しさん
08/05/03 22:25:31
>>799>>802
パーザなんて弄ったことない小学生なんでしょ?
804:デフォルトの名無しさん
08/05/03 22:29:26
>>799
1行目と2行目の関連がよくわかりません
ご説明をお願いします
805:デフォルトの名無しさん
08/05/03 22:33:18
>>804
パーサが何をするかは知ってるの?
806:デフォルトの名無しさん
08/05/03 22:35:27
構文解析をします
807:デフォルトの名無しさん
08/05/03 22:39:13
C++の文化だと自分でコードの自動生成したり構文拡張したりはしないのか
808:デフォルトの名無しさん
08/05/03 22:39:27
Boostが何をしないかは知ってるの?
809:デフォルトの名無しさん
08/05/03 22:41:51
>>807
OpenC++ってのもありますが、
今やtempleteがありますしね。
810:デフォルトの名無しさん
08/05/03 22:42:44
超言語的拡張をしません
811:デフォルトの名無しさん
08/05/03 22:44:27
>>808
何をしないの?
812:デフォルトの名無しさん
08/05/03 22:45:07
>>811
>>810
813:デフォルトの名無しさん
08/05/03 22:45:23
boostは小文字でおk
あと、
>Boost を有り難がってる人種ならその意味が分かるだろ。
分かりません。
機能性の優先度は高いものの、メジャーな環境で使えるよう
かなり配慮されて #if とか入りまくりなのに
俺構文作って他のコンパイラで使えなくなったら意味無いじゃん。
何のための(次期)標準かと。
814:デフォルトの名無しさん
08/05/03 22:45:26
>>807
プリプロセッサとテンプレートの仕事なのです。
815:デフォルトの名無しさん
08/05/03 22:46:18
具体的にどんな超言語的拡張をしたいの?
816:デフォルトの名無しさん
08/05/03 22:46:52
>>814
自分でプリプロセッサ作りたくなるでしょ
817:デフォルトの名無しさん
08/05/03 22:47:48
>>807
コードの自動生成はよく行われると思うけど
構文拡張を個々人がするような文化はC++にはないと思う
そんな文化があるの?
ポータビリティはどうなるの?
818:デフォルトの名無しさん
08/05/03 22:51:15
>>816
それと処理系の実装しやすさとは関係ないでしょ
自分プリプロセッサの文法とは関係するけど
819:デフォルトの名無しさん
08/05/03 22:52:07
>>817
例えば cfront を書きたくなったりしたのも最初は個人でしょ
820:デフォルトの名無しさん
08/05/03 22:54:22
コンパイル時に帰納関数を計算するtemplate
演算子オーバーロード
SFINAE
に加えて、
concept_map
があるから独自プリプロセッサなんかいらない。
821:デフォルトの名無しさん
08/05/03 22:55:22
>>819
そんなの上位の一握りだし、さらにその頃とは状況がかなり変わってるし。
822:デフォルトの名無しさん
08/05/03 22:55:37
>>819
だから何?
823:デフォルトの名無しさん
08/05/03 22:57:54
cfrontを書いたのは個人じゃないぞ、AT&T。
bsは方針を練ったが、実装は雇われプログラマがやった。
テスターも雇われがいた。
もともとは電話交換機用のプログラミング言語として作ったから。
824:デフォルトの名無しさん
08/05/03 23:00:56
やっぱり文化が違うな。
まあC++どっぷりじゃそんな気もなくなるか…
825:デフォルトの名無しさん
08/05/03 23:02:29
ぷ
826:デフォルトの名無しさん
08/05/03 23:02:54
URLリンク(fabrice.bellard.free.fr)
例えばC++だと↑こういうのを作るのは無理だよね
コンパイルに死ぬ程時間が掛かるから
827:デフォルトの名無しさん
08/05/03 23:04:13
理屈ではC++最強とは思うが
現実的に何かを作る際に他言語のほうが手っ取り早い(、上に最近は処理時間にそれほどシビアにならない)ってのが
C++選択を躊躇させる
828:デフォルトの名無しさん
08/05/03 23:06:29
コンパイラの実装が無いプラットフォームへの対応とかならまだしも、
ポータビリティ0の独自仕様を個人でとかありえないな。
829:デフォルトの名無しさん
08/05/03 23:06:35
上位レイヤーにしか関わらないPG/SEが増えてきたって事かな。
830:デフォルトの名無しさん
08/05/03 23:10:33
>>828
プリプロセッサならポータビリティは損なわれないでしょ
例えば↓ObjC->Cのトランスレータだけど、C Compilerは何でも良い
URLリンク(users.pandora.be)
831:デフォルトの名無しさん
08/05/03 23:11:35
下位レイヤーが大勢居たらカオスになるだろ。
832:デフォルトの名無しさん
08/05/03 23:14:21
>>794
>コンパイラの作りやすさなんていう利用者には
コンパイラを書かないしコンパイラのソースも読まないPGが
増えてきたって事かな。
833:デフォルトの名無しさん
08/05/03 23:17:55
これからはプロセッサのスペックアップは鈍化して
期待できないから、C++がまた隆盛になるかもだな。
834:デフォルトの名無しさん
08/05/03 23:18:27
読むのはともかく、コンパイラ書く奴が大勢居たらカオスになるだろ。
835:デフォルトの名無しさん
08/05/03 23:18:53
URLリンク(jikes.sourceforge.net)
Jikesみたいなコンパイル速度が売りのコンパイラはC++にあるの?
836:デフォルトの名無しさん
08/05/03 23:23:08
>>834
特色のある言語処理系が色々と出てくるのは悪い事じゃない
例えばCINTとか
URLリンク(root.cern.ch)
837:デフォルトの名無しさん
08/05/03 23:25:23
まあでも今時C++を使ってる人間は余程の熟練者なんだろうな
そうじゃなきゃ普通は>>827みたいに考えるよね
838:デフォルトの名無しさん
08/05/03 23:25:35
>>835
頑張ってググッたようだけどjikesなんて使われてねぇよ
839:デフォルトの名無しさん
08/05/03 23:27:28
>>838
昔は結構使ってたぞ。それなりに有名だったんだが、最近の連中は知らんのか。
840:デフォルトの名無しさん
08/05/03 23:28:35
今は使われていない事に変わりはないだろ。
841:デフォルトの名無しさん
08/05/03 23:28:58
>>839
古参乙
いつのJDK互換か知ってて言ってるのか?
842:デフォルトの名無しさん
08/05/03 23:30:41
>>840
それでも言いたい事は分かるだろ
C++は今も昔もゼロなんだよ
843:デフォルトの名無しさん
08/05/03 23:31:03
C++と比べれば、Javaなんて標準のコンパイラでもめちゃくちゃ速いです。
844:デフォルトの名無しさん
08/05/03 23:32:43
>>843 つまらん
845:デフォルトの名無しさん
08/05/03 23:33:59
C++は標準のコンパイラも無いからポータビリティが大変です。
846:デフォルトの名無しさん
08/05/03 23:34:28
IBMみたいに体力あるところとかOSSならともかく、
独自実装なんてやったアホなコンパイラは標準について来れずに死滅しました
847:デフォルトの名無しさん
08/05/03 23:34:53
>>842
C++に大衆性がないのに同意しない人間はいないだろ。
firefoxとかadobe readerとか、一部のエリートプログラマは使っているが。
848:846
08/05/03 23:35:03
javaコンパイラのことな
849:デフォルトの名無しさん
08/05/03 23:36:05
>>847
エリート乙
850:デフォルトの名無しさん
08/05/03 23:38:08
>>846
Microsoft ってまだ Java やってたんだな…
851:デフォルトの名無しさん
08/05/03 23:41:52
>>821
>そんなの上位の一握りだし
今日一番寂しい言葉だったよ... (´・ω・`)
852:デフォルトの名無しさん
08/05/03 23:43:28
>>850
やってないよ
お亡くなりになるJ#のこと?
853:デフォルトの名無しさん
08/05/03 23:45:15
>>851
何で?
メジャーな環境のフリーなコンパイラがあるのにそんなことするのは
余程上の人間か、もしくはただのアホだろ
854:デフォルトの名無しさん
08/05/03 23:45:43
>>852
やっぱりそうか
「独自実装」で一番最初に思い浮かんだw
855:デフォルトの名無しさん
08/05/03 23:48:08
>>853
何でって、昔は俺言語を作るのが普通だったから…
ガッコでコンパイラの授業あるだろう
856:デフォルトの名無しさん
08/05/03 23:48:17
J#あったなw
最後までJDK1.1(笑)互換だったけど騙されて使ってた会社は、
今もメンテで使ってるかもな。
857:デフォルトの名無しさん
08/05/03 23:50:58
授業で習って、その流れで俺言語作るのと、
実用のために俺言語作るのはわけが違うだろ常考。
どんだけの新言語がポシャッってると。
858:デフォルトの名無しさん
08/05/03 23:54:11
俺言語作るよりチャレンジングなのがC++のtemplate変態プログラミング。
859:デフォルトの名無しさん
08/05/03 23:55:29
ハードウェアとセットで囲い込むか、
マーケティング力が無いと無理だろうな。
そういう意味でRubyはすごいと思うよ。
Railsのおかげではあるけど。
860:デフォルトの名無しさん
08/05/03 23:55:35
実用の為の俺言語作ってる奴も多かったよ
ツール組み込みのマクロとか
861:デフォルトの名無しさん
08/05/03 23:58:29
マクロまでハードル落としたなw
そりゃマクロなら結構居るだろうさw
862:デフォルトの名無しさん
08/05/03 23:59:59
>>861
マクロっつってもフルセットの Scheme とかだぜ
まあ俺言語じゃないけど…
863:デフォルトの名無しさん
08/05/04 00:01:30
反応を見てると、やっぱり最近の人はそういうのやらないんだな…
864:デフォルトの名無しさん
08/05/04 00:05:39
俺の先輩は新入社員研修でCのコンパイラ作らされたって言ってたな
やっぱり文化が違うw
865:デフォルトの名無しさん
08/05/04 00:07:44
俺言語の話をしたいのか互換実装の話をしたいのかちゃんと絞ろうぜ・・・
俺も別に完全否定する気はないし、
小規模な俺言語(マクロ)
コンパイラが無いプラットフォームへの実装
標準についていく力がある組織による競合実装
なら十分有りだと思ってる。
C++の個人での俺拡張がありえないって言ってるわけで。
866:デフォルトの名無しさん
08/05/04 00:10:51
>>865
>C++の個人での俺拡張がありえない
俺もそう思うよ。腐った木に水やりをする人間はいないからね。
D や Java はそこら辺ちゃんと筋を通してる。
867:デフォルトの名無しさん
08/05/04 00:22:25
今日は入り浸りすぎたんで暫くレスを自粛するわ…
じゃあね
868:デフォルトの名無しさん
08/05/04 00:24:39
Javaはコンパイラ拡張が専門のPolyglotって実装があるよ。
C++はg++ベースが多い。例えばConceptGCC。
869:デフォルトの名無しさん
08/05/04 01:16:59
プログラム書くのにコンパイラの実装なんて気にする必要ないじゃん
つか、C++簡単だろう
わかんない、どんだけ低能なんだよ
870:デフォルトの名無しさん
08/05/04 01:20:55
簡単ではないだろう
STLからbostまでにどれだけの英知が必要だったか
871:デフォルトの名無しさん
08/05/04 01:38:30
>>870
それは別にC++が特別ではないだろ。
本格的な言語ならどれだって大量のリソースが注ぎ込まれているはず。
あと、使う方もC++が特別難しいとは思わないが、ほかが特別簡単とも思わない。
例えば、自分1人で作るプログラムなら当然C++は候補の1つ。
利点欠点を考え気分を加味して、C++が最良と思えばそれを使う。別のが良ければそれを使う。
872:デフォルトの名無しさん
08/05/04 01:50:00
程度問題だけど
標準ライブラリがあれほど言語の能力を使いきれてなかったのも珍しくない?
つまり標準化委員達にも把握できてなかったわけで
自分はC++を理解しているつもりだけど、本当はboostの先が果てしないのじゃないかと
873:デフォルトの名無しさん
08/05/04 01:56:03
そもそも標準ライブラリのbind.*とかが欠陥品だからなぁ・・・
874:デフォルトの名無しさん
08/05/04 01:58:11
かなり早い時期に作られたライブラリなんだから責めないで。
何年もの研究の成果があってこそのboostなんだし。
875:デフォルトの名無しさん
08/05/04 02:01:05
というわけで正しくC++を使うのは識者たちにも難しかった
876:デフォルトの名無しさん
08/05/04 02:13:02
正しくって?
限界まで、の間違いだろ
877:デフォルトの名無しさん
08/05/04 07:40:58
iostreamきもい
878:デフォルトの名無しさん
08/05/04 07:43:23
>>847
パソコンで箱売りされているソフトの大半がVCで書かれてますが?
879:デフォルトの名無しさん
08/05/04 07:49:17
土方の話はしてないからw
880:デフォルトの名無しさん
08/05/04 11:16:01
>>870
道具を作るのには英知が必要かもしれないが
道具を使うのには英知なんて必要ないだろうが
881:デフォルトの名無しさん
08/05/04 12:22:17
>>879
話を限定しないと、C++に大衆性が無いなんてトンデモ理論は
言い続けられないですもんねw
882:デフォルトの名無しさん
08/05/04 16:13:39
>>880
最近その言葉の意味を身をもって知ることになったんで同意する。
道具を使うのは簡単なんだよな。使い方勉強すればいいだけなんだし。
883:デフォルトの名無しさん
08/05/04 16:32:55
まぁ、使うのは作る知識の5%くらいは必要とかそんな感じなんじゃない。
その5%にも満たないという残念な実感、そんな経験が俺にもありました。
884:デフォルトの名無しさん
08/05/04 17:01:25
よく見ると>>2が痛々しいな
885:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/04 18:08:58
>>883
5%どころか0.05%ぐらいが妥当じゃないかと
887:デフォルトの名無しさん
08/05/04 22:22:26
>>880
残念だが、俺の作ったライブラリを使うには
とびっきりの英知が必要になるぞ
888:デフォルトの名無しさん
08/05/04 22:26:44
mb2sync乙
889:デフォルトの名無しさん
08/05/04 22:42:56
>>887
使い勝手が悪いってことじゃないかそれ。
890:デフォルトの名無しさん
08/05/04 23:25:02
>>887に英知が無いことだけは良く分かった
891:デフォルトの名無しさん
08/05/05 00:19:01
酷いネタにマジレスを見たw
892:デフォルトの名無しさん
08/05/05 10:27:56
レスを追ってて思ったんだが、
CのFree()とC++のデストラクタとC#のDispose()って具体的に挙動や用途としてはどうちがうの?
なんとなくはわかるんだが、正確にどういう違いがあるかわからん。
893:デフォルトの名無しさん
08/05/05 10:39:12
C++にはdeleteもあるぞ。
894:デフォルトの名無しさん
08/05/05 10:39:25
malloc して free しない →100%メモリリークする
new して delete しない →メモリリークするかどうかはケースバイケース
New して Disposeしない →メモリリークするが一部はガベージコレクションで救済される
895:デフォルトの名無しさん
08/05/05 11:25:11
ちょっと3レスに分けて書くよ。
<C>
・malloc() :メモリ確保
・free() :メモリ解放(mallocが再利用出来る。OSに返すとは限らない)
すぐ終了するプロセスは、大量に確保を
繰り返すもので無い限りfree()しなくても大丈夫。
長期的に動くプロセスはfree()を使わないと
malloc()で再利用出来ないため、問題となる。
ただし、mallocの実装によっては徐々に断片化してオワル。
なので、組み込みのようなものではmalloc系を使わない、
ページ単位で確保する処理でラップなどで対応。
896:デフォルトの名無しさん
08/05/05 11:25:40
<C++>
・new:malloc()して、それをthisとしてコンストラクタを実行
※厳密にはmallocとは限らない。
・delete:デストラクタを実行したあと、free()する
・デストラクタ:メモリ解放はしないけど、リソースの解放などをする。
なので基本的に呼ぶこと。
newを使用しない自動変数の場合は、
変数のスコープから出る際にデストラクタが呼ばれる。
リソースもモダンなOSはプロセス終了時に破棄するけど、
名前付き共有メモリマップのような
プロセスを超えて生存する仕様のリソースは当然残る。
897:デフォルトの名無しさん
08/05/05 11:26:06
<C#>
・メソッド内のusing:指定された変数が
usingのスコープから出る際にDispose()が呼ばれる。
・Dispose():メモリ解放はしないけど、リソースの解放などをする。
なのでDisposableを持っている場合は基本的に呼ぶこと。
C#はGCがあるので放っておいてもメモリは解放される。
その前段でFinalizeが呼ばれるので、その際通常はDispose()が呼ばれる。
つまり明示的にDisposeしなくて呼ばれるが、
GCはコネクションプールの枯渇などを検知しないので、
メモリに余裕がある場合はいつまでもFinalizeも呼ばれず問題となる。
898:デフォルトの名無しさん
08/05/05 11:35:43
デストラクタはいるけど、deleteはいらないな。
899:デフォルトの名無しさん
08/05/05 11:39:44
そうだね
delete不要論はsmart_ptrによるRAIIのテクニックが広まった頃にC++プログラマは口々に言ってたよね
900:デフォルトの名無しさん
08/05/05 11:42:10
>>894
1行目をリークとするなら2行目も100%リークです。
3行目もおかしい。文脈的にはそのケースはメモリリークしない。
>>898
何で?
901:900
08/05/05 11:43:55
スマートポインタが内部的に呼ぶから明示的なdeleteは不要、
ということならおk。それなら同意なので。
902:デフォルトの名無しさん
08/05/05 11:51:30
ユーザコードでdeleteを記述したかどうかなんてのは、deleteの有無を論じる上で正確じゃない。
A * a = new A;
// iroiro
a->~A();
こんなコードを書く奴が出てきてしまうかもしれん。
903:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/05 12:19:12
それただのクソコードじゃんw
どういう責任範囲か不明だし、Aが責任もつならSetBのときにdelete bだろ
905:デフォルトの名無しさん
08/05/05 12:21:21
newをユーザコードで直接使わずにfactory methodを使えと言うことですか
906:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/05 12:44:55
>>906
a = new A;
some_smart_ptr<A> b(a);
delete a;
908:デフォルトの名無しさん
08/05/05 12:50:13
>>907
何が言いたいんだw
バグを披露したいのか?
909:デフォルトの名無しさん
08/05/05 12:51:27
そこでGCだ
910:デフォルトの名無しさん
08/05/05 12:55:43
newしたらdeleteすべしと言うことは、>>907って事だろ
a->SetB(new B);
とどう違うのかって話にも取れるな
911:デフォルトの名無しさん
08/05/05 13:03:18
どんだけw
a = new A; //newしたら
some_smart_ptr<A> b(a); //deleteすべし
「明示的な」「責任」「生存期間」とか言い方はそれぞれだけど
>>899 >>901 >>902 >>904 >>906 は皆そういうことを言ってる
912:デフォルトの名無しさん
08/05/05 13:10:26
>>896
> ・delete:デストラクタを実行したあと、free()する
ちがうぞ。allocatorのdeallocate()を呼ぶ。
913:デフォルトの名無しさん
08/05/05 13:14:52
>>912
だから「※厳密にはmallocとは限らない。」って書いたんだけど・・・。
>>892向けに書いたから分かりやすいようにあえてそうしたの。
914:デフォルトの名無しさん
08/05/05 13:17:21
newも厳密に言ったらoperator newとか配置newとかあるしな
915:デフォルトの名無しさん
08/05/05 13:19:26
>>911
>>903コードだと、class Bは、class Aのプライベートなメンバーじゃん
class A以外で、*bをdeleteしちゃ不味いだろ、Aの生存期間が終了するまでの間にBを利用する可能性があるんだし
ゲタやセッタがあって、Aのコンストラクタでbをnewしないって事は、クラスBの派生クラスCを使う可能性だって考えられるし
916:デフォルトの名無しさん
08/05/05 13:21:52
>>911にclass Bなんか出てきてないけど。
917:デフォルトの名無しさん
08/05/05 13:23:30
>>916
>>903にでてるじゃん
918:デフォルトの名無しさん
08/05/05 13:23:55
>>913
malloc/free使う実装ってあるの?
919:デフォルトの名無しさん
08/05/05 13:27:32
>>915
> >>903コードだと
まだ>>903のコードのこと言ってると分かって軽くフイタw
> プライベートな
privateだろうがset,getがあれば同じこと
> Aの生存期間が終了するまでの間にBを利用する可能性
>>904 >>906であるようにAの仕様が意味不明なので何とも言えない
> 派生クラスCを
Cを使っても問題無い(virtual ~B()でないのに継承してAに渡すのはただのバグ)
920:デフォルトの名無しさん
08/05/05 13:27:49
>>917
なぜ>>911に対してコメントしたの?
921:デフォルトの名無しさん
08/05/05 13:30:38
>>920
>>910への返答が>>911だから
922:デフォルトの名無しさん
08/05/05 13:31:55
>>918
あると思うよ。
923:919
08/05/05 13:33:41
>>921
ああスマン a->SetB(new B); のところはどうでも良すぎて無意識にスルーしてた
924:922
08/05/05 13:36:30
>>918
とりあえずVC++
URLリンク(okwave.jp)
925:デフォルトの名無しさん
08/05/05 13:42:05
a->SetB(new B)は駄目で、some_smart_ptr<A> a(new A)はいいって、どんなやねん
どっちもスマートポインタだろうがw
926:デフォルトの名無しさん
08/05/05 13:43:16
>>918
g++は下請のlibiberty/xmalloc.cからmalloc()呼び出してる。
libibertyは差し換えられるようになっているけれど。
927:デフォルトの名無しさん
08/05/05 13:48:46
>どっちもスマートポインタだろうがw
>Aの仕様が意味不明なので
とあるように、それならそうと始めから書いてくれないと。
>>903のようなコードからスマートポインタを
書こうとしたことを読み取るのは難しい。
分かってる人ならサフィックスに_ptr付けるとかする。
928:903
08/05/05 13:52:39
俺のコードですまんかった
C++覚えてまだ半年ぐらいで難しいことはわからん
ウインドウズ用のクラスライブラリ作ってて、MDIクライアントとかdeleteするのが面倒で、あんなコードをいっぱい書いてる
そっか、駄目なのか...楽でいいのに...orz
929:デフォルトの名無しさん
08/05/05 13:53:41
>>925
> どっちもスマートポインタだろうがw
分かんねぇよw
コンストラクタくらい付けろw
コピーされた場合もどうすんだよ
930:デフォルトの名無しさん
08/05/05 13:55:14
>>929
色々な処理に入ってるんじゃないの?
931:デフォルトの名無しさん
08/05/05 13:56:29
>>928
std::auto_ptr, boost::shared_ptrあたりの使い方を覚えるべき。
932:デフォルトの名無しさん
08/05/05 13:59:35
>>930
auto_ptrの仕様や、shared_ptr・weak_ptrが作られた理由は、
色々、で片付けられるほど気軽なものじゃないんだせ・・・。
933:デフォルトの名無しさん
08/05/05 14:05:27
>ウインドウズ用の
まぁ今だったらマジでC#オヌヌメ
既存の資産もDLLにしとけばC#から使えるし。
934:903
08/05/05 14:13:05
>>933
大枠は既に出来て、あとは細かいコントロール類だけだから、今更C#を覚えるよりは速いかな
C++をマスターしたと思ったらC#も触ってみるよ
935:デフォルトの名無しさん
08/05/05 15:29:02
これらを元に考えると、 犯人は男、もしかすると女の可能性もあり。
年齢は10代~50代、あるいは60代以上。
身長は1m~2mくらい。
犯行は単独もしくは複数。
936:デフォルトの名無しさん
08/05/05 15:36:25
そして調査の結果、事故死であることが判明。
937:デフォルトの名無しさん
08/05/05 15:38:00
車の中でC#動いてたらイヤでしょ
938:デフォルトの名無しさん
08/05/06 01:14:19
>>937
バグでエンジンがかからなかったり事故を起こしたりしなければ別にどうでもいい。
939:デフォルトの名無しさん
08/05/06 01:20:41
プログラマって授業中にずっとノートにコード書いてたり、家でこそこそギャルゲ作ってて
将来のことで親と喧嘩して、ゲームとかソフトとかなにか作って食って生きたいって言うも、
そんな子供みたいなことをいつまでもやってるんじゃないって頭ごなしに否定されて
夜の街を彷徨って帰ってきたら、みんな寝てないみたいで、暖かいご飯が用意されてて、
おかんと「おとうさんが大事な話があるからって」「・・・うん」みたいな会話しちゃう生き物だと思ってたけど違うの?
940:デフォルトの名無しさん
08/05/06 01:27:21
>>939
それプログラマじゃなくてただの勘違いしたお子ちゃまだから。
941:デフォルトの名無しさん
08/05/06 07:06:03
>>939
そういう生き方でもいい。お前の人生なんだもの。お前の思うとおり生きれよ。
942:デフォルトの名無しさん
08/05/07 00:14:18
…といった具合にネタにマジレスしちゃうのがプログラマ
943:デフォルトの名無しさん
08/05/07 00:25:32
マジレスに見えるんだw
944:デフォルトの名無しさん
08/05/07 00:27:14
少なくとも>>941はマジレスじゃないだろw
945:デフォルトの名無しさん
08/05/07 00:27:51
被った・・・
946:デフォルトの名無しさん
08/05/07 04:01:18
…といった具合にネタにマジレスしちゃうのがプログラマ
947:デフォルトの名無しさん
08/05/07 05:21:21
C++と関係ない話題は他所でやれ
948:デフォルトの名無しさん
08/05/09 12:17:44
しかし、ベースになるクラスライブラリを作るのに、STL使えってのはどうなの?
むしろ、そういった物の場合は、vectorすらゆるさんぐらいで良いと思うが
949:デフォルトの名無しさん
08/05/09 14:10:30
vectorを許さないで俺vectorを書くんですね、わかります
950:デフォルトの名無しさん
08/05/09 17:28:18
自分の靴紐を持ち、上方にグイと強く引っ張ると身体が持ち上がります
次に反対側の靴の靴紐も同じ様に引き上げれば、宙に浮くことが出来ます
951:デフォルトの名無しさん
08/05/09 20:27:03
>>950
空飛べた!
サンクス
952:デフォルトの名無しさん
08/05/09 20:28:18
>>948
もちろんmalloc/free/printf/scanfも使わないんだよね?
対応するOSのAPIをラップするところから始めないと。
953:デフォルトの名無しさん
08/05/09 20:41:53
>>952
STL使う使わないとは関係ない話だけど、大抵のポータブルなライブラリでは
そこらへんはランタイムまかせにせずラップ関数を使ってるよね。
954:デフォルトの名無しさん
08/05/09 22:19:09
>>952
一歩間違えると、newやdeleteすら、オーバーロード無しには使えなかったりする環境もあるけどな
955:デフォルトの名無しさん
08/05/13 12:22:26
>>739
VB知らないから、的を外してるかもしれんが
AdaとかPythonは名前付きの引数使えるよ
956:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/16 07:58:53
PL/1の夢、再来ですね。わかります
958:デフォルトの名無しさん
08/05/16 08:05:52
まぁ、俺も移植することあるから気持ちは分かるけど、
外部ツールで実現された場合、移植元と先の知識を持つ技術者も減ったりと、
移植は余計大変にならない?
そのツールがたまたま移植元と先を両方ともカバーしていれば
容易にはなるだろうけど。
それに、ソース生成系でなくても、
cfrontは例外が実装出来ずにティウンティウンしたし、
GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。
※ Boehm GCはハックみたいなもの
あとC++,Java,C#のジェネリックは全然足並み揃ってないです・・・
959:デフォルトの名無しさん
08/05/16 08:51:10
>>958
> GCは言語・ランタイムのサポート無しでは完全な実装が不可能だしね。
> ※ Boehm GCはハックみたいなもの
「コンサバしか無理」と言えばいいのでは。
960:デフォルトの名無しさん
08/05/16 10:27:27
コンサバが何か分からずググちゃったよ・・・w
「保守的GCしか実装出来ない」とは一度書いて消した。
そう呼びたくなくてね。
ハックみたいなもの、とやんわり言ったけど、
はっきり言うと俺はアレを「出来損ないGC」だと思っています・・・。
961:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/05/16 18:47:27
956も961も見覚えがあるんだが、いつどこでだったか思い出せない。
>>961
「C++の設計と進化」を追加。
そういうデザインにせざるを得なかった事情の一端が書いてある。
963:デフォルトの名無しさん
08/05/16 18:56:21
C++はともかくとしてJavaのGenericsは正直どーか?と思うが。
964:デフォルトの名無しさん
08/05/16 20:25:13
正直 C++ は酷いよなあ。
965:デフォルトの名無しさん
08/05/16 21:45:21
>>961
お前結構前で知識が止ってるよ。
試行錯誤時代の「Modern C++ Design」をそんなに熱く語られても。
966:デフォルトの名無しさん
08/05/16 21:46:37
上から目線ワラタ
967:デフォルトの名無しさん
08/05/16 23:11:25
ARM & FDISも今となってはC++03規格と0xドラフトに置き換えだな。
968:デフォルトの名無しさん
08/05/16 23:13:57
そして C++ は永遠に表舞台から消える訳か…
それ良いな
969:デフォルトの名無しさん
08/05/16 23:26:30
縁の下の力持ちとして生き続けるということですね、わかります
970:デフォルトの名無しさん
08/05/16 23:31:43
いや、どちらかというと蚊帳の外
971:デフォルトの名無しさん
08/05/16 23:31:54
>>967
ARMは規格と違ってannotatedの部分が面白いけど、D&Eに置き換えだね。
「オブジェクトモデル」に相当するのがない。
972:デフォルトの名無しさん
08/05/16 23:36:24
今北産業
973:デフォルトの名無しさん
08/05/17 00:01:05
>>972
言語に依存すると移植が大変
有名な本は全部読め
次スレ頼む
974:デフォルトの名無しさん
08/05/17 00:04:44
>>972
c++は言語オタが素人に本売るために複雑になっている
975:デフォルトの名無しさん
08/05/17 00:23:25
>>961
> はっきり言って、こんなテクニックを理解する時間があれば、まともなコンパイラが実装できるのに。
それは無いなぁw
976:デフォルトの名無しさん
08/05/17 01:15:56
VCが最後の砦という感じはする
977:デフォルトの名無しさん
08/05/17 01:17:36
Windows Universe ではそうかもしれんね
978:デフォルトの名無しさん
08/05/17 01:51:39
C++は最近使用範囲が広がってる感じがする
GoogleもMozillaも使っている
新しく始めるプロジェクトでC++を使えるのにCで書く必要はないのだ
名前空間と関数のオーバーロードがあるだけでかなりベターなCとして使えるのだから
もちろん主要なターゲット環境にCコンパイラしかないのならCを使うしかないが
979:デフォルトの名無しさん
08/05/17 02:01:54
Mozilla は昔からでしょ
Google は Java も Python も JavaScript も独自言語も使っているし
980:デフォルトの名無しさん
08/05/17 02:12:40
そうだよ
ネイティブコードを吐く言語としてC++を選択している
JavaもPythonもJavaScriptも使われる場面や用途が違う
981:デフォルトの名無しさん
08/05/17 02:20:40
でも Yahoo! の Hadoop とかは Java なんだよね…
982:デフォルトの名無しさん
08/05/17 02:28:35
そんな><
983:デフォルトの名無しさん
08/05/17 06:05:50
名前空間はともかくオーバーロードはたまに困ったちゃん扱いされるじゃないか
ベターから外れる
984:デフォルトの名無しさん
08/05/17 12:29:03
JAVAそのものはC++じゃなかったけか?
985:デフォルトの名無しさん
08/05/17 12:44:06
C++を見捨てたというより、頭が悪くてC++についていけないだけの話だろ
986:デフォルトの名無しさん
08/05/17 13:48:25
>>985
残り少なくなった C++ 信者の脳内設定ではね。現実は真逆。
987:デフォルトの名無しさん
08/05/17 14:31:55
CとC++の中間に位置する言語があればいいのに。
988:デフォルトの名無しさん
08/05/17 14:39:00
中間もなにもC++でC++特有の機能を使わない様にコーティングすれば
済む話だと思うが。
989:デフォルトの名無しさん
08/05/17 14:47:15
C++の終わりなき拡張(でいいのかな?)のせいで
どんどんとっつきにくくなってるから
そろそろ現ANCI準拠のC++と今以上に拡張するC++は別物として扱って欲しい。
そんな俺は最近C++に触れ始めたC++初心者。
990:デフォルトの名無しさん
08/05/17 14:53:01
>>988
済まないからみんな困ってるんじゃないか
それで済むなら EC++ なんて作らないよ
もっと現実を直視しようぜ
991:デフォルトの名無しさん
08/05/17 15:41:22
ANCI
992:デフォルトの名無しさん
08/05/17 15:49:42
ANSIだったな。すまん
993:デフォルトの名無しさん
08/05/17 15:56:16
>>983
Cよりも新しい言語では関数のオーバーロードを許す言語は多いじゃない
そしてC++より新しい言語でも多いでしょ
言語設計者が有用であると判断しているケースが多いわけだ