はじめに
C 言語は 1972年にUSの有名なベル研究所で Dennis Ritchie らが設計・実装した言語だ。
今となっては低水準な言語だが、充分な機能、簡潔な記法とアセンブラに近いパフォーマンスを持ち、
Unix, Windows, Linux 等の OS をはじめ、コンパイラ、テキストエディタ等のツールや、ビジネスアプリやゲームなど多くの各種アプリケーション開発に用いられてきた。
C++ 言語は 1980年頃、やはりベル研究所の Bjarne Stroustrup が開発したもので、C にオブジェクト指向などの機能を追加したものだ。
C との互換性を維持しつつオブジェクト指向が可能で、パフォーマンスも高かったことから、
1990年頃から、ビジネスアプリやゲームなど多くのアプリケーション開発に使用されるようになった。
C++ は、過去の互換性を維持しつつ最先端のプログラミングパラダイムを多く取り入れてきたために、大規模で初心者には敷居が高い言語になってしまった。
しかし、全ての機能を使う必要はなく、まずは基本をマスターし、使える機能を徐々に増やしていけば、そんなに恐れることはない。
将棋プログラムなど高度なパフォーマンスを要求される分野では C/C++ 一択であり、ある程度時間を要してもマスターして後悔しない言語だ。
余談
筆者が初めて C++ に出会ったのは1992年の初めだ。
当時は、今はなき Lotus Development(現IBM)に勤務しており、
US のアトランタ支社(Ami Word というワープロソフトを開発していた会社を Lotus が買収した)で、ワープロの日本語化作業を行っていた時だ。
そのワープロソフトは C で記述されていたのだが、次の版では C++ に切り替えようということで、
開発部署で ボーランドC++ を大量に買い込んだ。
で、それが余っていたので、おいらもそれを貰って触り始めたのが、C++ との出会いだ。
ただ、C++ を全然わかってなかったので、アトランタにいた時は C++ コンパイラを C としてしか使用していなかったと思う。
(日本語化作業を行っていたワープロは C で記述されてた。)
しばらくして日本に帰国し、ちゃんと勉強しようと思い買ったのが、
工藤 智行 (著):「Cユーザのための C++入門〈基礎編〉 」だ。
この本は C をマスターしている人向けに C++ の基礎を解説したもので、非常にわかりやすく、この本のおかげで C++ が一応使えるようになったと思う。
本稿の目的
本稿のシリーズ「さくさく理解する C言語/C++ プログラミング入門」は、もともとは、ニコニコ生放送でプログラミング生放送を行っている某氏の教材用に執筆したものだ。
初学者は、書籍を読んで理解した気になっても、実際は理解していないことが多い。
ちゃんと演習問題を解き、理解したかどうかを明確にし、かつ記憶に残るようにしなくてはいけない。
時間が余計にかかると思うかもしれないが、確実に学習していくことが結局は早道なのだ。
また、放送主が使用していた書籍は網羅的で言語の細部まで詳しく解説してあるのだが、情報が古い
(2010年頃執筆されたにもかかわらず、2000年頃のことが書いてある)こともままあった。
C++は最先端で使用され続けている言語であり、進化も速いのだ。
本シリーズは、初心者・初級者が中級者以上になれることが目的だ。
最新の仕様に対応した必須の情報に絞り、なるべく多くの演習問題を用意したつもりだ。
言語仕様の細かいところにはあまりこだわらず、これくらいは知っとけよという部分を中心に解説する。
本シリーズで言及していないC/C++ 仕様の詳細については、リファレンス的なサイトへのリンクを示しているので、そちらで勉強して欲しい。
PV数を稼ぐため 検索エンジンからやってきた人のために、やりたいことやる方法を探す場合、
いやゆる逆引き的な使い方(コピペしてすぐ使えるコード満載)もできるように留意したつもりだ。
間違いや加筆した方がいいと思う箇所がある場合は、ツイッター(@vivisuke) 等で指摘してくださるとありがたい。
準備
- 環境構築
- Hello, World
文法
C++11
- C++11 範囲ベース for ループ 入門
- C++ 処理時間計測 入門 > C++11 chrono
- C++11 乱数 std::random 入門
- std::to_str() :数値を std::string 文字列に変換
C++ 標準ライブラリ
- コンテナクラス
- イテレータ
- アルゴリズム
- C++ 文字列クラス std::string 入門
その他
コンソールゲームアプリのソースコード解説
参考
以下は筆者がよく利用するサイト
余談
今はなき Lotus Development(現IBM)に就職したのは、1991年12月初めだ。 出社すると当時の上司のK氏に「来週月曜日からアトランタに年末まで出張だ」と告げられた。「えーっ、英会話できませんよ」というと、 「津田くんは C 言語がしゃべれるから大丈夫」と、太鼓判を押されてしまった。
英語での日常生活に困ることは無かったけど、仕事の込み入った話は困難で、かなり大丈夫じゃなかったですよ。。。