C言語再入門
いま仕事で久々にC言語を使っている。C言語は最初の職場で覚えてしばらく使い、やがてC++に移った。そのC++も使わなくなって久しい。それでも、C++は若く最も忙しかった時代の主言語であり、C#はもちろんJava・PHP・JavaScriptなど文法の似た言語もよく使うため、現役当時ほどではないにせよ一応まだ覚えている。数年に一度くらいの周期で必要に迫られ、CLIで動く簡単なプログラムをC++で書くこともある。
したがってC言語もまだ書けるだろうと思いきや、意外に勝手が違い少々戸惑っている。クラスを使えないのは当然として、もっと細かな点で何ができて何ができないのか、C++との境が曖昧になってしまっているのだ。C11・C23規格など言語仕様もいつの間にか進化しており、C++を半端に逆輸入していたりするから余計わけがわからない。たとえばつまらぬことを例に出すと、「//」で始まる行コメントがもともとC言語になかったなんて数十年ぶりに思い出したし、しかし現行の規格では使えたりする。
そんなこんなにつまずきつつも、とりあえずコードは書けている。ただ、問題は対象のプラットフォーム。公式ライブラリーにバグが多く、やたらクラッシュするのだ。アップデートしてもかえってエンバグする始末で、開発掲示板にはそんな報告が引きも切らない。規模の小さな開発元に完璧を求めても始まらず、粛々と対処するのみだが、こうした状況ではバグの原因の切り分けが大切であり、そのためには己の書いたものに確信を持てなければ困る。一応確信してはいるものの、客観的にもそう言い切れるか問われれば、述べたとおり自分は浦島太郎だと認めざるを得ない。
ここはひとつ、謙虚にC言語に再入門すべきだろう。とはいえ、知りたいのは言語仕様の忘れてしまった細部だけだから、本当に入門書を買い直しても無駄になりそう。何かないかと本棚を探してみると、C言語の本はなかったものの(そういえば職場で借りた本で覚えたのだった)、C++の入門書がまだ残っていた。『CプログラマのためのC++入門』、平成9年の刷り。当時先輩に勧められて買った覚えがあるが、確かにとてもわかりやすい良書で役に立った。
この本は書名のとおり、C言語の習得者を対象に、C++で拡張された「差分」を解説するもの。ということは、逆さまに「C++プログラマのためのC言語入門」としても読めるわけで、まさに求めに合致する。これだ。技術書は内容が古びやすくたまに処分しているが、この本は捨てていなくてよかった。愛着ある良書は不要になっても捨てられない悪いクセが、今回は表目に出た。
ちなみにこの本、版を相当重ねていたにもかかわらず、現在は絶版。他方、同じ著者のC++入門書は最近改訂もされ好評のようだ。C言語を覚えてからC++に移る、との流れは昔ならではで、今は直接C++から入るのが主流なのだろう。