トップページ⇒tech
57コメント16KB

Cでプログラム言語は完成した

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2008/08/06(水) 17:41:25
ぶっちゃけた話Cじゃ出来ない事って特にないよね
0002デフォルトの名無しさん2008/08/06(水) 17:43:04
アセンブラで出来ないことも無い訳だが
0003デフォルトの名無しさん2008/08/06(水) 17:47:54
アセンブラは移植性ないじゃん

Cにはプリプロセッサという素晴らしい仕組みがある
0004デフォルトの名無しさん2008/08/06(水) 18:01:23
プリプロセッサ自体はcじゃないんじゃ…
0005デフォルトの名無しさん2008/08/06(水) 18:41:37
チューリングマシンですねわかります
0006デフォルトの名無しさん2008/08/06(水) 20:22:12
HaskellやRubyなら信者乙、Lispならまじめにその通りだと思うと書くところだったんだが……。
0007デフォルトの名無しさん2008/08/06(水) 20:58:06
>Cにはプリプロセッサという素晴らしい仕組みがある

その"素晴らしい"仕組みのおかげで地獄を見た人間が大勢いるわけだが。
0008デフォルトの名無しさん2008/08/06(水) 22:04:23
日頃Cで物事を考える我々が、Cで記述できないことを表現し、考えることなどできるのだろうか。
0009デフォルトの名無しさん2008/08/06(水) 22:13:58
>>1
できないこと => スタックポインタの設定
0010デフォルトの名無しさん2008/08/06(水) 22:25:56
人の記憶能力は5±2チャンクしかない。
従って、記憶領域を7チャンク以上消費するプログラムは作成可能であるとは言えない。

この理論に基づいて意見するなら、
Hello worldでさえ
"int", "main", "(", "int", "argc", "char", "*", "argv", "[]", ")"
というように、プロトタイプ宣言だけで7チャンク以上消費してしまう。
そんなプログラミングコストの高いプログラミング言語でできることなど、何もあろうはずがない。
0011デフォルトの名無しさん2008/08/06(水) 22:52:01
>>7
包丁という素晴らしい道具は、多くの料理を生み出してきましたが
同時にいくつもの悲劇を起こしてきました
物事の片面だけを見るのは良くないですね
0012デフォルトの名無しさん2008/08/06(水) 23:31:23
やっぱりC++の方がええわぁ
0013デフォルトの名無しさん2008/08/07(木) 03:19:18
Cのプリプロセッサはウンコ
0014デフォルトの名無しさん2008/08/07(木) 10:11:44
>>12
まぁ、C++の方が自分もいいと思う。つか、本当に真面目に使った/勉強したのがC++ぐらいで
Cをちゃんとやらなかったからかも知れんが、C++になれるとCって使いづらい。
なんか特別に面倒じゃないんだけど、回りくどい事をやっている感覚があんま好きじゃない。

LISPがもうちょっと上手い具合に進化してくれてたらきっと、
C++の莫大すぎて底なし沼のような情報と格闘しなくてもすんだかも。 と思う事がある。
0015デフォルトの名無しさん2008/08/07(木) 12:04:39
>>14
Cをよく知りもしない奴が使いづらいとか好きじゃないとか、よくまあ偉そうに言えたもんだ
0016デフォルトの名無しさん2008/08/07(木) 12:09:52
>>15がCについて深い見識を披露してくれるそうです。
0017デフォルトの名無しさん2008/08/07(木) 12:20:02
Cで出来てC++で出来ない物ってあるのかえ?
0018デフォルトの名無しさん2008/08/07(木) 20:06:39
そんなものがあったらBjarneさん死んじゃう
0019デフォルトの名無しさん2008/08/07(木) 21:35:57
>>17
restrict ポインタ

C++0xでどうなるのかは知らんが。
0020デフォルトの名無しさん2008/08/08(金) 02:30:03
>>17
マイコンとかでCコンパイラしか用意されていないことがある。
手間暇かければg++が使えそうな気はするんだけどマンドクセ。
0021デフォルトの名無しさん2008/08/11(月) 23:46:25
>>20
そういう条件もってこないといけないあたりで、CはもうC++に勝てないんだとおもうな。
0022デフォルトの名無しさん2008/08/11(月) 23:55:59
>>21

私もCはC++に勝てないと思いますが、世の中のソフトウェアは
ROM/RAM64kB以下のマイコンの方が多いのが事実で、そこのソフトを
書くにはCでないと…というのが 20 の真意でないですかね。

C++でガッツリ組むと、仮想関数呼出のオーバーヘッドだけでもはやどうにも
ならない場合も…。って条件もってこられること結構多いです。

0023デフォルトの名無しさん2008/08/11(月) 23:56:57
あ、すいません。
多いかどうかは未検証です。申し訳ない。
0024デフォルトの名無しさん2008/08/12(火) 00:37:04
64kByteROMのマイコンにやらせる事にそんな複雑な処理があるんですか?
C++でないと作るのが困難なほどの。
0025デフォルトの名無しさん2008/08/12(火) 00:43:05
ありますよ。
アルゴリズムの複雑さはROM容量に比例しないです。

むしろマイコン内での責務分割をキッチリする上でもC++使いたいくらい。
Cでもきちんと構造化できる人なら問題ないですが。
0026デフォルトの名無しさん2008/08/12(火) 07:19:48
メモリが小さいマシンで最大のパフォーマンスを出したいならCで書くべきだね。
C++のオーバーヘッドが無視できるほど大きいメモリ・速いCPUなら関係ないが。
書きにくいとかいう理由で小さいマシンでC++を使うのは品質低下なのだが、
現実にはきちんとCを書ける人間は少ないから仕方ないか。
0027デフォルトの名無しさん2008/08/13(水) 18:28:29
Cできちんと書けない人が、C++でなら書けるのか。と。
0028デフォルトの名無しさん2008/08/15(金) 15:56:55
�_
0029デフォルトの名無しさん2008/10/21(火) 06:04:47
>>26
インライン展開、関数オブジェクトがあるC++の方が性能上
0030デフォルトの名無しさん2008/10/21(火) 08:13:10
>>29
神コーディングなら、どんな言語でも性能は良いだろう。
問題は狭い道を通るのに、車と自転者ではどちらが楽かだ。
0031デフォルトの名無しさん2008/10/21(火) 08:44:06
>>29
インラインはC99にあるし
関数オブジェクトはCでも同等の速度で書ける

つまり(同性能のコンパイラなら)
速度はC>=C++になる
0032デフォルトの名無しさん2008/10/21(火) 09:28:25
>>29
文盲かよ、メモリの小さいマシンって書いてあるだろ
おまえみたいなのがどこでもC++を使おうとするから品質低下になる
いまどきCにインラインがあることも知らないでC/C++を語るな
0033デフォルトの名無しさん2008/10/21(火) 14:06:02
main(){}

だけCでもC++でも実行ファイルサイズ、メモリ消費量はかわらんだろ。
最低限のヘッダを上手く選び出せば実行ファイルサイズはどっちも同じでは?
メモリ消費量は、言語の違いではなく、アルゴリズムに依存する。


0034デフォルトの名無しさん2008/10/21(火) 14:07:24
それにC言語専用のコンパイラは少ないし、C++の方が発展しているから
C++でコンパイルした方が性能、メモリの最適化が効く可能性有り。
0035デフォルトの名無しさん2008/10/21(火) 14:19:53
c++ってある意味、windowsだよな
0036デフォルトの名無しさん2008/10/21(火) 15:19:23
>>33
クラスとかのメモリ食うものを使わないならCでいいだろ。
0037デフォルトの名無しさん2008/10/21(火) 15:36:30
クラスがメモリ食うて誰が言った_?
0038デフォルトの名無しさん2008/10/21(火) 15:58:13
C++ が何だかよく知らない >>36 が言いました。
0039デフォルトの名無しさん2008/10/21(火) 16:02:28
>>35
どういう意味よ
0040デフォルトの名無しさん2008/10/21(火) 16:06:08
36じゃないけど、C++のクラスってCの構造体と違って、デフォルトコンストラクタとかコピーコンストラクタとかいろいろ勝手に作るんじゃなかったっけ?
0041デフォルトの名無しさん2008/10/21(火) 16:09:25
>>39
最良の選択肢ではないが
なぜか普及している。
0042デフォルトの名無しさん2008/10/21(火) 16:13:05
どうでもいいけど、
生き残ったものが適者ですって言葉思い出した。
0043デフォルトの名無しさん2008/10/21(火) 17:36:24
一応、生きてさえいればライブラリの蓄積は進むし
いつかAJAXみたいな復活をしないとも限らん罠
0044デフォルトの名無しさん2008/10/21(火) 17:46:07
>>40
内容が空ならインライン展開されてCの構造体と変わらなくなる。
0045デフォルトの名無しさん2008/10/21(火) 18:07:14
>>33
mainだけのサイズ比べたって意味が無い
C++固有の機能を使うならその分のサイズオーバーヘッドはある
C++の中のC部分だけを使うならCで書いた方が良い
何故なら同じ速度・同じサイズなら移植性が高い方が優れているからだ

>>34
ソースは?
0046デフォルトの名無しさん2008/10/21(火) 18:09:28
>>44
内容が空ならって、空の構造体なんて何に使うんだよ
果てしなく無意味な仮定だな
0047デフォルトの名無しさん2008/10/21(火) 18:21:38
>>46
空っていうのは、コンストラクタやデストラクタのことだぞ。
もちろんほかのメンバは存在するよ。
0048デフォルトの名無しさん2008/10/21(火) 22:55:11
>>1
CPLDなんかは、専用言語じゃなければ無理な訳だが。
シーケンサー関連はアセンブリですら無理。
0049デフォルトの名無しさん2008/10/22(水) 14:27:02
>>40
PODなクラスはコンストラクタもデストラクタも作られません。

>>47
「インライン展開」はどう言い訳しますか?
0050デフォルトの名無しさん2008/10/22(水) 17:00:19
>>49
X3014を読む限り、PODなクラス(構造体)でも
コンストラクタやデストラクタは作られるように思う。
(もちろん、実際にコードが生成されるかは別の話)

12.1 コンストラクタを読むと、コンストラクタを宣言しなければ
暗黙に宣言された省略時コンストラクタがinline publicで宣言されるとある。
そして、デストラクタも同様の規定が12.4に存在する。
また、9 クラスにPODは利用者定義のデストラクタを持たないという条件があるが、
逆に言えば、暗黙のデストラクタが存在するということではないだろうか。
0051デフォルトの名無しさん2008/10/22(水) 17:00:49
あと、スレ違いだからこれくらいにしようよ。
0052デフォルトの名無しさん2008/10/23(木) 00:40:06
>>49
> >>40
> PODなクラスはコンストラクタもデストラクタも作られません。
>
> >>47
> 「インライン展開」はどう言い訳しますか?
0053デフォルトの名無しさん2008/10/23(木) 00:56:01
馬鹿はスルーしとけよ^^;;;;;;;;;;;;;;
0054デフォルトの名無しさん2008/10/23(木) 14:28:41
>>50
宣言はされるが、定義は (明示的に呼び出さない限り) されない。
0055デフォルトの名無しさん2008/10/23(木) 20:29:52
>>54
暗黙に呼び出された場合も定義されるよ。
0056デフォルトの名無しさん2009/03/16(月) 14:42:57
ははは
0057fw112.aristotle.net2009/08/17(月) 17:42:02
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その3
『いつもサボってばかりのキャップがウゼえ』

http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ ID:PVAf+dux0 = 自動焼人 ★
> 71 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:58:57.28 ID:PVAf+dux0
> >>69
> 大変って言うか
> 毎日、報告されたのを見て、判断して、処理して、完了報告して、以下ループ。
> ちょっとでもミスすると、普段は作業もしてないキャップさんたちがさんざん文句言ってきて
> その言いわけを考えないと、キャップはく奪されたりアカウント凍結されたりするから
>
> 登録されてから一年以上経って、やっといいたいこと言えるようになってきたよ。



----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください
■ このスレッドは過去ログ倉庫に格納されています