924 :
名無しさん@お腹いっぱい。:04/03/17 00:01
なるほど。確かにそうかも。
>>919 代入が終わってから加算されるので、増えない。
に一票
926 :
名無しさん@お腹いっぱい。:04/03/17 01:09
「C++ をマトモに使う」ってどういうことかな。
template は魅力的だけど C++ の OOP なんてキモチワルイ
だけで便利な構造体以上の使い方する気しないんですけど。
//こんなコメントの書き方に憧れた。
//これだけの為にC++はじめた。
//結局その他の機能は手つかず。
//仕事は未だにアセンブラばかりなのでどうでもいいのだが。
>>926 C++のOOPが気持ち悪いなら自分なりのOOPを書けばいいだけなんだけど
C++は無駄な機能はたくさんあるけど、足りない機能はほとんどないでしょ
動的にいろいろいじる機能がない気がするけど。
動的な関数生成とか。
>>928 あとジャグ配列あれば文句ない。
まぁクラス自分で作ればいいんだけどね。
>>929 そんなのCにだってないじゃん。
C++はあくまでCの路線には忠実なんだよ。それがいいところ。
>>931 でも、そこがOOしてないと言われちゃうところなんじゃないの?
動的にいろいろいじれてこそのOOだと思う人も多いわけだし。
まあ、動的にいろいろすると、デバグはしにくくなってしょうが
ないからヲレは嫌いなんだけどね…
気持ち悪くない Object System 作るのは、もうちょっと動的な機能がないと厳しいと思う。
多機能な C として使うぶんにはいいけど。
C++に限らず、ネイティブコードに落とすコンパイラで実現してる環境があるのかね?
「C++インタープリタ」でも探したら?
どうしてもやりたければ
Javaみたいに中間言語にするか
スクリプトエンジンでも作るんだね。
JITまで実装すれば速度的なデメリットも緩和されるでしょ。
俺には不可能だし、そもそも「C/C++」にそんな機能が欲しいとも思わないけどね。
D言語のDはDQNのD
動的な機能ってOOPと関係あんの?
未だにSmalltalkだけがOOPだと信じてる人にとっては
関係あるんじゃない?
>>935 > C++に限らず、ネイティブコードに落とすコンパイラで実現してる環境があるのかね?
Lisp 系とか関数型とかの言語には特に重要な機能だから、そっちの処理系では大体実装されてると思う。
Common Lisp だと CMUCL とか SBCL が直接 native code に落とすね。
Scheme だと Bigloo とか Chicken とか、一度 C に変換するのが多い。
ML だと OCaml とかが native code 吐くみたい。
などなど。
>>938 OOP って根本的に動的なものだと思うけど。
問題を Object の関わりとして記述する。
関わりの中で、「Object」も「関わり」も、いろいろ変化を続けていく。
その変化の先に、求める答えが現れるようにするのが OOP でしょ。
で。
変化の中で、使いたい method が変わってくることもある。
でも、 method が動的に生成できないと、使いたくなるかもしれない method を、予め全部作っとかなきゃいけない。
極端に大規模な State Pattern とか Strategy Pattern を template と組み合わせて…みたいな。
そういう OOP は可能かもしれないけど、私は「気持ち悪い」。
>>939 Smalltalk「だけ」とは思わないけど…
C++ で手が届く範囲だけだと、ちょっと狭いと思う。
Lispのコンパイラって?
すまん。
動的に作成したmethodをどうやってnative実行してるの?
バリバリに実行環境に依存したコードだよね?ネイティブコードって。
複数プロセッサ(ネットワーク上)や異機種間の動作(RMI相当)とかは無視していいのかな。
>>931 実行時の動的関数生成は C++ の設計思想と相反するから要らんけど、
無名関数は書けるようになって欲しい。STL の algorithm とか使い
出すと、
o 関数オブジェクトをグローバルに定義する
o mem_fun とかを駆使して関数オブジェクトを作る
o boost::lambda 使う
どれかの選択を迫られる。後者二つは C++ 標準の記法とかけ離れる
ことがしばしばで、ちょっと辛い。
Javaの無名クラスも。あれはよいものだ。
>>942 ごめん、内部はよく知らない。
# 見てみたけど、解析できなかった…
>>942 組み込み(Javaで言うところのnative)関数の扱いと一緒だよ。
Dynamic linkするだけ。
GNU Common LispだとCのコードに変換してから、
コンパイルして.oにして、サイズが分かったら、
その分malloc(3)して、置くべきアドレスが分かったから、
ldしなおして、loadしてくる。
後はsymbolのsymbol-functionのところにcompile済flag立てて、
アドレスを書き込むだけ。
もちろん環境が違ったら持ち運べないね。コンパイル済コードは。
クロージャがほしいー
クロージャって関数ポインタだろ?
そんな旧世代のC言語チックな機能捨てろよ。
まともなC++プログラマは関数オブジェクトを使う。
最適化だって関数ポインタ使うより効きやすい。
ハーバートシルトの独修C++にもそう書いてある。
まぁ947はろくにコード書いたこともないDQN私立大学の学生か(宿題なのか?ワラ)、
ソートも知らない高卒COBOLerだろ。
演算子オーバーロードなんていっても分からないだろうな(ワラ
.. |
.. |
J
.soからクラスをロードしたり
それを別の言語から使ったりする機構はunixにはないの?
>>948 > クロージャって関数ポインタだろ?
lisp 屋に聞いてみな?
笑い飛ばされるだけだから。。。
環境も含まれますね。
954 :
名無しさん@お腹いっぱい。:04/09/30 19:34:59
そうやって俺をイラつかせて、何をしたいんだ。
俺に恨みでもあるのか。それとも人をからかうのが好きなのか。
どちらにしても、お前は悪意をもって人を傷つけようとした。
こういう事はこれで最後にしろ。
ここ良スレでつね。
ところで、JavaからC++に移行ってスムースに出来るもんなのでしょうか?
C→Javaより簡単。C++→Javaよりは大変。
UNIXだとCの力も借りないと何もできないけど。
_button1.signal_clicked ().connect (SigC::slot (*this, &Unko::on_button1_clicked));
なんかこういうの見ると微妙に鬱
958 :
名無しさん@お腹いっぱい。:04/10/07 19:23:33
C熟練者がCを使えばCは最高の言語と成り得る
非C熟練者がCを使えばCは最高の糞言語と成り得る
C++熟練者がC++を使えばC++は最高の言語と成り得る
非C++熟練者がC++を使えばC++は最高の糞言語と成り得る
959 :
名無しさん@お腹いっぱい。:04/10/08 21:01:02
>958
ビヨルンの野郎がC++で実装したC++の機能は糞としか思えないのだが
delegateがないのは糞杉
C++を愛してます
使い慣れないC++でkqueueラッパーを書いてみましたが、途中で訳わかめになりました。
だれか修正してくれませんか?
963 :
名無しさん@お腹いっぱい。:05/03/03 23:29:20
尾は名をあげま(´・ω・`)ショボーン簿利に
964 :
名無しさん@お腹いっぱい。:UNIX時間(+0900)35年,2005/04/02(土) 21:03:50
965 :
名無しさん@お腹いっぱい。:UNIX時間(+0900)35年,2005/04/02(土) 21:31:30
カーネルドライバとかC++で書けねえじゃん。
>>965 そうだね。Cいらないっていってるやつってよくわからん。
単なる若人だと思う。
>>967 そうとも限らんのだよ。開発効率を上げられるってどっかのコンサルに吹き込まれて
C++だのJavaだのC#に移行しようとして失敗&利益がた落ちなんてのは山ほどあるわけで…
ま、オブジェクト指向なんてのは10年前に済ませておくべき「奇形的」なアイデアだったわけで、
はしかみたいなもんだな。今は、オブジェクト指向をどうやって乗り越えるか?が真の課題のはずなんだが・・・
C++は作った本人しか分からんからやだ
cの方が分かりやすい
Cで書いたって結局はC++っぽくなってしまう、
それなら最初からC++で書いたほうが楽。
>>969 作った本人も気を抜くと忘れてしまいそうなトリッキーなルールが
一杯ある C++ はいとおしい存在だよ。
>>971 Linux のカーネルなんて結構そういうノリだよね。
C を使ってる現場でも function pointer なんか使ってくると、
C++ で書けねーものかなんてね。