Cは簡単で複雑

神様なんて信じない僕らのために - Cの老害?を読んで。

初心者に何の言語が最適かとか、Cは最適かとかは、自転車置き場の問題だなぁと思いながらも、ちょっと考えてみる。

初心者というのは、プログラムのやり方自体がわからないわけで、どのように組むのかを教えなければならないわけで、そういった意味では、現代によく使われている言語は、手続き型(オブジェクト指向だろとか言う人がいるかもしれんが、結局は手続きかいてるんだから、初心者にはいっしょだと思う。最初に教えるのに手続き型が最適なのか、また別のお話。)なんだから、ふつうに書いたら手続き型でしかかけない、Cは最適だと思う。言語仕様も単純だし。K&Rの付録に収まる程度なんだから。Rubyの言語仕様(というか実装?)に比べたらなんと単純なことなのか。

ただCは、単純で低レベルであるがために、いろんなことができてしまう。そこが問題。

ポインタだとかメモリだとか。だから、難しい。

だが、逆に考えるんだ。単純なことをやれる一つの文法で、コンピューターを全てあやつれるんだ。ノイマン型のコンピューターアーキテクチャを学ぶことができるんだ。

学ぶ人が、そこまで必要でなければ、ポインタだとかが出る前にやめればいい。そのタイミングで、他の言語にうつればいいんだ。

そういった意味では、自分のレベルにあわせて学習できるいい言語だと思うんだけどなぁ。

あと、よくCは基本的な部品(ライブラリ)が足りないからだめとか言われるけど、それはそういうライブラリを探せばいいじゃないかと思う。あと、学校とかでちゃんと教える人がいるんなら、教える人が用意してあげて、だんだん学んでる人にそれを実装させるようにすればいいと思う。はじめから全部やれは、いくらなんでもしんどいとは思うから。

去年の社員旅行で、初心者にどう教えたらいいかというネタがあったんだけど、それについても今更思いついたことがあるんだが、それは後で書くかもしれない。