1,導入 | 言語とは コンパイラ VC |
2,C++の概念 | 関数 クラス 変数 |
3,C++の利点 | C++がなぜ、注目されているのか |
アプリケーションというものがあります。
これは、実行可能なファイルのことです。
Windows95のExploreを開くと、「.exe」とかかれたファイルがあります。
このファイルは実行可能で、いろいろな動作が可能です。
今、あなたが使っているブラウザもアプリケーションです。
これは、Windowsに限らず、MS-DOS、DOS/V、Mac、UNIX・・・つまり
あらゆるコンピュータはアプリケーションというものが存在します。
この重要なアプリケーションは、一般にはSOFTとして
買う(もらう)ことになります。
ところが、これは自分好みではないときがあります。
または、自分の欲するアプリケーションがないかもしれません。
そのようなときにプログラミングをする必要があります。
プログラミングとは、自分がコンピュータに実行させたい事柄を
順序立てて記述します。
記述といっても、コンピュータが理解できるのは、機械語のみです。
従って、機械語でプログラミングする必要があるのですが
機械語は人間にとって非常に難解です。
そこで、人間にとってわかりやすい記述を、機械語に変換するソフトがあります。
それがコンパイラです。
computer側 | 人間側 |
|||
機械語 | ← | コンパイラ(VisualC++など) | ← | ソース |
ソースをつくることをプログラミングといいます。
以下にソースの例を示します。(C++の場合)
#include <iostream.h> void show(int a[],int number) { int i; int c=a[0]; int d=a[0]; for (i=0;i<number;i++) { cout <<v a[i] <<","; if (c<=a[i]) c=a[i]; if (d>=a[i]) d=a[i]; } cout<<endl; cout<<"The biggest number is "<<c<<endl; cout<<"The smallest number is "<<d<<endl; } void main(void) { int test[4]={3,1,4,0}; show(test,4); int test1[11]={3,1,4,1,5,9,2,6,5,3,5}; show(test1,11); }
コンパイラは、以下の種類があります。
言語 | 易しさ | 用途 |
BASIC | ○ | 初心者向け |
C++ | △ | 本格的なソフトが作れる。 |
FORTRAN | △ | 科学技術計算に用いる |
PASCAL | △ | データを組み立てやすい |
COBOL | △ | 事務計算向け |
アセンブラ | × | 一般に使わない |
機 械 語 | × | 一般に使わない |
この中で、BASICとC++が有名です。
一般に初心者がBASICから初めて、より高度なことをしたくなると
C++に移行することが多いです。
アプリケーションは、それを実行できるOSが決まっています。
OSの種類は以下の通りです。
OS | 普及 | 用途 |
Windows95 | ◎ | 最も広く普及している。 |
WindowsNT | ○ | 企業のLANやサーバー向け |
Windows3.1 | △ | 昔のWindows |
MS-DOS | ○ | PC98で用いたOS 10年前は主要なOSでした。 |
DOS/V | × | 一時期普及しそうだったがWindowsの登場で |
MacOS | △ | 10%普及している。 |
UNIX | × | ワークステーション用 |
以下にVisual C++ 4.0の例を示します。
このようにC++も含めて、すべてのsoftはWindows95にのっています。
C++は、Windows95上でソースファイルをsoft(*.exe)に変換します。
C++は人間が書いたC++ソースコードを機械語へと橋渡しをします。
ところでcomputerは、一台一台構造が違っています。
OSはcomputerとsoftの橋渡しをするのです。
soft (*.exe) |
← | Visual C++ | ← | C++言語ソース (*.c,*.cpp,*.h) |
OS(Windows 95) | ||||
computer |
BASICのソフトとして最も有名なのが MicrosoftのVisual Basicです。
現在ではVer5.0がでています。
これには、Standard版 Professional版 Enterprise版があります。
また、学生はアカデミックパックというのがあり、約半額で買うことができますが、
大手のソフトメーカーでないとアカデミックパックをだしてないことがあります。
Ver4.0についての定価は以下の通りです。(Ver5.0の価格は手元に資料がないのでわかりません)
一般 | アカデミック | |
Standard版 | 30000 | 12000 |
Professional版 | 78000 | 26000 |
Visual Basic 4.0は、Windows95,NT用のソフトです。
プログラミング方法が非常に簡単で、多方面から絶賛されています。
しかし、高度なこと(ハードを直接制御するとか)ができないといった
制約が多いのも事実です。
また、機械語ファイルのほかにdllファイル OCXファイルが必要になります。
従ってSoftを配布したり、別のパソコンで動作させるのに困るかもしれません。
ちなみに私はStandard版(Ver 4.0)をアカデミックパックで10800円で買いました。
C++のソフトとして最も有名なのも MicrosoftのVisual C++です。
現在ではVer5.0がでています。
また、Learning版 Professional版 Enterprise版があります。
Ver4.0についての定価は以下の通りです。(Ver5.0の価格は手元に資料がないのでわかりません)
一般 | アカデミック | |
Standard版 | 30000 | 12000 |
Professional版 | 98000 | 40000 |
Enterprise版 | 128000 | - |
Visual C++ 4.0 5.0は、Windows95,NT用のソフトです。
プログラミング方法が多少難しく、Winsowsの知識が必要なのですが
ほとんどすべてのことができます。(基本的にできないことはありません)
市販のソフトはほとんどこれで作れます。
ソフト会社も普通、これを使います。
また、VBのようにOCX,dllファイルが必要ないので、単独で実行することができます。
(ただし、Pro版以上で可能です。Learning,Standard版は単独で実行できません。)
ちなみに私はProfessional版をアカデミックパックで40000円で買いました。
C++は、C言語をObject指向にしたものです。
C++は、基本的にC言語を受け継いでいます。
C++言語の大きな特徴は関数です。
関数にデータを渡すと関数内の命令が実行され、その結果が帰っていきます。
まるで、tというデータを入力するとf(t)という値が帰ってくる数学の関数に似ています。
ただし、データは、必ず渡す必要はありません。
また、データが帰ってこないようにしてもいいのです。
データ(1) | → | 関 数 | → | データ(2) |
今の関数や変数をひとまとめにしたのがクラスというものです。
クラスは共通の目的の作用をするものをまとめてあります。
例えば、文字を操作するもの、数学的なもの、描画に関するものなどです。
VCでは、100を越えるクラスがあります。
変数 | 変数 | 変数 | 関数 | 関数 |
クラス |
変数の影響が及ぶ範囲は変数を定義した場所で決まります。
関数で定義したものは関数内でのみ影響します。
だから、関数が終了したらその変数は消滅します。
関数の外で定義すると、どの関数からもアクセスできます。(あまりやらない方がいい)
変数 a | 変数 b | 変数 a | 変数 c | 変数 d |
クラス A | クラス B |
上の例ではクラスAの変数aと、クラスBの変数aは同じ名前ですが
別のクラスなので衝突することがありません。(別々の変数として認識される)
しかし、変数dはクラスA,B両方にかかりますので
これと名前が衝突しないようにする必要があります。
C++で重要なのは以上の3つです。
いま、プログラミング言語には大きく2種類あります。
一つがBASICで、もう一つがC++です。
Microsoftからも、VisualBasic5.0やVisualC++5.0が最近発売されました。
(筆者のは両方とも4.0だが・・・)
この二つの違いを以下にまとめてみました。
項目 | BASIC | C++ |
普及度(家庭) | ○ | △ |
普及度(大学) | △ | ◎ |
普及度(企業) | × | ◎ |
プログラミングしやすさ | ○ | × |
価格 | SD版で2万 | SD版で2万 |
動作速度 | △ コンパイルしても 遅い |
◎ トップクラスのスピードで BASICの10倍のスピードがある。 |
細かな動作 | △ PAINT命令やハードウェアに 対する動作ができない |
◎ 市販のソフトができることは 何でもできる |
他の言語との類似性 | △ このタイプの言語はあまりない | ◎ Java,Pascal,Parlなどかなり似ている |
開発の分業化 | △ 分業するのは困難 | ◎ クラス,関数ごとに作業を分担できる。 |
移植性 | △ 困難 | ◎ クラスは販売もされている |
大規模なアプリ | △ 変数の管理が大変 | ◎ 変数のスコープが明確で 関数化するとわかりやすい |
このようにC++は専門的なのですが、一度修得すると他の言語もその類似性から
簡単に修得できます。(英語からドイツ語を学ぶように)
大学や企業では、C++のスピード,分担できること,
他に移植できることなどがあり普及しています。
クラスは、MFC(Microsoft Function Class)としてVisualC++には付属しています。
このように、専門的で汎用性のある部分は付属(市販)のクラスに任せてしまえばいいので
重要な部分の開発が集中的に行えます。
3.4 | → | 関 数 3.4+5! |
→ | 123.4 |
5 | → |
このように、関数の内部はブラックボックスとして考えていいので
開発が楽に行えます。また、関数をつくる必要があっても
Aさんが関数内部の開発、Bさんが関数をブラックボックスとして外側の
開発ができ、作業の分担ができます。
C++はJava,Pascal,Parlなどと似ています。
以下は、「今宵の空」で用いられているJavascriptの例です。
function sin(n) { n=Math.sin(n/57.2957795130823); return n; } function kakudo(n) { while (n<0) n=n+360; while (n>=360) n=n-360; return n; } now = new Date(); year = now.getYear()+1900; mon = now.getMonth()+1; day = now.getDate(); week = now.getDay(); hour = now.getHours(); min = now.getMinutes();
このように、while構文や関数を使っている点、クラスがある点などC++に似ています。
(但し、Javascriptには、変数の宣言がありません。)
他の言語もC++に驚くほど似ています。
BASICは人間に親しみやすい言語で書かれています。従って、コンピュータの負担は
大きくなります。BASICは「インタプリター」といわれ、人間が書いたコードを
1行ずつ翻訳しては実行・・・というのを繰り返します。
一行ずつやっているので遅くなるのです。BASICに付属の「コンパイラー」は
あらかじめ翻訳しておきます。従って、インタープリターよりは高速になります。
C++は初めから「コンパイラー」を使って機械語をつくります。
しかも「最適化」という処理でCPUに適した機械語をつくるので非常に高速になります。
実はC++はプログラミング言語の中で最も高速な言語といわれています。
なぜならば、言語がコンピュータの処理に近いためです。
以前、(0,0)から(255,255)で囲まれた方形の領域に点を65536点
打つプログラムを書きました。結果は以下の通りです。
言語 | 速度(秒) |
Visual Basic(インタープリタ) | 11 |
Visual Basic(コンパイル後) | 11 |
Visual C++ | 0.7 |
CPU:Pentium 166MHz Memory 48MB で測定
このようにC++はBasicの15倍の速度がありました。
このことからもC++の高速性がわかります。
C++のPageに戻る