C言語を独学で勉強したという方は、新・明解C言語やスッキリわかるC言語入門・苦しんで覚えるC言語などを使って勉強していたかと思います。
ですが、未経験者でもわかるように書かれた入門書は入門書に過ぎません。
プログラミングにおいて言語仕様の理解などの基礎知識は必要不可欠なので入門書は最高の教材なのですが、それだけでは応用力が乏しいため、いざなにかを作るとなってもなにから始めたらいいのかわからない、どのように書いていけばいいのかわからないなんてことになりがちです。
そこでこのページでは、C言語プログラミングの入門書を読み終えた後、さらにプログラミングスキルを高めるために次にやるべきことを紹介していきます。
C言語入門書の後に何を学ぶべきか
C言語の入門書の次に学ぶべきこと・やるべきことは、大きく分けて3つ。
- C言語を拡張したC++を学ぶ
- 実際になにかを開発してみる
- アルゴリズムを身につける
C言語を拡張したC++を学ぶ
C言語を拡張したプログラミング言語「C++」を学ぶこともいいでしょう。
C++は、C言語では複雑だった書き方を簡略化かつ見やすくでき、より複雑で長いプログラムを書くことに適しているのです。
例えばC言語での変数宣言だと以下のようになります。
char c = 'A';
char s[] = "Hello";
int i = 123;
float f = 2.2f;
double d = 3.14
これをC++では以下のように書くことができます。
auto c = 'A';
auto s = "Hello";
auto i = 123;
auto f = 2.2f;
auto d = 3.14
autoキーワードを使うことで、変数の型を自動的に指定でき、プログラムをかなり書きやすくしてくれるのです。もちろん構造体にも使えます。
自分で変数宣言するときはint i = 0;
のように書いてもいいですが、関数の返り値を新しい変数に代入するときにはかなり便利です。
auto result = func1();
返り値を受け取る変数の型を間違えてコンパイルエラーを引き起こすことがなくなるので、コンパイル→エラー修正の手間が少なくなります。
ほかにも数万~数十万行に及ぶプログラムでも、関数名の重複などがおきないようにプログラミングできる言語仕様(クラス)など、C言語にはない数多く便利機能があるため、C++を書けるようになるということは複雑なプログラムを効率良く書けるようになると言っても過言ではないのです。
Visual Studioを使っている方は知らないうちにC++を書いている
C言語の勉強に使う開発環境としてVisual Studio を使ってる方も多いかと思います。
実はVisual Studioは標準でC++が使われるようになっており、気づかぬうちにC++の構文を使って書いている可能性があるのです。
C++ではC言語の構文を全て使えるので、気づかないうちにC++プログラミングをしていても不思議ではないのです。
例えば以下の書き方はC++では有効ですが、純粋なC言語ではコンパイルエラーになります。
int Sum(int a, int b) {
return a + b;
}
int Sum(int a,int b,int c) {
return a + b + c;
}
int main() {
int a = Sum(1, 2);
int b = Sum(1, 2, 3);
return 0;
}
引数だけが異なる同名関数の定義はC言語ではできないC++の機能なのです。
C++はこれまで身につけたC言語の基礎知識をすべて使えるほか、基本的にC言語の言語よりも使いやすくなっているので、将来的に複雑なプログラムを書いていきたいと考えている方はC++に挑戦してみるのがおすすめです。
オススメなのはこちらの三冊です。
新・明解シリーズとやさしいシリーズはC言語版以外にC++版もリリースされているので、新・明解C言語入門で勉強した方は、新・明解C++入門を。
やさしいCで勉強していた方はやさしいC++で勉強すると、解説の流れも似ているスムーズに勉強できるでしょう。
それ以外の参考書でC言語を勉強していた方は、シリーズ100万部超えの独習C++で勉強するのが効率的でおすすめです。
実際になにかを開発してみる
C言語プログラミングの応用力を身につけるなら実際に何かを開発してみるのが一番の近道です。
オススメなのは、開発した内容が視覚化してイメージしやすい、どのように完成形に近づいていくか見ていて楽しいゲームプログラミングです。
初めてプログラミングしたときに、コンソールウィンドウに「Hello World」「こんにちは、世界」と表示されて「スゴイ!」と感じた方は、ゲーム好きかどうかに関わらず特におすすめです。
ゲームプログラミングは、簡単なものでも形にするとなるとそれなりに長めのプログラムを書くことになるので、プログラミング応用力を身につけるにはうってつけなのです。
ただし、ゲームプログラミングは大変なので、自分のレベルに合ったゲームプログラミングの参考書を選ばないと、1ミリもわからず挫折してしまうのがほぼ100%です。なので、まずはこちらの2冊のうちどちらかを選ぶことをおすすめします。
ゲームプログラミングの参考書の中でも読みやすくレビュー評価も高い2冊です。どちらもひとつのゲームを作っていくことになるので、プログラミングの応用力は間違いなく身に着きます。
一気に2冊買う必要はなくどちらも一冊で完結している内容なので、自分のレベルに合った参考書を手にとってみてください。
アルゴリズムを身につける
アルゴリズムの引き出しを増やしておいて損することはありません。
高速でソートできるアルゴリズムやサーチアルゴリズム、ツリー構造にデータを変換するためのアルゴリズムなど。
知っているのと知らないのとではプログラミングの効率や開発したソフトウェアの処理速度などが大きく変わってきます。
文字列検索アルゴリズムなど、知らないと処理時間が大幅に長くなってしまう可能性のあるアルゴリズムを習得していると、作りたいプログラムをすぐに実現できるでしょう。
アルゴリズムの知識、純粋なプログラミング能力をより深めていきたいのであれば、新しいアルゴリズムの勉強をするのがいいでしょう。
幸運なことに、C言語で書かれたアルゴリズム集の参考書がリリースされているので、そちらを使って勉強するのがおすすめです。
オススメはC++の習得です
- C言語を拡張したC++を学ぶ
- 実際になにかを開発してみる
- アルゴリズムを身につける
どれにしようか悩んでいるのであれば、C++の習得がいいでしょう。
C言語で学んだスキルを軸に新しい言語を勉強する練習にもなるので、新しいプログラミング言語を習得するための応用力が身につきやすいです。
将来的にJavaやPython・C#などよそのプログラミング言語を触ることになることが多いので、新しい言語を習得する経験を身に着けておくためにもC++を身につけるといいでしょう。
冗談のようで本当の話ですが、C言語とC++をマスターできたらほかの全てのプログラミング言語を扱えます。それくらいプログラミングの基礎中の基礎が詰まっている言語なのです。
まだまだプログラミング初心者だと思っている方、プログラミングスキルをもっと伸ばしたい方は、C++に挑戦してみてください。