C言語は「初心者殺し」と呼ばれるほど難しい言語と言われています。
でも、実際に何がそんなに難しいのかご存知でしょうか?
難しいと聞くけど何が難しいのかよく知らない…
そんなことはありませんか?
今回は、そんなあなたのために、C言語は何が難しいのかを分かりやすく説明します。
C言語をやってみたいけど「難しい」という言葉から勉強しようか迷っているのであれば必見の内容です。
■ 記事の構成について
恐らくあなたはまだC言語を勉強もしていないし、C言語で何が作れるかも分かっていないのではないかと思います。
そのため、この記事では、まずC言語で何が作れるかを紹介し、C言語を学ぶべき人と学ばなくていい人を明確にします。
そして、学ぶべき人に対してC言語の難しさを説明していきたいと思います。
C言語を勉強する時にオススメの書籍や動画も紹介しているので、C言語を学ぶべきと感じたら、ぜひ最後まで読んでくださいね!
C言語を学ぶべき人、学ばなくていい人
C言語は、何でも作れる万能の言語と言われますが、仕事としては「組み込み開発」をするために使われることがほとんどです。
組み込み開発とは、ロボットや機械に搭載するプログラムを作成する仕事で、
- 自動車
- 家電
- IoT製品
- 工場の機械
など、人々の生活を便利にしたり、仕事の効率を上げるための機械(モノ)を作る仕事です。
もしあなたがこれらの製品の開発に興味があり、「モノ作り」をやってみたいと感じるのであればC言語を学ぶべきです。
反対にC言語を学ばなくていい人は
- WEBサービス
- ゲーム
- スマホアプリ
- 人工知能
これらの開発に興味がある人です。
これらの開発では基本的にC言語は使われません。
厳密に言うと、ゲーム等で使うこともありますが、補助的に使う程度になります。
そのため、これらの開発をしたいのであれば、C言語ではなく、他の言語を学習するべきです。
それぞれの開発に使う言語を表にしてみました。
スマホアプリ | Java Swift Kotlin |
ゲーム | C++ C# |
WEBサービス | Ruby PHP |
人工知能 | Python |
こちらを参考に各言語の難しさを検索してみてください。
それでは、次からはC言語を学ぶべき人を対象に、C言語の難しさについて解説していきます。
C言語が難しいと感じる3つの理由
C言語は難しいからやめておけって言われたんですけど、どんな所が難しいんですか?
C言語の難しさはこの3つです!
- 他の言語に比べてコードをたくさん書かないといけない
- アプリを作る時に面倒な手順が多い
- コンピューターの内部に関する知識が必要
これらの理由からC言語は難しいと言われています。それでは、それぞれについて詳しくお話していきます。
1. 他の言語に比べてコードをたくさん書かないといけない
C言語は、他の言語に比べてたくさんのコードを書かないといけません。
その理由としては、C言語の文法がかなり単純にできているからです。
実は、C言語はプログラミング言語の中でも一番と言えるほど覚えることが少ない言語です。では、なぜ難しいと言われるのでしょうか?
その理由は、文法が単純すぎてたくさんのプログラムを書かないといけないからです。
例えば、初心者向けで簡単な言語と言われている「Ruby」や「Python」は、C言語よりも覚えることはたくさんあります。
しかし、覚えることが多い分、面倒なことや難しいことも簡単にプログラムできるようになっています。
そのため、複雑なプログラムでもパズルを組み合わせるような感覚で作ることができます。
一方、C言語は言語自体が単純なので、難しいことを簡単に行う仕組みがありません。
そのため、複雑なことをやる場合、自分で考えてプログラムしないといけません。そのため、難しいと感じてしまうのです。
すいません…難しさのイメージが全く湧きません…
そうですね…では、料理で例えてみましょうか…
料理に例えると…
例えば、フードプロセッサー、ミキサー、圧力鍋などの便利な調理器具の場合、機能が多くて使い方を覚えるのは大変ですが、覚えてしまえば難しい料理が簡単にできますよね。
一方、包丁、フライパン、鍋といった基礎的な調理器具の場合、使い方は簡単だけど、具材の切り方や火加減など、料理の詳しい手順まで覚えないといけないので、料理自体は難しくなります。
便利な調理器具はプログラミング言語で例えるならRubyやPythonと同じです。使い方を覚えるまでは大変だけど、覚えれば比較的簡単にプログラムが書けます。
一方で、C言語は基礎的な調理器具と同じです。使い方はすぐ覚えれるけど、何かを作るには細かい部分まで自分でプログラムが書かないといけません。
どちらの言語も難しい面はありますが、製品(アプリやゲーム等)を簡単に作る点で言うと、プログラムをたくさん書くC言語は他の言語よりも難しく感じるということです。
2. アプリを作る時に面倒な手順が多い
C言語が難しい2つ目の理由はアプリを作る時に面倒な手順が多いことです。これも基本的には「たくさんのコードを書かないといけない」に通じる内容になります。
例えば、RubyやPythonなど、初心者向きで簡単と言われている言語は、開発を楽にする便利なツールやライブラリがたくさん用意されています。
そして、これらを使うことで少ないプログラミング量で開発をすることができます。
一方で、C言語は製品を作るためのツールやライブラリが他の言語ほど充実していません。
そのため、開発時のプログラミング量がかなり多くなってしまいます。
製品を完成させる全過程を10とすると、RubyやPythonのプログラミング量は3くらいですが、C言語の場合は、8~9くらいは自分でプログラムを書かないといけません。
それぐらい手間と難しさに違いがあります。
この難しさを折り紙で例えるなら、RubyやPythonはガイド付きの紙で飛行機を作るようなものです。一方、C言語は何も書かれていない紙で紙飛行機を作るようなものになります。
初めて飛行機を折る人にしてみたら、どちらが作りやすいかは一目瞭然ですよね。
このように製品の開発に対するサポートが少ないこともC言語が難しいと言われる理由の1つです。
3. コンピューター内部に関する知識が必要
C言語が難しい3つ目の理由は、コンピューターの内部を意識したプログラムが必要になることです。
RubyやPythonはコンピューターの内部を意識しなくてもプログラミングができるようになっています。
その一方で、C言語はコンピューターの内部まで意識してプログラムをする場面が多々あります。
この内部を操作するプログラミングが難しいと感じる原因になっています。
これはシニア向けスマホと一般的なスマホに例えることができます。
シニア向けスマホは、複雑な操作を無くすことで誰でも簡単に使えるようにしています。
逆に、一般的なスマホは、色々と痒い部分に手が届くけど、その分、難しい操作が必要になる場面もたくさんあります。
シニア向けスマホはプログラミング言語で例えるなら、RubyやPythonと同じです。
RubyやPythonなどの新しい言語は、シニア向けスマホのように、難しい部分を極力無くして、簡単にプログラムが作れるようになっています。
一方でC言語は、古い言語なので難解な部分が残っています。
難解な部分とは「ポインタ」と言うコンピューターの中身を操作する文法になるのですが、それを理解するためにはコンピューターの専門的な知識も必要になります。
このようにC言語はプログラミング言語の難解な部分とコンピューターの知識が必要になるので難しいと言われています。
まとめ
以上3点がC言語の難しさになります。
すでにお気づきかもしれませんが、C言語の難しさは「面倒くさい」という一言に集約されます。
言語自体を習得するのは簡単、でも、作り方が分からないし、作るにしても手順が多すぎて大変。
だから難しいと感じるのです。
C言語って面倒そうですね…絶対覚えないとダメなんですか?
組み込み開発をやるなら必須のスキルですよ。
組み込み開発にC言語は避けられない
あなたが作りたい物が自動車、家電、ロボットなど、組み込み系の開発である場合、C言語は必須のスキルになります。
難しいから避けて通りたいと思うかもしれませんが、避けることはできません。
ただ、C言語は難しいと言われていますが、文法自体はとても単純です。
使える人からしてみると、RubyやPythonの方がよっぽど難しいという意見もあるくらいです(実際に私もそのように感じています)。
そのため、C言語に対して過度に構える必要はありません。
この後で、C言語を勉強する時に役立つ教材もご紹介するので、ぜひ参考にしてくださいね。
C言語を勉強するときに役立つ教材
それではここからはC言語を勉強するときに役立つ教材をご紹介します。
今回は、本と動画教材をご紹介します。
教材の前に、C言語を簡単に覚える勉強法は無いんですか?
勉強法は他の記事で紹介しているので参考にしてください!
C言語の学習にオススメの本
それではまずは本から紹介します。
本を使って勉強をするときは、1冊で学ぶのではなく、2冊を使って勉強すると効果的です。
1冊目は初めてプログラミングを勉強する時に使う本を選びます。例えやイラストが多めでイメージがしやすくい簡単な物を選びましょう。
2冊目は本質からしっかりと理解できるバイブルのような本がオススメです。検索がしやすく、専門的に詳しく書かれている本がオススメです。
1冊目・Cの絵本
「Cの絵本」は、絵本と言うだけあってかなりイラストが多めです。
イラストが多いのでスラスラ読めるし、ページ数もそこまで多くないので入門書として最適です。
初めてプログラムをやる時に陥りやすい罠として、網羅的に書かれている分厚い本を買ってしまうことがあります。
勉強の目標として、「まずは本を1冊やり終える」という目標を立てることも多いですが、そのような時に分厚い本を買ってしまうと、一冊分の学習をする前に飽きてしまいます。
「Cの絵本」は、最初に学習するには丁度良い容量です。
一部の項目で説明が足りていないと感じる部分もありますが、それは2冊目の本でしっかりと学べば大丈夫です。
まずは1冊やり遂げたいというのであれば文字も少なくイラストが多めで理解しやすい「Cの絵本」がオススメです。
2冊目・新C言語入門シニア編
新C言語入門シニア編は、かなり細かく文法の説明が書いてあります。
タイトルに「入門」と書いてありますが、中身を見ても、初心者向けの内容ではありません。
1冊目に読むとC言語は難しいと感じてしまう内容になっています。
ただ、C言語に少し慣れて、もっとしっかり文法を勉強したと思った時は、とても詳しく書かれているので参考になります。
どちらかと言うと、この本を使ってC言語を勉強するよりは、文法の使い方で困った時に検索をするためのバイブルとして一冊持っておきたい本です。
20年近く前から販売されている本なので実績も十分です。
私もこの本を使ってC言語に対する理解を深めました。
C言語を勉強するのにオススメの動画
次は、動画教材になりますが、動画教材を探す時は「Udemy」がオススメです。
Udemyは動画講座のオンライン・マーケットプレイスです。
色々な種類の動画教材を購入することができます。
もちろんプログラミングのコースも充実しており、C言語のコースも購入することができます。
オススメのコース1
オススメのコースとしては、自分のコースの宣伝になってしまいますが、
【初心者歓迎!】ゼロからC言語を覚えてWinAPIで画像ビューワーを作成しよう
こちらをオススメします。
C言語の文法だけでなく、C言語を使ってWindowsアプリの開発方法も学ぶことができます。Windowsアプリの開発は少し難易度が高いですが、実践的なC言語の使い方を学ぶことができます。
このコースだけでC言語の文法と実践的なC言語の使い方の両方を学ぶことができます。
オススメのコース2
次に、こちらのコースもオススメします。
【もう挫折しない】C言語ポインタ徹底解説・ポインタを自由に使えるようになろう
C言語で最難関の文法であるポインタの使い方を集中的に解説しています。ポインタの基礎から応用まで幅広く解説をしています。
コンピューターの中身を意識した解説をしているので、このコースを受講することでプログラムがコンピューター内でどのように解釈されて動いているかを理解することができます。o
オススメのコース3
最後はこちらのコースになります。
【初心者必見!】C言語の構造体と共用体を徹底解説!メモリ管理をマスターしよう!
C言語でデータ構造を作る時に絶対に必要な構造体、共用体について詳しく解説しています。構造体や共用体を使った時にどのようにメモリが確保されるのか、構造体、共用体のメモリ確保に関する注意点についてもも詳しく解説しています。
コース内では、構造体や共用体を使った実践的なサンプルも作成しているため、このコースを受けることで構造体、共用体の実践的な使い方を学ぶことができます。
YouTubeではダメなのか?
YouTube だと無料ですよね?YouTubeではダメなんですか?
良い教材があればYouTubeでも、もちろんOKですよ!
動画教材はYouTubeでも問題ありませんが、個人的にはUdemyの方がオススメです。
理由としては、Udemyの動画教材はカリキュラムが組まれていて、ちゃんと順を追って説明をしてくれるからです。
YouTubeの場合は単発の解説が多く、必要な情報を自分で探しにいかないといけません。その点、Udemyは講師が説明する順序も考えてくれているので、受講者の手間が少なくて済みます。
また、Udemyは色々な種類のコースがあり、書籍やYouTubeにはない専門性が高い内容のコースもあります。
他には
- 初心者向けのコース
- 特定の技術に焦点を絞って解説するコース
など様々なコースが販売されています。
Udemyは、現役のエンジニアがプログラミングを教えいるので、本よりも実践的なプログラミングを勉強することができます。
ただ、デメリットとして、誰もが講師になることができるので、講師により当りハズレがあるかもしれません。
ハズレのコースがあるってなんか怖いですね…
その点をカバーする仕組みもちゃんと整っていますよ!
Udemyのコースは
- 星による評価
- 講座のレビュー
- サンプルの受講
- 30日間の返金保証
など、コース選びを失敗しないための仕組みが整っています。
そのため、コース選びに失敗する可能性はとても低くなっています。
また、セールス期間中であれば1本1200円~2000円程度で購入することができます。
自分にとって使いやすい方を選択してください
ここまでUdemy推しで説明をしてしまいましたが、YouTubeで無料講座を探しても、もちろん大丈夫です!
良い教材が見つからなかった場合は、Udemyでも探してみると良い教材が見つかることもありますよ。
Udemyは、私も新しいプログラミング言語やツールの使い方を学ぶ時は頻繁に利用しています。とても役に立つサイトなので、動画教材に困っているときは利用をしてみてください。
まとめ
それでは今回のまとめです。
- C言語を学ぶべき人は、自動車やロボットなどの組み込み開発をしたい人
- C言語は文法自体は難しくない
- C言語は難しいことを簡単に行う仕組みが無いから難しい
- C言語はアプリを作ろうにも簡単に作れる仕組みがないから難しい
- C言語を扱うにはコンピューターの知識が必要だから難しい
- C言語の難しさは「面倒くさい」に集約される
- 本は2冊使って勉強するとよい
- 1冊目は例えやイラストが多い本、2冊目は内容がしっかり理解できる本が良い
- 動画教材はUdemyがオススメだが、YouTubeでももちろんOK!
以上になります。
C言語はイメージが先行して難しいと感じられていますが、やってみると言語としてはそこまで難しくはありません。
仕事としてC言語を使う場合は専門性が高い知識も必要になりますが、それは他の言語も同じです。
C言語を使う仕事は「組込み開発」と呼ばれるロボットや家電、IoT製品を扱う仕事が主流になります。最近は、AIやゲーム開発、WEB開発などが人気ですが、ロボットを扱うプログラミングも楽しいですよ!
これらに興味があり、仕事としてやってみたいという気持ちがあるなら、ぜひC言語にチャレンジしてみてくださいね!