C言語

ITJapan Co.,Ltd. CEO Tadanobu Kinoshita

2006/01/25 10:30 - www.itj.jp

どういう表現をすれば良いか分からないが、Windows95発売以降にコンピュータの世界、IT業界に入ってきた人は、「C言語」というものの位置付けはほとんど分かっていないのではないだろうか?

今回は、1980年頃からコンピュータに触れている人には全く面白くも何ともない話題、「C言語(以下C)」を取りあげる。

現在でも私は仕事上で、この言語をどれぐらい理解しているかでその人の開発者としてのスキルを見る傾向がある。
というのも、現実問題弊社の主力である基幹業務ソフトウェア開発においてはCが出てくる場面などまず無いからである。…いや、補足すると組み込みや制御系(同じか?)に携わっている人以外は、かなり熟練しているプログラマーでもほとんど知らない世界だと思う。

だからこそ、「個人の勉強の範疇」としてしかCに触れる機会などまずないので、「Cを知っている=わりと勉強しているお方」という図式は一応成り立つのだと思う。

そして大半の現職のプログラマーが、Cに触れた段階で「何だこりゃ?」「意味わからん」と、ほどなく投げ出すだろう。ここに、現在バリバリのプログラマーの悲劇がある。…「言語の進化」というものが、シンプルなものから複雑・高度化していくものだとしたら、今のプログラマーが触れている物は、内部構造的には天井に達しているぐらい複雑化された高級言語だ。そしてコンピュータの世界における高級とはより一般人に分かりやすいという事を指すので、現在のプログラミングというのはある種昔よりもイメージはし易くなっている。初めての人でも入って行きやすい部分がある。だが、それは内部に高度に複雑化されたブラックボックスがあって、その周辺の上澄みの部分でプログラムしているとイメージも同時に成り立つ。つまり、中心部では何がどうなっているか分からなくても、開発が出来るのが今の環境…。

そう、「今のプログラミング」にどっぷりと浸かってしまっている人は、もう「C言語」というものが何なのかさえ分からなくなってしまうのである。そしてそれは自然な流れなのだ。

大雑把な言い方をすれば、現在のプログラミング言語というのは、全部Cから派生した「マクロ」だと思っている。マクロというのは、良く使う機能や処理を定型化していつでも呼び出せるようにしたものだ。エクセルなんかでもあると思うが、あれだ。こう捉えると、現在のプログラム環境が掛け算や割り算や因数分解をマクロでさっさとこなしてしまうものだとしたら、Cというのはそれらを足し算と引き算を使ってウラで必死で解いている言語だという言い方が出来ると思う。

現在、基幹業務系開発でCをやる意味はほとんどない。だが、コンピュータの歴史においては欠かす事の出来ない言語であるし、今みなさんがお使いのJavaやC#、VBでもCの考え方を知っておくと早く組める可能性があるので、機会があれば触れておく事をお奨めする。その際、出来たらWindows95系を用意できたらより面食らわずにすむだろう。

そして、なぜ「コンソールアプリケーション」があるのかの意味を知って欲しい。はっきり何度も言うが、現在の基幹業務系開発においてはコンソールアプリケーションなど全く意味をなさない。だが、Cをやる上では必須…というかそれしか出来ないと言った方が良いだろう。難しく考えなくて良い。テキストファイルに簡単なソースを書いて、そのソースを「リンカ」というコマンドでexeファイルに作り換え、それを実行させるだけだ。

一度やってみたら良い。現在の環境の根元的な部分がそこに見られると思う。