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

トップページC++編

C++編で扱っている C++ は 2003年に登場した C++03 という、とても古いバージョンのものです。C++ はその後、C++11 -> C++14 -> C++17 -> C++20 -> C++23 と更新されています。
なかでも C++11 での更新は非常に大きなものであり、これから C++ の学習を始めるのなら、C++11 よりも古いバージョンを対象にするべきではありません。特に事情がないなら、新しい C++ を学んでください。 当サイトでは、C++14 をベースにした新C++編を作成中です。

この章の概要 🔗

この章の概要です。


イントロダクション 🔗

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

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

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

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

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

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

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

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

準備 🔗

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

  1. Microsoft Visual Studio Community 2017
  2. clang 5.0.0

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

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

オンラインコンパイラについては、「paiza.IO について」のページに、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++編では、C言語習得者で C++ は初めてという段階の人に向けて解説を行います。当サイトとしては、C++ の学習より先にC言語を学習すべきであるという立場を取ります。ですから、C言語の学習がまだであれば、先にC言語編をお読みください。

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

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

本編の内容について 🔗

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

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

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


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

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

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

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


参考リンク 🔗


更新履歴 🔗

 VisualStudio 2015 の対応終了。

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

 メールアドレスを変更。

 VisualStudio 2013 の対応終了。

≪さらに古い更新履歴≫

 「VisualC++」という表現を「VisualStudio」に統一。

 Xcode 8.3.3 を clang 5.0.0 に置き換え。

 clang 3.7 (Xcode 7.3) を、Xcode 8.3.3 に置き換え。

 paiza.IO の紹介を追加。

 VisualC++ 2017 に対応。

 clang の対応バージョンを 3.7、Xcode を 7.3 に更新。

 標準規格に関する文章を、現状に合わせて修正。

 clang の対応バージョンを 3.4 に更新。

 標準規格に関する文章を、現状に合わせて修正。

 VisualC++ 2012 の対応終了。

 VisualC++2010 の対応終了。

 VisualC++ 2015 に対応。

 clang 3.2 に対応。

 コンパイラに関する情報を、「開発ツールの情報」のページへ分離。

 VisualC++ 2013 に対応。

 VisualC++2008 の対応終了。

 clang 3.0 に対応。
VisualC++2012、2008 のリンク先を修正。

 新規作成。



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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る