
プログラミングをはじめるにあたり、
どのプログラミング言語を学習すれば良いのか、迷うところだと思います。
ここでは、色んなプログラミング言語の中でも歴史が古く、
今でも人気のC言語について、難しそうだけど学習するべきかどうか?
迷っている人へのヒントを述べていきたいと思います。

アセンブラ/C++も実務経験あり、C#/Javaは独学しました。
やはり一番好きなのは、C言語です。
そんな私なので、C言語推しになりがちですが、
今回は冷静に考えてみました。
C言語を使う2つの理由

C言語で何ができるのか?
C言語で開発されているものとして、
ロボット・家電・車などを制御する「組み込みソフト」と呼ばれるもの、
OSの開発、ゲームの開発などが挙げられます。


なぜC言語を使うのでしょうか?
なぜC言語を使うのか?
色んなプログラミング言語の中でも、C言語で作ったプログラムは
実行速度がはやく、プログラムサイズもコンパクトです。
例えばロボットが歩いている時、前に壁があらわれたとします。
壁を発見してから壁をよけて歩くという処理が遅いと、
ロボットは壁にぶつかってしまいます。

こういった実行速度が求められるものについては、C言語が向いているでしょう。
これが、C言語を使う大きな理由の1つ目です。
また、家電などの「組み込みソフト」と呼ばれるものは、
PCに比べるとメモリ容量が小さいのです。

なぜかというと、色んな事情はあるでしょうが、少しでも値段を安くするため、
という理由が大きいのではないでしょうか。
こういったところでも、プログラムサイズがコンパクトなC言語が向いているでしょう。
これが、C言語を使う大きな理由の2つ目です。

初心者が気にすることですか?

では、もう少し、C言語を学習して役立ちそうなことを見ていきましょう。
C言語で得すること・損すること

得することは?
C言語を学習すると、メモリ管理などのハードウェアの知識が身に付きます。
ではそれが何の役に立つのでしょうか?
WEBアプリケーションやスマフォアプリを作る人にとっては、
直接的には役に立たないかもしれません。

しかし、ロボット・家電・車などの「組み込みソフト」の開発や、
OSのデバイスドライバ開発を行う人にとっては、
ハードウェアの知識も必要になるため、C言語で学習したことが役立つでしょう。

また、C++/C#/Java/Pythonなどは、C言語から発展したものと
言えますので、こういったプログラミング言語を学習する上で、
C言語で学習したことが役立つでしょう。
C言語は難易度が高いため、みんなから避けて通られるかもしれませんが、
そんな中で「私はC言語もできます」というのは、強力な武器に
なるのではないでしょうか。(あなたが活躍する分野にもよりますが。)

損することは?
損するとは言い過ぎかもしれませんが、あなたが
WEBアプリケーションやスマフォアプリを作りたいのであれば、
C言語を学習するのは遠回りかもしれません。
また、とりあえず何かプログラミングをはじめたい人にとっても、
C言語は難易度が高いので、私はお勧めしません。

初心者にはお勧めしないのですね?


教えて欲しいです。
初心者にお勧めのプログラミング言語は?

途中で挫折しないためにも、他のとっつき易い言語からはじめて、
まずはプログラミングの楽しさを経験し、必要に応じて
C言語を勉強すれば良いと思っています。
私としては、人工知能の開発で使われるなど最近注目されている
Pythonがいいと思います。

Pythonは、初心者にとって学びやすい言語のようです。
先ほど述べた人工知能の開発のほか、
WEBアプリ開発、組み込みソフト開発などでも使用され、学んで損のない言語です。
ただ、C言語に比べると実行速度が劣るため、実行速度が求められる部分は
C言語を使うこともあるでしょう。
その時にC言語を学べば良いと思います。
Pythonを理解していれば、C言語の難易度も下がっていることでしょう。

さいごに

私が現役の間は(あと20年くらい?)C言語が使われ続けると信じています。
少なくとも、既にあるC言語で開発された製品の
不具合対応や機能追加の時、C言語の知識が役立つでしょうし、
C言語から他の言語へ移植する時も、C言語の知識が役立つでしょう。
ただ、C言語の特徴である実行速度やコンパクトサイズは、
ハードウェア性能が向上すれば、他のプログラミング言語でも
問題なくなるかもしれません。
私がC#やJavaを独学したのは、そんな危機感からなのです。

既に述べたように、C言語の学習が
他のプログラミング言語を学習する上で
役立つことは間違いないと思います。
ただ、プログラミング初心者が選択する言語として、C言語はお勧めしません。
それが私の結論です。

損はありません。
私の仕事現場でも、バリバリでC言語を使ってます。
まだまだC言語は活躍しますよ!