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

先頭へ戻る

この章の概要

この章の概要です。


イントロダクション

「Modern C++(モダンC++)」は、2011年に策定された標準規格(C++11) 以降の C++ を指す通称です。Modern C++ という名前のプログラミング言語が存在する訳ではありませんが、旧来の C++ を解説した C++編との区別のために、この名称を使いました。

記事の中では、特に区別する必要が無い限り、C++ と表記します。

C++ は非常に強力な言語ですが、一方で、非常に難しい言語と言われています。Modern C++ の時代になって多くの新機能が追加され、C++ はより強力かつ使いやすいものになった…とされていますが、残念ながら言語はより巨大になってしまい、余程詳しい人で無い限り、理解・把握が困難なものになっています。従来からの C++ を知っていると、単純に、新機能が便利で良いものに見えますが、新規で C++ を始めようとする学習者にとっては、単に巨大で複雑な言語としか思えないかもしれません。

Modern C++ で追加された新機能の恩恵を受けるためには、 C++学習の早い段階で、便利な機能を知った方が良いと考えています。 そのためには、旧来の C++ のために構成した C++編の作りを見直す必要があると思い、 新たに構成し直した Modern C++編を作っていくことにしました。

準備

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

  1. Microsoft VisualStudio Community 2017
  2. 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年ごとにバージョンアップが行われることが決まっています。

当サイトでいう「Modern C++」とは、C++11 以降のことを指しています。

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

方向性

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

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

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

本編の内容について

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

初めての方は、「言語解説編」の方から読み進めて下さい。 そこから適宜、「【標準ライブラリ】の○○章へ進んでください」といった指示があるので、 そのような場合に、「標準ライブラリ編」をお読み下さい。
また、「標準ライブラリ編」は、標準ライブラリの1つの機能ごとに章を分離するように構成していますから、 リファレンスのようにも使えるでしょう。


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

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

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

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


参考リンク



更新履歴

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

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

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

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

'2017/12/5 C++17 が制定されたことに合わせて、文面を修正。

'2017/7/30 clang 3.7 (Xcode 7.3) を、Xcode 8.3.3 に置き換え。

'2017/7/2 新規作成。



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

Programming Place Plus のトップページへ


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