こんにちは。倉内です。
プログラミング言語は多数存在し、マイナーなものまで含めると200種類以上あると言われています。
たとえば、現在「モダンなプログラミング言語」と言われて浮かぶのは、Go言語やSwift、TypeScript、Kotlinあたりでしょうか。それからAI・機械学習分野ではもはやマストともいえるPython、開発案件数の多いPHPやJava、フロントエンド開発に欠かせないJavaScript、そしてゲーム開発といえばC++やC#が挙げられるでしょう。
目的がある場合は「どの言語が適しているのか」を考えて学習する言語を選ぶ方も多いと思いますが、一方で情報系の大学の授業で必須科目として扱われるのはC言語が圧倒的に多いと思います。
ただ、C言語は決して習得が簡単な言語ではありません。そこで今回は、
- そもそもC言語とはどんな言語なのか
- なぜ「難しい」と言われるのか
- 今の時代にC言語を学ぶ必要があるのか
- 学ばなければならないとしたら楽しく学べる手段はないのか
などについて考えてみたいと思います。
C言語はどんなプログラミング言語か
paizaラーニング「C言語入門編1:プログラミングを学ぶ」より
C言語は1970年代に登場した、50年の歴史を持つプログラミング言語です。のちに登場したC++、Java、C#のいわゆる「C系」と言われる言語の元となっています。
多数の後発プログラミング言語がある中、オペレーティングシステム(OS)や組み込みシステムの開発では今もC言語がメインで使われています。
paizaラーニング「C言語入門編1:プログラミングを学ぶ」より
仕様としてはそれほど難しくない言語ですが、やはりメモリ管理やポインタなどプログラミングに初めて取り組む方には難解な部分がいろいろあります。
ただ、さきほど挙げたC系の言語はもちろん、PHPやJavaScriptもC言語の影響を受けており、学んでおくとさまざまな場面で役立ちます。
なぜC言語を授業で学ぶことが多いのか
冒頭にも書いたとおり、情報系のプログラミングの授業ではC言語が扱われることが多く(次点でJavaでしょうか)、はじめての本格的なプログラミングはC言語だったという方も多いと思います。
もともと趣味でプログラミングをやっている方を除いて、はじめてがC言語だと苦労する方もいるようです。
「もっと学びやすい言語にしてくれればいいのに……」と大学時代のわたしも思った記憶がありますが、C言語が選ばれるのにはいくつか理由があります。
- コンピュータの本質を理解でき、ハードウェアへの理解も深まる
- 言語問わず、「プログラミング」というものを知るのに適している
- C言語を学ぶとそのあと別の言語が習得しやすい
- 歴史が長いので習得している人が多く情報が得やすい、参考書も多い
など
もちろんこれだけではないと思いますが、特にひとつめは工学系や情報系の学生は理解しておかなければならない内容です。
また、授業という性質上、教える人が必要になってきます。C言語であれば教える人にそう困ることはないでしょうし、インターネットにも情報が多く、参考書も豊富なので自習も十分可能です。
逆に言えば、趣味でプログラミングをやってみたい、現在社会人で別業界からITエンジニアにチャレンジしたいといった方が「プログラミングはC言語からだ!」とやる必要性はないと思います。Webサービスやスマホアプリなどの開発で用いられる技術を学んだほうが実用的です。
以前「需要があるか」という視点で学習するプログラミング言語を選ぶことについて書いた記事があります。興味がある方はごらんください。
なぜC言語は難しいと言われるのか
実は言語仕様自体は単純で、基礎の範囲では文法も複雑なものはありません。他の言語と同様、このくらいであれば直感で見て分かると思います。
// 花占い(if文による条件分岐(else if文)) #include <stdio.h> int main(void){ int number = 1; // 条件式が成立したとき:1だったら「スキ!」と出力 if (number == 1) { printf("スキ!"); // 条件式2が成立したとき:2だったら「どちらでもない」と出力 } else if (number == 2) { printf("どちらでもない"); //条件式がどちらも成立しなかったとき:「キライ」と出力 } else { printf("キライ"); } }
上のコードを実際に実行してみたい場合は、paiza.IOをご利用ください。
ただし、以下のような点が難しいと言われる要因になっています。
- おまじない的に記述するものが多い(上記であれば #include~ の部分)
- オブジェクト指向ではないためコードが長くなりがち
- ポインタやメモリ管理などの理解が初心者にはハードルが高い
- 他の言語だといい感じの機能としてまとめられているものでもC言語だと自分で実装が必要な場合がある
など
つまりC言語は、使いこなすのが他の言語より難しいと言ってもいいかもしれません。
C言語がどういう言語かなんとなく分かったところで、「じゃあどうやって学ぶといいんだろう」ということについてお伝えしていきます!
C言語の学習法
どのプログラミング言語でもそうですが、自分で開発環境を構築するのは結構大変です。
そこでWebブラウザとインターネットさえあればすぐに学習がスタートできる、paizaラーニングの学習講座をご紹介します。
動画講座「C言語体験編」
「C言語体験編」(全編無料)は、プログラミングに初めて触れる方向けの学習講座です。「プログラミングとはなにか」「コードの中に書くコメントとはなにか」といった基礎から学ぶことができます。
18のチャプターから構成されており、上記に加え、文字列や数値の扱い、四則演算、if文・for文、標準入出力など基礎文法をひととおり学べます。
paizaラーニングの特徴として、画面が以下のとおり分割されているため、動画で学びながら実際にコードを書くというインプット・アウトプットの両方ができるという点があります。
各エリアの説明
①動画エリア:各チャプター約3分の動画が表示されます。
②補足テキストエリア:動画の補足説明や、解説している問題の問題文などが表示されます。「演習課題へ進む」ボタンを押すと、そのチャプターの学習内容をもとにした類似問題が出題されます。
③コードエリア:自由にコードの記述、実行が可能です。動画の内容を実際にコーディングして試すことができます。
④入出力エリア:コード実行時に標準入力する入力値の設定ができ、コード実行後の出力値が表示されます。
はじめてのプログラミングがC言語で、授業ですでに難しさを感じているという方は、ぜひこの講座で基礎を習得してみていただければと思います。
動画講座「C言語入門編」
すでに他のプログラミング言語に触れていたり、基本をしっかり学びたい方向けには「C言語入門編」(一部無料)を公開しています。一部体験編と被る内容もありますが、こちらのほうがより詳しく説明しています。
この中でも特に初学者がつまずきやすいポインタについてのレッスンを少し紹介します。
ポインタについて理解しよう
paizaラーニング「C言語入門編5: ポインタについて理解しよう」より
paizaラーニングではこのようにイメージ図を用いた解説、そして学習内容の復習となる演習課題をご用意しています。(課題がないレッスンもあります)また、解説の音声はプロの声優さんが担当しています。
これらを用いて、難しい内容でも理解しながら進めることができます。
paizaラーニング「C言語入門編5: ポインタについて理解しよう」より
なお、以下の記事では6つの学習サービスを比較していますので、学びたい内容などから自分に合ったものを選んでみてください。
練習問題集「レベルアップ問題集」
プログラミングはコードを書いた量がものを言います。基本を学んだら、ぜひたくさんプログラミングの練習問題を解いてみましょう。
この「レベルアップ問題集」もブラウザ上で実行、正誤の判定、採点をおこなうのでいつでも取り組んでいただけます。
さまざまな内容・難易度の問題を公開しており、テストケースの入力値を参照していただくことも可能です。また、友人同士でコードを共有していただいたり、勉強会で利用していただいたりしても構いません。
実力を試す「スキルチェック」
出題形式はさきほどのレベルアップ問題集とほとんど同じですが、こちらは制限時間があり、挑戦した問題の難易度と採点結果でS・A・B・C・D・Eのランクづけがされます。
プログラミング学習でどれだけ力がついたかを測るのにおすすめです。
また、C言語はもちろん、多数の言語(Java、PHP、Ruby、Python、Perl、C++、C#、JavaScript、Objective-C、Scala、Go、Swift、Kotlin)に対応しています。
スキルチェックの問題は他者との共有やインターネットでの公開は不可とさせていただいています。
楽しく学ぶ「Paiza Programming Game」
「もっと楽しくプログラミングを学びたい!」という方へ、paizaではプログラミングゲームを多数公開しています。
ストーリーやキャラクターの着せ替えなどを楽しみながら、プログラミング学習までできますので、「ちょっと勉強に疲れたな……」という方もぜひ遊んでみてください。
難易度の高い問題もありますので、ある程度プログラミングに自信がある方も楽しんでいただけると思います。
ITエンジニアを目指すなら「paiza新卒」
ここまでご紹介してきたようにpaizaはプログラミング学習コンテンツを多く公開していますが、就活・転職サービスも運営しています。
paiza新卒はITエンジニアを目指す学生に特化した就活サービスです。
paiza新卒では、さきほどのスキルチェック問題を解いて獲得したランクによって応募できる求人が異なります。
企業が新卒で入社する社員に求めるものはさまざまですが、総合職としての採用ではなく、専門職として高いプログラミングスキルを持った人材を求めている企業もあります。
ITエンジニアを目指したいと考えている方はぜひご利用ください。
まとめ
C言語とはどんな言語なのか、なぜ難しいのか、そして勉強法についてもお伝えしてきました。
授業以外ではそれほど触れる機会がないかもしれませんが、最初にしっかりC言語を身に着けておけばあとで他のプログラミング言語を学ぶ際も必ず役に立つはずです。
最近は安価でも十分学べる学習サービスも多くありますので、活用して楽しく学習しましょう。
なお、paizaでは学生の方が全講座無料で利用できる「学校フリーパス」*1もご用意しています。詳細はこちらをごらんください。
「paizaラーニング」では、未経験者でもブラウザさえあれば、今すぐプログラミングの基礎が動画で学べるレッスンを多数公開しております。
詳しくはこちら
そしてpaizaでは、Webサービス開発企業などで求められるコーディング力や、テストケースを想定する力などが問われるプログラミングスキルチェック問題も提供しています。
スキルチェックに挑戦した人は、その結果によってS・A・B・C・D・Eの6段階のランクを取得できます。必要なスキルランクを取得すれば、書類選考なしで企業の求人に応募することも可能です。「自分のプログラミングスキルを客観的に知りたい」「スキルを使って転職したい」という方は、ぜひチャレンジしてみてください。
詳しくはこちら
*1:「paizaラーニング」の全170レッスン、 1,450学習動画、 2,650問の演習課題を小・中・高・大学・専門学校向けにすべて無料で提供するサービスです。学校・教員からの申し込みが必要になります。