The C Programming Language
プログラミング言語Cの教科書の定番と言えば、カーニハンとリッチーによるものが有名だ。K&Rと呼ばれていて、今だにそれを推薦する人もあとをたたない。
わたしの本棚にも2nd editionがある。黄ばんだ表紙の奥付を見ると95/8/12とメモしてある。渡米してすぐリファレンスとして購入したものだ。
プログラミング言語の入門書で最初の例がなにがなんでもhello, worldというもの、K&Rからの悪しき慣習である。
プログラミングの初心者が、プログラムをどう書くかという事を習う教科書として使うにはいただけない。いただけない理由は多分いくつもあるかと思うのだけど、プロフェッショナルから見てもいただけない記述がいっぱいある。
例えば if (c >= '0' && c <= '9') ... とかいうイディオムとか、 c - '0' なんていうイディオムがいたるところ(?)にでてくるのであるが、この手の文字コード(ASCII)に依存したソースというのが、後にソフトウェアの国際化という観点から否定されていったという歴史を知るものにとって、諸悪の根源は、ここにあったのかという思いである。
最初に習ったソースコードにそのようなイディオムがあれば何の疑問もなくそれを繰り返す。それを後から泣きながら直していくというのが国際化の歴史だったような気がする。
プログラムから文字コードの仮定をとりのぞく。文字コードが7ビットであるという仮定をとりのぞく。文字コードが一バイトであるという仮定をとりのぞく。言語(英語)や文化にまつわる様々な仮定をとりのぞく。
プログラムから文字集合に関する情報をとりのぞくのが文字集合独立(Character Set Independent)なプログラムなわけであるが、そのような概念が成熟していなかった時代の歴史的な著書として歴史学者的な観点から読みとくのが正しい読み方かと思うのである。
下記はお薦めである。
昔の日記にも似たようなことを書いていた。(10年以上前のお話)
96/02/20 シリコンバレー日記 ソースコードを読む程忙しい
http://web.archive.org/web/19991005060157/http://www.best.com/~yoshioka/d/96/02/i960220.html
(文字コードをshift JISにして読んでください)




コメント