C言語がプログラミング初心者にオススメでない理由
「プログラミングの勉強を始めたいけどC言語ってどうなの?」
という疑問に答えます。
C言語はプログラミング初心者にオススメしません。
理由は以下の3つです。
・理由1:ポインタの概念と記述が難しい</li>
・理由2:文字列の扱いが面倒</li>
・理由3:規模が大きくなるとコンパイルが長い</li>
オススメしない理由について、次の章から具体的に説明していきます。
理由1:ポインタの概念と記述が難しい
私はC言語からプログラミングの勉強を始めましたが、ポインタが最も理解に時間がかかった部分です。
「C言語と言えばポインタ」と言えるほど切っては切れない存在です。
しかし、ポインタの概念や記述が難しいです。
特に記述方法がややこしく、ポインタなのか値なのかがとっさに判断しにくいです。
以下のコードをご覧ください。
#include<stdio.h>
int main() {
/* 変数の定義と値の代入 */
char a[16] = "Hello World!";
/* アドレス変数の定義 */
char *p;
/* 変数pにアドレス代入 */
p = &a[0];
printf("変数aの値は「%s」です\n", &a[0]);
printf("変数aのアドレスは「0x%x」です\n", a[0]);
printf("ポインタ変数pの値は「%s」です\n", p);
printf("ポインタ変数pのアドレスは「0x%x」です\n", *p);
/* 文字出力関数コール */
return 0;
}
細かい処理を理解する必要はありません。変数にだけ注目してください。
「*」とか「&」とかを変数の頭につけているのがわかると思います。
・どんな場面で「*」をつけて
・どんな場面で「&」をつけて
・どんな場面で何もつけないのか
この3つを理解するのが初心者にはなかなか難しいです。
しかし、ポインタはC言語にとって必須とも言える要素なので、ポインタが理解できないと学習が進みません。
最初はポインタの勉強よりもプログラミングの勉強に時間を割いた方がいいのでC言語よりも他の言語を選んだ方が良いでしょう。
理由2:文字列の扱いが面倒
C言語は型やサイズを意識しなければならない言語である為、文字列を扱う場合も型やサイズを意識しなければなりません。
例えば「Hello World!」という文字列を代入する場合も文字列の長さを考えて変数のサイズを定義する必要があります。
char型の場合1文字ずつ「H」、「e」・・・のように1文字ずつ代入されるので配列の長さは12とします。
char a[12] = "Hello World!";
実際はどらくらいの長さになるかわからない場合も多いので、十分な長さを用意するようにしましょう。
また、printf()関数の変換指定子はchar型なら「%c」、10進数の数字なら「%d」のように型によって指定を変えなければなりません。
これがPythonであれば全て「%s」で指定できます。
理由3:規模が大きくなるとコンパイルが長い
C言語を動作させる為にはコンパイルが必要です。
小さなプログラムを作っているうちはいいですが、大きなプログラムとなると何十分もコンパイルが続く場合があります。
長々とコンパイルした後エラーがあるとモチベーションが大幅に下がります。
初心者はコンパイル型の言語は避けた方が良いでしょう。
コンパイルを短縮する手段はある
コンパイルを短縮する手段はあります。
「make」コマンドを使用することで変更したファイルのみのコンパイルとなり、大幅にコンパイル時間を短縮できます。
C言語を学ぶことはあなたの力となります
いきなりやるのはオススメしません。
しかし、C言語を学ぶことを否定しているわけではありません。
C言語はプログラミングの基礎的な要素を学べる言語であり、Javaを始めとした数多くのプログラミングのベースとなっている言語でもあります。
C言語が理解できれば他の言語もより深く理解できるようになります。
1つ目の言語を一通り学んだ後に、2つ目の言語として学ぶのはオススメです。
まとめ
C言語はプログラミング初心者にCオススメしません。
しかし、中級者以上であれば学んでおいた方がいい言語の一つです。
初心者にC言語をオススメしない理由は以下の3つです。
・理由1:ポインタの概念と記述が難しい</li>
・理由2:文字列の扱いが面倒</li>
・理由3:規模が大きくなるとコンパイルが長い</li>
プログラミングは言語が違っても本質的な要素は同じである為、一つ学べば他の言語も理解しやすくなります。
他の言語を学ぶことは遠回りに見えるかもしれませんが、実は近道です。
まずは他の言語でプログラミングの基礎を理解しましょう。
理解できれば楽しいので中級者以降の方は是非、C言語に挑戦してみてください。
関連記事>>C言語初心者の勉強方法
note一覧
この記事が気に入ったらサポートをしてみませんか?