教養としてのC言語

まくら

自宅で、時代劇の再放送を見ていました。藤田まこと版「剣客商売Ⅲ」の「手裏剣お秀」の回でした。
レギュラーメンバーとは異なる、その回だけ登場するゲスト出演で、寺田農さんが老剣士の役で出ていました。
妻に「この俳優さんの名前がとっさに出てこない」と言われたので「ムスカ大佐の中の人ですがな」と言ったら「ああ!」と叫んだあと「寺尾聰!」と叫ばれました。なんか「ルビーの指環」とごっちゃになっていませんか??

さて、本題

プログラムを人に教える立場からみて、だいたい今の流行のJavaやPythonといった言語を学びたいという人が多い中、たまに(と言っても10人に1名くらい)Cを学びたい、という人がいます。
もっとも、この数は、私が主に制御系をやっていた、という話を知っている人が来たり、あるいは年齢が自分と近い年代(40代前後)という層ばかりと、たまたま遭遇している、という偏りのあるものなのかも知れません。

プログラム言語を学びたいという人から相談を受けた場合、動機がどこにあるのか、というところから考えて「すぐに飯を食える言語」という意味では、ちょっとCでそれはむずかしいかもなーとは思いつつ、長いスパンで(数十年単位で)学習するという心づもりの人には、むしろ学んでほしいかなぁと思うこともあります。

今のようなプログラミング=Web開発みたいな時勢になると、C言語というのは、古代魔術語みたいな扱いを受けているような気もします。
アプリケーション開発でもJavaかVBか・・という感じです。

自分がよく人に説明するときに使う喩えですが、言葉に例えるなら、ヨーロッパには英語・フランス語・ドイツ語..etcとある中で、それらを生み出す元となった、古代の「ラテン語」のような地位にあるのが、今のC言語の位置づけと考えてもいます。

ラテン語は、会話などの実用で使われることは少ないのですが、ラテン語が読めないと古代の文献を読むことができない。歴史家にとってはむしろ必要語ですが、現代の生活をする上で必須ではない。でも、教養として学ぶ価値がある、という位置づけです。日本人でも古文・漢文の言い回しが、ことわざ・故事成語という教養につながっていたりもしますし。
C言語がその位置にある、と考えるのは、その後に生まれたJavaやスクリプト系言語、昨今のPython、(指環つながりで)Rubyなど、手続き型言語は基本的にはCのアンチテーゼとして生まれてきた経緯があるので、それらの言語の理解がすすめやすいというのがあります。

それとは別に、習得する一番の理由(かつ一番の難題)は、Cの理解には、どうしてもハードウェアの理解が必須となる、というのがあります。
これは、昔はアセンブラであったり機械語と言われるものであったりしましたが、その意味で、C言語も低級言語化したという風に考えるべきかも知れません。

ただ自分としては、新しい言語を学ぼうとするとき、どうしても自分の中の母国語的な意味合いで、C言語のことを基準に考えてしまうところがあります。(Rustは果たしてCを本当に置き換えることができるのか?とか)
「天空の城ラピュタ」のシータのセリフではありませんが「どんだけ言語を操ろうとも、たくさんのコードを書こうとも、ソフトウェアはハードウェアから離れて生きることができないのよ」というのを、それによって再確認させられるからかも知れません。

この記事が気に入ったらサポートをしてみませんか?