C言語は難しいのか?

前回「簡単で難しい“正確なC言語”」に対する意見を書きました。こんなところで陰口を叩いているだけというのも申し訳ないので、本家サイトでも一部コメントしたところ、ある程度訂正されたようです。今回は、そうした"標準Cトリビア"のような話題を持ち出してC言語を"難しい"と評価するのが本当に正しいことなのかについて考えてみます。

Q1とQ2は移植性に関する話題でした。普段使っている処理系はこうだけれども、あらゆる処理系でそれが通用するとは限らないという話です。例えば、intのサイズは処理系定義なので難しいというわけです。では、比較的易しいとされるスクリプト言語はどうかというと、PHPにせよRubyにせよ、整数型も浮動小数点数型もそのサイズはプラットフォーム依存です。これが理由で、Cが難しいのなら、PHPやRubyも同様に難しいはずです。しかも、Cのように少なくとも-32767~+32767の表現範囲が保証されているわけでもありません。

国際標準規格がないプログラミング言語は、仕様が厳密ではない場合が少なくありません。だから簡単などということはありません。例えば、PHPでCと同レベルまで理解を深めるには、ドキュメント化されていない部分を(Cで書かれた)PHPのソースコードを読み解かなければなりません。しかも、ころころ変わるバージョンに追従する必要があります。国際標準規格があっても、それが公然と無視されているような言語でも似た状況がありますし、最悪の場合は処理系のソースコードが入手できません。

Q3については、規格上の厳密な定義についてですので、これは実際にプログラミングする上で必ずしも必要な知識ではありません。ですので、これは"難しい"かどうかを判断する基準にはならないでしょう。

こう考えていくと、少なくとも"標準Cトリビア"的なことに関しては、他の言語に比べて、C言語が特別難しいわけではなさそうです。

この記事のトラックバックURL:

http://www.kijineko.co.jp/trackback/652
このエントリーを含むはてなブックマーク