基本事項



はじめに

 ここではC/C++やウィンドウズプログラミングに関する詳細な解説は行いません。プログラミングを始めたばかりの人が漠然と疑問に思うことに感覚的に答えます。理屈や原理など詳しい解説は書籍や他のホームページに譲ります。(実際にはできないと言ったほうが正しい)

C?C++?Visual C++?

 ウィンドウズ環境でCプログラミングを始めようと思った時に最初にぶち当たるのがこれら3つの違いはいったいぜんたい何なのか?ということです。
 まず、C/C++というのはプログラミング言語の名前であり、Visual C++はマイクロソフトが作ったC/C++コンパイラー(テキストで書かれたプログラムをコンピュータで実行可能な形式に変換するプログラムのこと)です。C/C++の教科書に載っているようなコンソールプログラムはVisual C++を利用してコンパイルして実行することができます。そして,これらのプログラムは、例えばマッキントッシュやUNIXなどOSが違ってもC/C++の(そのOSで動作する)コンパイラーがあれば、同じようにコンパイルすることが可能です。
 しかし、これらのC/C++のみで書かれたプログラムは非常に基本的な操作しかできません。我々が普段使っているようなウィンドウを開いたりするようなプログラムは作れません。ウィンドウを開いたりするためにOSに固有な命令が組まれています。これらの命令を使ってプログラムを組むためにはVisual C++等のウィンドウズに固有な命令を解釈できるコンパイラが必要になってくるわけです。
 それでは、ウィンドウズで走るようなプログラムを組むためにはVisual C++の解説書だけ読めば良いかと言うとそうではありません。基本的な部分はC/C++の知識が必要なのです。乱暴なたとえをすると英語で書かれた野球のルールブックを読むためには、まず英語の勉強をしなければならないということです。
 さて,CとC++の違いですが、C++はCにオブジェクト指向を取り込んだものと良く言われます。C++はCが持っていた命令セットに何か新しい機能を持った関数が付け加えられたということではないのです。従って,プログラムの作成においてCだけでもC++で書いたものと同様のものを作ることができます。実際オブジェクト指向に関する部分以外の基本的な文法はC/C++ともにほとんど同じです。

オブジェクト指向?

 オブジェクト指向が何なのかという話はあまりに面倒なので触れませんが、オブジェクト指向と言った時に何か特定のプログラミング方法や様式が存在しているわけではありません。最初の内は、オブジェクト指向言語というのは、“オブジェクト指向”という思想を取り込んだ文法を持つプログラミング言語であるといった程度の認識で十分だと思います。
 何の説明にもなっていませんが、ここで言いたいのは解説書等に時々出てくるオブジェクト指向言語だから云々という字面に幻惑されないことが重要だということです。

クラス?オブジェクト??

 C++においてはオブジェクト指向を取り込むためにクラスとオブジェクトというものを導入しています。どの参考書を見てもクラスやオブジェクトという単語が飛び交っていて,それについて説明がされています。しかし,そもそもクラスとオブジェクトという単語の意味するところがわからないので説明されれば説明されるほど混乱してきます。
 さて,読めば読むほどわからなくなってきたら,参考書の文章を“クラス”→“型”“オブジェクト”→“変数”と置き換えて読み進めてみてください。すなわち,クラスというのはintやdoubleと同様の型であり,オブジェクトというのはその型を持つ変数と思ってみてください。なんとなくプログラムの動作がわかってくると思います。オブジェクトというのは変数(構造体)に関数が付け加わったような動作をします。従って,今までのようにデータはデータで保存し,関数は関数で記述するというプログラミングとは印象が変わってきます。
 以上の説明は,あくまでクラスとオブジェクトのさわりだけです。(しかもいいかげんな説明です)クラスにはもっと重要な機能がありますので各自でさらに勉強してみてください。

ウィンドウズのプログラム?

 C/C++の教科書で少しプログラムを勉強した後で、Visual C++でウィンドウが出るようなプログラムを作ってみるといったい全体どのように動作しているのか分からずに途方にくれてしまいます。C/C++の教科書に載っているようなプログラムは皆1行1行上から順に実行していくのに、Visucal C++で作成したプログラムはなんだかわけの分からない関数ばかりが並んでいます。そもそもmain関数がどこにも見当たりません。
 実際にはWinMainという関数が存在しています。このWinMainの内部でメッセージループというループが回っています。このループでユーザーがどのような操作をしたか(キーを押すとかマウスをクリックする等)を見張り、その行動に応じて必要な関数を呼び出します。従って、ウィンドウズプログラムにおいては関数が呼び出される個所にプログラマがプログラムを追加していくことになります。

最後に

 最終的にある程度のプログラムが書けるようになるためには,Cのプログラミングの基本的な文法,C++で取り込まれたオブジェクト指向とクラスの機能,Visual C++のウィンドウズプログラムの動作の仕組みの3つを抑えることが必要です。
 全てを完全に理解しておく必要はありませんが,ある程度理解しておく必要があります。Cの文法はそれほど問題はないと思います。結局オブジェクト指向とクラスの概念のところでつまづいてしまうと思います。正確な理解と高度な機能の利用は後回しにして,実際のウィンドウズプログラミングに進むのが良いでしょう。

ホームページトップへ