はじめに | Programming Place Plus C++編【導入】 第0章

C++編【導入】 第0章 はじめに

先頭へ戻る

この章の概要

この章の概要です。


イントロダクション

C++ は難しい言語です。その一方で、非常に強力な言語です。この言語さえ知っていれば、何でもできると言えるだけの強力さを持っています。

何でもできるというのはC言語でも同様ですが、C++ はその強力で豊富な機能のおかげで、高い保守性を誇っており、特に中~大規模な開発において、高い開発効率を誇ります。その上で、C言語並の処理効率の高さを持っているのです。

これは特に、ゲームプログラミングの勉強をしようとして、C++ という言語に行き着いた人に多い勘違いのようですが、C++ が「何でもできる」言語だといっても、グラフィックスを表示したり、音を鳴らしたりといった機能をもっている訳ではありません。こういった機能は、Windows等が持っているものであり、これを呼び出すために C++ が使えるということです。

ですから、ゲームプログラミングができるようになるためには、「C++ のようなプログラミング言語」「Windows 等のターゲット環境の機能の使い方」「ゲームのアルゴリズム」のそれぞれを個別に学習しなければなりません。

少し脱線したので、話を戻します。

C++ は、C言語と同じ考え方の手続き型プログラミングに加えて、オブジェクト指向プログラミング汎用プログラミングといった、新たな考え方を使うことができます。このように複数の手法が使えるというのは、自由度が高く、表現力豊かであるということです。

C++ は、C言語との互換性も考慮されており、幾らか例外もありますが、C言語のソースコードをそのまま C++ として扱うことができます。ですから、C言語が分かっていれば、C++ の世界へ足を踏み入れるのは割と簡単です。問題は、そこから先があまりにも広大であることですが、全てを理解しなくても C++ を使うことはできます。

C++ には、「使用していない機能が余計なオーバーヘッドを発生させない」という哲学があります。これは処理効率についてもそうですし、プログラマの学習コストの面でも同様です。知らない機能のことは忘れておいても良いのです。

準備

C++ の学習を始めるに当たり、コンパイラを準備する必要があります。当サイトが対応しているコンパイラは、C言語編と同じで、以下のものです(リンクは、それぞれの公式サイトへ移動します)。

  1. Microsoft VisualStudio Community 2017
  2. Microsoft VisualStudio Community 2015
  3. clang 5.0.0

VisualStudio は、C言語の仕様上はまったく問題のないはずのソースコードに対して、警告やエラーを出すことがあります。これはセキュリティ上、危険な場合への対策を促すものですが、学習には少々邪魔になるかも知れません(もちろん、本格的なプログラムでは、危険性があるということは認識すべきです)。この辺りの詳細は、開発ツールの情報を参照して下さい。

これ以外にも、VisualStudio に関する情報を「開発ツールの情報」でサポートしています。

これら以外の手段として、オンラインコンパイラを使う方法もあります。これは、Webブラウザを通して、サービス提供者のサーバにあるコンパイラを使う方法で、手元の PC に開発環境を構築しなくても、(ある程度の)プログラミングを行うことができます。ただし、多少、出来ないことがあるかも知れませんから、その点はご了承下さい。

オンラインコンパイラについては、「開発ツールの情報」のページに、paiza.IO という Webサイトの情報を載せていますので、そちらを参照してみて下さい。paiza.IO を使う場合、実際に動作しているコンパイラは clang 3.8 です(2017年6月5日現在)。

標準規格

C++ には、標準規格が存在します。2018年8月現在、C++98、C++03、C++11、C++14、C++17 という通称で呼ばれる5つの規格(数値はそれぞれ正暦年の下2桁の意味)があります。

C++03 は C++98 に対するマイナーバージョンアップ、C++14 は C++11 に対するマイナーバージョンアップという位置付けなので、大きな変化が起きたのは C++11、C++17 のタイミングになります。また、今後も3年ごとにバージョンアップが行われることが決まっています。

C++編では、C++03 をベースとしつつ、関連する C++11/14 での変更点を適宜取り上げていきます。C++11/14 の話題は分離したところに書くようにしています。そこまで学習するのが大変だと感じるようなら、単にその箇所を無視して読み進めて下さい。

方向性

当サイトの C++編では、C言語習得者で C++ は初めてという段階の人に向けて解説を行います。当サイトとしては、C++ の学習より先にC言語を学習すべきであるという立場を取ります。ですから、C言語の学習がまだであれば、先にC言語編をお読みください。

冒頭でも書きましたが、C++ は難しい言語です。広く使われているプログラミング言語の中でも、トップクラスの難しさかも知れません。ですから、当サイトの記事を読んだからと言って、すぐにでも C++ を使いこなせる訳ではありません。とにかく多くのプログラムを読み、多くのプログラムを自分の手で書いて下さい。

解説されている範囲の内容に関して、どうしても理解できない場合は、質問メールを送って下されば、可能な範囲でお答えします。匿名で構いませんので、pplace_ky@programming-place.net までどうぞ。

本編の内容について

C++編は、幾つかの分類ごとに、章立てを行っています。ですから、言語解説編の第1章と、標準ライブラリ編の第1章とは別の章になっています。1つの分類の中の章は、できるだけ、突然内容が飛躍するようなことが無いように考慮しているつもりですが、明らかにそうなっていない箇所があれば、是非ご指摘下さい。

初めての方は、「言語解説編」の方から読み進めて下さい。そこから適宜、「【標準ライブラリ】の○○章へ進んでください」といった指示があるので、そのような場合に、「標準ライブラリ編」をお読み下さい。

また、「標準ライブラリ編」は、標準ライブラリの1つの機能ごとに章を分離するように構成していますから、リファレンスのようにも使えるでしょう。


やや高度な内容や、細かい部分は、次のように破線で囲んでコラム的な扱いとしています。この部分の説明については、難しければ読み飛ばしても構いません。

この部分に書かれている内容は、本文の内容を補足するものです。

この部分に書かれている内容は、少し高度な話題です。

本編で登場するサンプルプログラムや、その断片は、使えそうであれば、ご自分のプログラミング作業の中でそのまま使って頂いても構いません。ただし、バグが無いことや、最良のプログラムであることを保証している訳ではありませんので、自己責任でお願いします。


参考リンク



更新履歴

'2018/8/14 VisualStudio に関する情報を今後、専用のページでサポートするために文面の調整を行った。
標準規格に関する記述を「標準規格」の項に分離。C++17 に言及。

'2018/6/17 メールアドレスを変更。

'2018/4/5 VisualStudio 2013 の対応終了。

'2018/4/2 「VisualC++」という表現を「VisualStudio」に統一。

'2018/1/5 Xcode 8.3.3 を clang 5.0.0 に置き換え。

≪更に古い更新履歴を展開する≫



C++編のトップページへ

Programming Place Plus のトップページへ


はてなブックマーク Pocket に保存 Twitter でツイート Twitter をフォロー
Facebook でシェア Google+ で共有 LINE で送る rss1.0 取得ボタン RSS