それでも(Cは)、生きてゆく

情報処理の現場では、数多くのプログラミング言語が百花繚乱の様子を呈している。最近しばしば耳にする新しめの言語といえば、次世代JavaといわれるScalaや、GoogleのGo言語、あるいは汎用スクリプト言語のLuaといったところだろうか。そのような状況のなか、いままで様々なプログラミング言語を使って数多くのプログラムを組んできた経験を踏まえ、敢えて主張したい。私は今後もプログラミング言語Cを使い続けるだろう、と。

本コラムでも、これまで何度かCに対するエールを送ってきた(「C言語はなぜ廃れないか」2001年2月20日、「C言語プログラミングに関するスモールトーク」2008年7月8日)。それだけに、昨今話題になったCに対する讒謗はいささか不適切な評価との念を禁じ得ない。まあ不毛な宗教論争をする気はないので、どの言語が優れているだとか、どの言語はよろしくないとか、そのテの議論を本稿で行うつもりはない。が、ちょっとここでCに対する思い入れを少しだけ吐露するので、以下は、共感できる読者だけ、お付き合い願いたい。

プログラミング言語Cを愛する人々へ贈る

C言語によるスーパーLinuxプログラミング
C言語によるスーパーLinuxプログラミング

さて本稿で、先月、6月10日に出版された拙書「C言語によるスーパーLinuxプログラミング」を紹介する。

本書の主題がなぜCによるプログラミングなのか、なぜLinuxで学ぶべきなのかという点については、冒頭の1章と2章で30ページほど割いて説明しているので、ぜひ本書を手に取ってお読みいただきたいところ。Cは高度に抽象化された言語と違い、コンピュータがどのように動作するのか、実際の動作をきちんと理解したプログラミングの学習に向いていること、および、これまでに世界中の開発者によって編み出された豊富な資産を活用できるといった実践的な点と、Linuxを使って手を動かしながら本質的な理解が期待できる点をここで強調しておきたい。

本書はCのプログラミング入門書を読んでさらに一歩踏み出したいCプログラマや、Cのプログラミングを極めたいプログラマに向けて書かれている。少なくとも、現場の至る所でCが現役で使われている以上、Cの技術を磨きたい、Cのプログラミングを楽しみたい、あるいはCプログラミングの分野を極めたいという方々に参考になればという気持ちで、本書を著した。

豊富な資産の活用

また本書の第2部は豊富なソフトウェア資産の活用、すなわちライブラリを利用した様々な処理の実例について解説している。この点は、既に「枯れた」プログラミング言語であるCの強みでもあろう。

ところで科学技術計算の分野では未だにFORTRANが活躍している。同分野では最新環境に適したソフトウェアライブラリがFORTRANで実装され、提供されているという現実がある。また本書の原稿を書くにあたり、Linuxですぐに利用できる様々なソフトウェアライブラリを調べたところ、分野によってはCのライブラリよりもC++のクラスライブラリとしての提供が当たり前という文化もあることに気付いた。それだけC++も裾野が拡がっていることの証であろう。さらに昨今ではiPhoneアプリの普及で、Objective-Cにも注目が集まっている。

今回の書籍ではCにフォーカスしたため他の言語には全く言及できなかったが(そもそもCのプログラミングに関する解説だけで500ページを越えてしまったので、他言語まで言及したらどうなったことやら!)、C++やObjective-Cでの活用例も紹介したいところである。

他言語から「使わせてもらう」ことも

これらのライブラリをそれぞれの言語でそのまま利用するやり方が素直な対応と考えるが、このような豊富な資産を他の言語から利用する方法も、もちろん存在する。いま流行りのスクリプト言語やライトウェイトランゲージに分類される各種の言語、あるいはCやC++以外の現代的な高級言語から、これらのライブラリを使うことができないわけではない。各種の言語には、他の言語で用意されているソフトウェアライブラリを呼び出す仕組みがあり、それを使えばよい。既に用意されている「その言語用に用意されたインタフェース(これをライブラリの言語バインディングと呼ぶ)」が存在すれば、そのようなものの利用も1つの方法ではあろう。

ただし使いたいライブラリに適切な言語バインディングが用意されていない場合には、自分でインタフェースを作らなければならない手間がかかることを無視してはならない。SWIGあるいは同等のツールを利用するとその手間を軽減することはできるが、いずれにしてもライブラリ提供側の実装言語を知らなければ対応は難しい。

いずれにしても、特定の言語に固執するあまり既存の言語を否定する姿勢は視野が狭いと指摘せざるを得ない。
先に述べたように、CやC++、Objective-C、その他の言語など、提供されている環境に合わせて最適な言語を選べばよいのだ。Cに対する思い入れを語るつもりが変な話になってしまった。話を元に戻そう。Cユーザの裾野は広く、まだ、しぶとく使いつづけられるだろう。その際に、気の利いた使い方を学びたいと思ったら、ぜひとも本稿で紹介した拙書を手に取ってみてほしい。