[目次へ]   [次へ]

言語特性の見解(C/C++)


C/C++言語の特性についての私なりの見解を書いてみます。

C言語は、非常に速度重視で作られた言語で、
何か問題を起こしかねない事をしようとしても、言語は止めてくれないケースが多いです。

言語自体はある意味シンプルというか、言語自体にはたいした命令がないです。
他言語における多くの命令などは、「標準ライブラリ」なるものが代用します。

標準ライブラリは関数のカタマリであり、それと同じものをプログラマが記述することが出来ます。
このように書くとたいしたことが出来ないように思われるかもしれませんが、
むしろ逆で、他言語では命令として固定されているような処理も、
自分で、しかも遜色ない速度で作成できるというわけです。

C言語は主にコンパイラ(実行環境の用意の項参照)を使います。
作り出された実行ファイルはCPUへの命令が直接記述されたスタイルで、
コンパイラが最適化能力を持っている場合はその動作はソースコードとは若干異なるかもしれません。

演算を行う場合もCPUの演算命令を直接実行します。
そのためCPUが演算命令を処理するのに必要な時間を知っておくと高速化に役立ちます。

C言語ははっきりいって「ソースに書いてないことは何もしない」言語です。
最近の多くの言語が持つメモリ自動管理機構もありません。
プログラマが自分で必要なサイズを要求し、いらなくなったら自分で解放を指示しなければなりません。
(これにはまだ補足がいろいろあるのですが・・・またの機会に書きます)

この仕様が問題かどうかは人によるかとも思ったりしますが。


C++言語は基本的にC言語を拡張したものであり、その大半はC言語と共通します。

C++言語の目玉はやはりクラスにあるでしょう。
メモリ自動管理機構なぞ作ってしまえと言えばまぁ、作れちゃったりして、(作るのは大変そうなので作りませんが、不可能ではないということで)
それを如何に扱うかもクラスを使えばかなり簡単に・・・なるでしょう(多分)

速度的には若干C言語に劣るものの、それが問題になるケースはそうないと思いますし、
実際にWindowsプログラムの開発にもよく利用されています。


どちらの言語も妙に細かい所まで入っていける反面、
そういう細かい所も処理してあげないといけなかったりすることがよくあるわけですが、
そういう部分は結構同じ処理が使いまわせるので、
ライブラリを使えばそんなに面倒でもなかったりします。
(そういうライブラリが無ければ作ってしまえばいいのですよ(笑))


で、結論としては・・・
速度を出したい人向けですかね?
(もっと高速化可能なアセンブラでまともに書くのはやってられませんし(笑))

とりあえず参考文献は山ほどあるのでその辺は問題なし・・・?

[目次へ]   [次へ]

プログラミング講座 総合目次

最終更新 2008/10/17