Kuroda Software Service
言語仕様のポイント
  [サイトマップ]

コンテンツ内メニュー

表示モード 全項表示  部分表示



マークの色と認証の関係

一般公開

無料認証

購入認証


認証についての説明

無料アカウント作成フォーム

有料ページ購入フォーム


ほかのコンテンツトップページ

言語仕様のポイント

● Cは高級アセンブラである。

 中間コンパイル言語乱立の現代においてC/C++を理解するために、最も必要な概念はC/C++コンパイラが出力するファイルは、CPUがそのまま制御を委ねることのできるアセンブルコードだということです。

 CPUが直接実行するバイナリファイルにとって、変数名や関数名は意味がありません。CPUは要求されたアドレスに実行を移し、そこに書かれたCPU命令を実行するだけだからです。もし、実世界の諸問題を直接1と0のコードにしてCPUに実行させ 、解決できればそれにこしたことは無いのですが、マシン階層で起こっていることと、人間社会で起こっていることとの橋渡しをしてくれる何かが必要となるわけです。

 C/C++は移動可能な形のバイナリモジュール群を、人間が書いたソースコードを解釈して適切に組み合わせCPUが直接解釈可能なコードを生成します。したがってソースコード中の変数名は 、出力されたファイルには存在しません。コンパイラは文脈の解釈時に変数名をマークとして使用しますが、最終的にはアドレスへ参照へ置き換わります。

 「EXEファイルに変数名は存在しない」という一言を誰かが私にささやいてくれたなら、私はポインターという概念をその場で理解できたことでしょう。

● 型とは何か

 前述のように、マシン階層のプログラムにとって重要なのは、どのメモリアドレスを読むかなわけですが、そこから何バイト読むかという指定なしに話は進みません。例えば配列のように 、同じデータサイズの連続であれば、読み取りのステップはデータサイズなわけですから、型つまりサイズが決定していなければならないわけです。

 C/C++コンパイラは、同じサイズの変数や構造体やクラスでもコンパイルエラーを出します。これは、単に人間の記述ミスを指摘する目的で存在することです。明示した型キャストを行わなければならないことに憤ることもあるかと思いますが、たった一つのミスでプログラム全体がストールすることを考えれば 、むしろありがたい規格なのです。

● C++は言語を作る言語である。

 実際に、Cで比較的大規模なプロジェクトを書けばC++で改良された部分のありがたさが見にしみるはずですが、小規模なものしか作らなければ、ただ難解な決まりごとの連続に思えることでしょう。C++はその柔軟性から「言語を作る言語」という表現 が適切だと思います。

● C++とCOM

 C++の出現によってオートメーションとしてのCOMを設計することが容易になりました。WindowsでいうところのActiveXです。スクリプト等の非コンパイル言語は 、開発が容易でHTMLコンポーネントを利用したGUI形成も可能です。ただしWIN32APIを呼んで自らの機能を拡張することはできません。

 C++は、コンパイルという硬い行為の末にしか実行できませんが、Windows上で可能なありとあらゆる事を記述することができます。この両者をつなぐ技術がCOMです。バイナリモジュールを多言語から動的に呼び出すためには 、一旦汎用な構造体であるVARIANT型という概念を導入し呼び出し速度を犠牲にする必要はありますが、高い生産性と小回りがきく機能を両立できる最終兵器となります。

● 最後に

 本リファレンスが、あなたのクリエイティブな創作活動の手助けになることを願ってやみません。
 

お問い合わせ
©クロダ ソフトウェア サービス programmed by hidebou