【訃報】C言語およびUNIXの父、デニス・リッチーさんが死去 -享年70★3

このエントリーをはてなブックマークに追加
952名無しさん@12周年:2011/10/16(日) 02:25:03.37 ID:vkHFvCRz0
>>941
cfront じゃなく、EDGじゃね?

g++は違うけど、VCもComeauもBorlandも
中身のパーサーは、EDGフロントエンドだけど
953名無しさん@12周年:2011/10/16(日) 02:26:49.34 ID:cDFanUbC0
やっぱり C 論議になってるw
ジョブスみたいに詐欺師に夢を見させただけの奴よりよっぽど世界に貢献した人だろう。
954名無しさん@12周年:2011/10/16(日) 02:27:28.46 ID:qob74TKB0
K&Rの人か
今、あの頃(ANSI C以前)のソースみると関数の引数の書き方とか軽く眩暈がする
955名無しさん@12周年:2011/10/16(日) 02:30:07.27 ID:TimW7hWp0
K&Rスタイルって

int main(argc, argv)
int argc
char ** argv
{
}

みたいに書くやつ?
書いたことないな。仕事で見たことは・・あるかな〜?
956名無しさん@12周年:2011/10/16(日) 02:33:07.95 ID:m8Spbc5A0
あの形式のメリットとしては
int foo(a,b,c,d,e,f)
int a,b,c,e;
float d,f;
{
}
とかできるんじゃなかったっけ?
957名無しさん@12周年:2011/10/16(日) 02:41:20.62 ID:9KpBOIcv0
おいおい、ここはジジイの集会場かよw

ライフボートとかいつの時代だ。 まだあんのか?
あの会社。
958名無しさん@12周年:2011/10/16(日) 02:45:25.42 ID:K4cL2DxE0
ライフボートって名前久々に見たな。
パーティション管理のソフト出してた会社だよな。
959名無しさん@12周年:2011/10/16(日) 02:59:31.48 ID:xnpykrsU0
>>955
indent -kr *.c *.h
960名無しさん@12周年:2011/10/16(日) 03:03:51.08 ID:Vljn+CTg0
>>952
確かに現行の多くのC++処理系がEDGフロントエンドをベースにしてるのは
確かなんだけど。 名前がフロントエンドなんでややこしいが、cfrontとはイメージ
が違って各ベンダーはEDGのバックエンドに固有のマシン語を吐きだすコードを
入れて作るんだよ。
ほとんどのユーザは、自分の使ってるC++処理系がEDGフロントエンドベースで
ある事に気が付かないってわけ。


http://www.edg.com/index.php?location=customers_oc
961名無しさん@12周年:2011/10/16(日) 03:04:15.69 ID:ZW2he9IB0
>>951
え?* って、delimiter じゃなかったの?
962名無しさん@12周年:2011/10/16(日) 03:10:22.09 ID:wkAvY17a0
>>961
デリミタは区切り文字
char*a はいかなるコンパイラーでもエラーなので区切り文字ではないだろ。
char *a しか許されない処理系があったと記憶している。TurboCだったかccだったか忘れたが。



963名無しさん@12周年:2011/10/16(日) 03:15:15.88 ID:m8Spbc5A0
つか、charと*の間でトークンの区切りが入るから
スペースの有り無しでコンパイラがエラー出すのは
明らかにコンパイラがおかしい。
964名無しさん@12周年:2011/10/16(日) 03:18:07.96 ID:wkAvY17a0
いやだからchar*aはエラー。ゆえにcharと*の間に区切りは入っているとは限らない。
965名無しさん@12周年:2011/10/16(日) 03:20:32.41 ID:nwxEficE0
そんな細かいこと気にすんなよ
966名無しさん@12周年:2011/10/16(日) 03:21:36.34 ID:ZW2he9IB0
>>962
字句解析だと ( ) とかは、delimiter って言うけどね。
Python の仕様書見たら、演算子は delimiter じゃないから、
* は、delimiter じゃないってみたいだ。
967名無しさん@12周年:2011/10/16(日) 03:23:55.79 ID:m8Spbc5A0
いや、レキサの段階でそこでトークンがわかれるだろ。
スペースは区切り認識された後読み飛ばされるだけ。
だから、パーサ以降は本来スペースの有り無し自体
認識不可能なはず

当時のANSIじゃそこまで規定されていなかったの?
968266:2011/10/16(日) 03:24:40.28 ID:ZW2he9IB0
分かった。
** とか、*= とかがあるから、* は、delimiter にできないのね。

char*a が char * a というわけではない。ということは、理解した。
文法エラーかどうかは、分からん。
969出世ウホφ ★:2011/10/16(日) 03:26:51.52 ID:???0
次スレどうぞー
【訃報】C言語およびUNIXの父、デニス・リッチーさんが死去 -享年70★4
http://raicho.2ch.net/test/read.cgi/newsplus/1318703183/l50
970名無しさん@12周年:2011/10/16(日) 03:29:34.55 ID:ZW2he9IB0
>>967
確かに、* が delimiter で無かったとしても、parser に渡される token が、

char * a; でも、 char*a; でも、

<CHAR> <*> <ID> <;> だから、構文上は等価にならなきゃおかしい。
971名無しさん@12周年:2011/10/16(日) 03:30:37.38 ID:SSqmwjDb0
>>969
972名無しさん@12周年:2011/10/16(日) 03:30:56.85 ID:wkAvY17a0
>>967
パーサーの内部の事情はわからんが、実際コンパイルすれば解る事。
char*a は古今東西いかなるコンパイラーでもエラー。
973名無しさん@12周年:2011/10/16(日) 03:35:05.23 ID:wkAvY17a0
と思ってgccでコンパイルしてみたらエラーじゃなかった><
すまんwww
974名無しさん@12周年:2011/10/16(日) 03:35:08.23 ID:8lLx9lsL0
既に、dmr追悼スレじゃなくて、C言語スレになってんのに、次スレ要るの?
975名無しさん@12周年:2011/10/16(日) 03:39:01.80 ID:SSqmwjDb0
char* a, b;

の解釈は確かにわかりにくいとは思う。
976名無しさん@12周年:2011/10/16(日) 03:39:55.52 ID:m8Spbc5A0
>>972
つーか普通にCの仕様を満たすようにコンパイラ作れば
そんな変な挙動になる訳無いんだがなぁ。
エラーになっていたとしたらそれは、物凄い特殊な事をして
わざわざ規格外の仕様にしていた事になる。
実際こういうコードが存在していたから、20世紀末ごろのコンパイラでも
それがエラーになるのは一般的ではなかった。
ttp://www.nyx.net/~gthompso/quine.htm
977名無しさん@12周年:2011/10/16(日) 03:45:39.69 ID:wkAvY17a0
でchar* aがエラーになる処理系があったという俺の記憶もなにか疑わしくなってきたなwww
978名無しさん@12周年:2011/10/16(日) 03:51:06.58 ID:zUhXJyef0
ぬるぽ
979名無しさん@12周年:2011/10/16(日) 03:51:51.73 ID:wkAvY17a0
まあ20数年前に使ってたのはTurboC MS-C cc gcc 辺りで正直どれがどれなのか覚えてない。
980名無しさん@12周年:2011/10/16(日) 03:52:37.19 ID:W0mghH650
c = a+++++b;

なら今のgccでもエラーになったり
981名無しさん@12周年:2011/10/16(日) 03:56:23.01 ID:wkAvY17a0
といっても俺ジジイでボケたわけじゃないから今30代だし。
982名無しさん@12周年:2011/10/16(日) 04:00:44.37 ID:K4cL2DxE0
int main() {
return main();
}
983名無しさん@12周年:2011/10/16(日) 04:03:11.75 ID:a4eOARs60
大物の訃報が続くなあ・・・

ありがとうジョブズ
ありがとうリッチー
ありがとう柳ジョージ

。・゚・(ノД`)・゚・。
984名無しさん@12周年:2011/10/16(日) 04:13:36.39 ID:I0J9Pmyj0
>>978
ガッ++
985名無しさん@12周年:2011/10/16(日) 05:06:32.79 ID:y53esEbv0
>>898
int a[100]
と int *b
はまったく意味が違うだろう
charならともかく
986名無しさん@12周年:2011/10/16(日) 05:27:29.73 ID:y53esEbv0
**b では一次元目が100個ということが解らないから
b[5][5]としても位置の決めようがない
最後の次元はアバウトでもいいかもしれないが、
型までコピーされるわけじゃないんだから、
int b[100]型が100個ということを教えてやらないと当惑する
987名無しさん@12周年:2011/10/16(日) 05:35:22.20 ID:SSqmwjDb0
配列とポインタの宣言をごっちゃにしてはいけませんよ。
988名無しさん@12周年:2011/10/16(日) 05:38:34.84 ID:kbUGzNsd0
>>953
お前みたいな的外れな叩きしかできないクズになんでジョブズが詐欺師扱いされなきゃならんのだ
989名無しさん@12周年:2011/10/16(日) 05:49:05.46 ID:HHAQRIBP0
>>988
ジョブズからの詐欺的プレゼント

●~
990名無しさん@12周年:2011/10/16(日) 06:15:11.89 ID:bNtczvau0
食い残すなよ行儀悪い
991名無しさん@12周年:2011/10/16(日) 07:51:58.65 ID:v7yWxBev0
すでに既出だった
992名無しさん@12周年:2011/10/16(日) 07:52:44.76 ID:TrP+EVoI0
>>942
そんな糞構文を許容したのがそもそもの大間違い。
一行一宣言が鉄則。
993名無しさん@12周年:2011/10/16(日) 08:34:37.38 ID:l9byU5PZ0
>>989
正しくはこうだろ

●~*
994名無しさん@12周年:2011/10/16(日) 08:49:53.78 ID:Jmh+8liLP
char *a;
でなく
char* a;
って書けばいいじゃん、ってのは、初心者のうちはいいかもしれないが、
int (*a)(int n);
のようなコードがいつまでたっても読めなくなるおそれがある。
だから早いうちに前者のほうに慣れておいたほうがいい。
995名無しさん@12周年:2011/10/16(日) 09:26:42.53 ID:loB0GI2E0
次はビルゲイツか? ついでに禿シャスティスも連れて行けw
996名無しさん@12周年:2011/10/16(日) 09:48:41.97 ID:817+oACf0
型 *名前; という宣言を見た時、
「名前をdereferenceすれば型のオブジェクトになる」
という宣言だと考えれば複雑なやつも全部わかると思うんだけどな。
型の側に*を付けるのは逆にわかりづらい。
997名無しさん@12周年:2011/10/16(日) 10:00:59.57 ID:pMV/PJVi0
>>994
それはウソを作る温床。
C++の教祖もそれを勧めているけど

char* a, b

ってやる間違いを生む。
998名無しさん@12周年:2011/10/16(日) 10:02:49.42 ID:k15bNYte0
埋め
999名無しさん@12周年:2011/10/16(日) 10:05:54.09 ID:TrP+EVoI0
>>994
>int (*a)(int n);

なんだこの意味不明なたわごとは?


>>997
その書き方なら、aもbもchar*型にすればいいんじゃね?

char *a, b;
なら、bはchar型にする。

ってか、そもそも宣言に,を許容しなきゃいいだけ。
1000名無しさん@12周年:2011/10/16(日) 10:07:16.84 ID:pMV/PJVi0
>>999
そんなこと無いよ。
大きなコード書いてみ?
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。