河野真治 @ 琉球大学情報工学です。

In article <41202BC5.FB7CB25A@ht.sakura.ne.jp>, IIJIMA Hiromitsu <delmonta@ht.sakura.ne.jp> writes
> あとは、「本当にCをわかっている人」限定ですが、
>    猫でもわかるプログラミング <http://www.kumei.ne.jp/c_lang/>
> というオンラインテキストがタダで読めます。この著者はCの「正しい文法」に
> ついてあやふやなところが多々見られるので、C言語編は学生さんには読ませな
> いほうがいいです。

あぁ、僕はプログラミングに関しては、「正しい文法」にはこだわ
らない方だな。そういう意味で、僕は良い先生ではない。そんなも
の教えてどうなるって気もちょっとあるから。それこそ、正しい文
法よりgccで通る方が重要みたいな所もあるかも。

> Windows SDK 編の頭から入っていって、あとは処理系のヘッ
> ダを読んだり実際にテストコードを書いて試してみたり、ということになるでし
> ょう。実際、プロの世界でも、他の OS・コンパイラへのポータビリティを気に
> しなくていいところでは、そういうズボラな解決策を採っているところが多いよ
> うです。

うーん、APIに関しては正確な記述ってのは理解するのが難しくて、
結局、「処理系のヘッダを読んだり実際にテストコードを書いて試
してみたり」ってのは必須ですよね。そのテストコードの集合みた
いなものが欲しいんだよな。

一方で、そのテストコードが動くための環境整備みたいなのが、シ
ステム依存ばりばりで、そこを抜きには動かせない。そのあたりは、
使っている人には当り前らしく、あんまり書いてないのが普通。K&
R に、path とか chmod とか出て来ないのとおんなじではあるんだ
が... 

> …念のため言っておくと、UNIX の世界でも同様ですよ。一見したところごく普
> 通のコードのはずが、gcc の特定のバージョンでしかコンパイルが通らない、と
> いう話はよくありますよね。まあ、ソースが公開されているだけ救いがいはあり
> ますが。

Linux kernel 2.6 なんかは、gcc の特殊機能使いまくりだしね。
QEMU なんかも、asm statement の最大オペランド数を増やして
あったりして「こんなん、どうやってコンパイルするんだぁ〜」
な世界に突入....

なんだけど、ポータビリティって、ソースで取るのは間違っている
んだと最近は思う。API で取るべきものだよね。なので、あんまり
こだわらなくなってるかも...

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科