08/08/06 17:41:25
ぶっちゃけた話Cじゃ出来ない事って特にないよね
2:デフォルトの名無しさん
08/08/06 17:43:04
アセンブラで出来ないことも無い訳だが
3:デフォルトの名無しさん
08/08/06 17:47:54
アセンブラは移植性ないじゃん
Cにはプリプロセッサという素晴らしい仕組みがある
4:デフォルトの名無しさん
08/08/06 18:01:23
プリプロセッサ自体はcじゃないんじゃ…
5:デフォルトの名無しさん
08/08/06 18:41:37
チューリングマシンですねわかります
6:デフォルトの名無しさん
08/08/06 20:22:12
HaskellやRubyなら信者乙、Lispならまじめにその通りだと思うと書くところだったんだが……。
7:デフォルトの名無しさん
08/08/06 20:58:06
>Cにはプリプロセッサという素晴らしい仕組みがある
その"素晴らしい"仕組みのおかげで地獄を見た人間が大勢いるわけだが。
8:デフォルトの名無しさん
08/08/06 22:04:23
日頃Cで物事を考える我々が、Cで記述できないことを表現し、考えることなどできるのだろうか。
9:デフォルトの名無しさん
08/08/06 22:13:58
>>1
できないこと => スタックポインタの設定
10:デフォルトの名無しさん
08/08/06 22:25:56
人の記憶能力は5±2チャンクしかない。
従って、記憶領域を7チャンク以上消費するプログラムは作成可能であるとは言えない。
この理論に基づいて意見するなら、
Hello worldでさえ
"int", "main", "(", "int", "argc", "char", "*", "argv", "[]", ")"
というように、プロトタイプ宣言だけで7チャンク以上消費してしまう。
そんなプログラミングコストの高いプログラミング言語でできることなど、何もあろうはずがない。
11:デフォルトの名無しさん
08/08/06 22:52:01
>>7
包丁という素晴らしい道具は、多くの料理を生み出してきましたが
同時にいくつもの悲劇を起こしてきました
物事の片面だけを見るのは良くないですね
12:デフォルトの名無しさん
08/08/06 23:31:23
やっぱりC++の方がええわぁ
13:デフォルトの名無しさん
08/08/07 03:19:18
Cのプリプロセッサはウンコ
14:デフォルトの名無しさん
08/08/07 10:11:44
>>12
まぁ、C++の方が自分もいいと思う。つか、本当に真面目に使った/勉強したのがC++ぐらいで
Cをちゃんとやらなかったからかも知れんが、C++になれるとCって使いづらい。
なんか特別に面倒じゃないんだけど、回りくどい事をやっている感覚があんま好きじゃない。
LISPがもうちょっと上手い具合に進化してくれてたらきっと、
C++の莫大すぎて底なし沼のような情報と格闘しなくてもすんだかも。 と思う事がある。
15:デフォルトの名無しさん
08/08/07 12:04:39
>>14
Cをよく知りもしない奴が使いづらいとか好きじゃないとか、よくまあ偉そうに言えたもんだ
16:デフォルトの名無しさん
08/08/07 12:09:52
>>15がCについて深い見識を披露してくれるそうです。
17:デフォルトの名無しさん
08/08/07 12:20:02
Cで出来てC++で出来ない物ってあるのかえ?
18:デフォルトの名無しさん
08/08/07 20:06:39
そんなものがあったらBjarneさん死んじゃう
19:デフォルトの名無しさん
08/08/07 21:35:57
>>17
restrict ポインタ
C++0xでどうなるのかは知らんが。
20:デフォルトの名無しさん
08/08/08 02:30:03
>>17
マイコンとかでCコンパイラしか用意されていないことがある。
手間暇かければg++が使えそうな気はするんだけどマンドクセ。
21:デフォルトの名無しさん
08/08/11 23:46:25
>>20
そういう条件もってこないといけないあたりで、CはもうC++に勝てないんだとおもうな。
22:デフォルトの名無しさん
08/08/11 23:55:59
>>21
私もCはC++に勝てないと思いますが、世の中のソフトウェアは
ROM/RAM64kB以下のマイコンの方が多いのが事実で、そこのソフトを
書くにはCでないと…というのが 20 の真意でないですかね。
C++でガッツリ組むと、仮想関数呼出のオーバーヘッドだけでもはやどうにも
ならない場合も…。って条件もってこられること結構多いです。
23:デフォルトの名無しさん
08/08/11 23:56:57
あ、すいません。
多いかどうかは未検証です。申し訳ない。
24:デフォルトの名無しさん
08/08/12 00:37:04
64kByteROMのマイコンにやらせる事にそんな複雑な処理があるんですか?
C++でないと作るのが困難なほどの。
25:デフォルトの名無しさん
08/08/12 00:43:05
ありますよ。
アルゴリズムの複雑さはROM容量に比例しないです。
むしろマイコン内での責務分割をキッチリする上でもC++使いたいくらい。
Cでもきちんと構造化できる人なら問題ないですが。
26:デフォルトの名無しさん
08/08/12 07:19:48
メモリが小さいマシンで最大のパフォーマンスを出したいならCで書くべきだね。
C++のオーバーヘッドが無視できるほど大きいメモリ・速いCPUなら関係ないが。
書きにくいとかいう理由で小さいマシンでC++を使うのは品質低下なのだが、
現実にはきちんとCを書ける人間は少ないから仕方ないか。
27:デフォルトの名無しさん
08/08/13 18:28:29
Cできちんと書けない人が、C++でなら書けるのか。と。
28:デフォルトの名無しさん
08/08/15 15:56:55
㍉
29:デフォルトの名無しさん
08/10/21 06:04:47
>>26
インライン展開、関数オブジェクトがあるC++の方が性能上
30:デフォルトの名無しさん
08/10/21 08:13:10
>>29
神コーディングなら、どんな言語でも性能は良いだろう。
問題は狭い道を通るのに、車と自転者ではどちらが楽かだ。
31:デフォルトの名無しさん
08/10/21 08:44:06
>>29
インラインはC99にあるし
関数オブジェクトはCでも同等の速度で書ける
つまり(同性能のコンパイラなら)
速度はC>=C++になる
32:デフォルトの名無しさん
08/10/21 09:28:25
>>29
文盲かよ、メモリの小さいマシンって書いてあるだろ
おまえみたいなのがどこでもC++を使おうとするから品質低下になる
いまどきCにインラインがあることも知らないでC/C++を語るな
33:デフォルトの名無しさん
08/10/21 14:06:02
main(){}
だけCでもC++でも実行ファイルサイズ、メモリ消費量はかわらんだろ。
最低限のヘッダを上手く選び出せば実行ファイルサイズはどっちも同じでは?
メモリ消費量は、言語の違いではなく、アルゴリズムに依存する。
34:デフォルトの名無しさん
08/10/21 14:07:24
それにC言語専用のコンパイラは少ないし、C++の方が発展しているから
C++でコンパイルした方が性能、メモリの最適化が効く可能性有り。
35:デフォルトの名無しさん
08/10/21 14:19:53
c++ってある意味、windowsだよな
36:デフォルトの名無しさん
08/10/21 15:19:23
>>33
クラスとかのメモリ食うものを使わないならCでいいだろ。
37:デフォルトの名無しさん
08/10/21 15:36:30
クラスがメモリ食うて誰が言った_?
38:デフォルトの名無しさん
08/10/21 15:58:13
C++ が何だかよく知らない >>36 が言いました。
39:デフォルトの名無しさん
08/10/21 16:02:28
>>35
どういう意味よ
40:デフォルトの名無しさん
08/10/21 16:06:08
36じゃないけど、C++のクラスってCの構造体と違って、デフォルトコンストラクタとかコピーコンストラクタとかいろいろ勝手に作るんじゃなかったっけ?
41:デフォルトの名無しさん
08/10/21 16:09:25
>>39
最良の選択肢ではないが
なぜか普及している。
42:デフォルトの名無しさん
08/10/21 16:13:05
どうでもいいけど、
生き残ったものが適者ですって言葉思い出した。
43:デフォルトの名無しさん
08/10/21 17:36:24
一応、生きてさえいればライブラリの蓄積は進むし
いつかAJAXみたいな復活をしないとも限らん罠
44:デフォルトの名無しさん
08/10/21 17:46:07
>>40
内容が空ならインライン展開されてCの構造体と変わらなくなる。
45:デフォルトの名無しさん
08/10/21 18:07:14
>>33
mainだけのサイズ比べたって意味が無い
C++固有の機能を使うならその分のサイズオーバーヘッドはある
C++の中のC部分だけを使うならCで書いた方が良い
何故なら同じ速度・同じサイズなら移植性が高い方が優れているからだ
>>34
ソースは?
46:デフォルトの名無しさん
08/10/21 18:09:28
>>44
内容が空ならって、空の構造体なんて何に使うんだよ
果てしなく無意味な仮定だな
47:デフォルトの名無しさん
08/10/21 18:21:38
>>46
空っていうのは、コンストラクタやデストラクタのことだぞ。
もちろんほかのメンバは存在するよ。
48:デフォルトの名無しさん
08/10/21 22:55:11
>>1
CPLDなんかは、専用言語じゃなければ無理な訳だが。
シーケンサー関連はアセンブリですら無理。
49:デフォルトの名無しさん
08/10/22 14:27:02
>>40
PODなクラスはコンストラクタもデストラクタも作られません。
>>47
「インライン展開」はどう言い訳しますか?
50:デフォルトの名無しさん
08/10/22 17:00:19
>>49
X3014を読む限り、PODなクラス(構造体)でも
コンストラクタやデストラクタは作られるように思う。
(もちろん、実際にコードが生成されるかは別の話)
12.1 コンストラクタを読むと、コンストラクタを宣言しなければ
暗黙に宣言された省略時コンストラクタがinline publicで宣言されるとある。
そして、デストラクタも同様の規定が12.4に存在する。
また、9 クラスにPODは利用者定義のデストラクタを持たないという条件があるが、
逆に言えば、暗黙のデストラクタが存在するということではないだろうか。
51:デフォルトの名無しさん
08/10/22 17:00:49
あと、スレ違いだからこれくらいにしようよ。
52:デフォルトの名無しさん
08/10/23 00:40:06
>>49
> >>40
> PODなクラスはコンストラクタもデストラクタも作られません。
>
> >>47
> 「インライン展開」はどう言い訳しますか?
53:デフォルトの名無しさん
08/10/23 00:56:01
馬鹿はスルーしとけよ^^;;;;;;;;;;;;;;
54:デフォルトの名無しさん
08/10/23 14:28:41
>>50
宣言はされるが、定義は (明示的に呼び出さない限り) されない。
55:デフォルトの名無しさん
08/10/23 20:29:52
>>54
暗黙に呼び出された場合も定義されるよ。
56:デフォルトの名無しさん
09/03/16 14:42:57
ははは