C LANGUAGE TECHNOLOGY

元東大教員が語るC言語が挫折するほど難しい5つの理由とできるようになる3つの方法

悩んでいる人

C言語が挫折するほど難しいんだけど,できるようになる方法を教えて!

こういった悩みにお答えします.

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOSの授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発
  • プログラミング歴15年以上,習得している言語: C/C++Solidity,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開

こういった私から学べます.

元東大教員が語るC言語が挫折するほど難しい5つの理由

元東大教員が語るC言語が挫折するほど難しい5つの理由を紹介します.

私の以下の経験から語るので,非常に有益な内容になっています.

  • 私が最初に学んだプログラミング言語はC言語で,全然できなかった頃からできるようになるまでの経験
  • 東京大学を含む様々な大学の学生にC言語を教えた経験

開発環境の構築が大変

C言語はGCC/Clang,Visual Stuido等を利用した開発環境の構築が大変です.

開発環境の構築が難しい場合は,C言語のプログラムを実行できるWebサイトを利用することをおすすめします.

C言語 プログラミング サイト
【無料】C言語のプログラムを実行できるおすすめWebサイト3選

こういった悩みにお答えします. こういった私が解説していきます. C言語を学ぶために開発環境を構築するのは面倒ですよね. そんなあなたにC言語のプログラムを実行できるおすすめWebサイト3選を紹介しま ...

続きを見る

文法が古くてわかりにくい

C言語は1972年にOSを記述するために開発されたプログラミング言語です.

2021年現在,C言語は文法的に後方互換性を保ちつつ現在でも利用されています.

C言語の文法の設計はとても古く,最近のプログラミング言語の理解しやすい(記述しやすい)文法と比較すると非常にクセがあったりイマイチな所があります.

例えば,C言語では文字列型がなく,文字列同士の比較ではa == bという書き方で比較できない(ポインタのアドレス同士の比較になってしまう)ので,他のプログラミング言語を学んだ後だとハマる可能性があります.

なので,コードが非常に複雑になったり,ポインタを理解する必要もあったりするので,初心者はたいてい挫折します.

※C言語の文法はC99やC11,C17規格で少し増えましたが,ほとんどは古いままです.

なので,C言語は,古いコードが動作するメリットはありますが,新しいプログラミング言語の文法の良いところがあまり反映されていなく,理解が難しいことがデメリットとして挙げられます.

標準ライブラリの機能が少ない

C言語では標準ライブラリの機能が少ないです.

例えば,C++言語ではリストやベクタ等のテンプレートは標準ライブラリでサポートしていますが,C言語にはないので自作する必要があります.

これらの機能を実装するためにはポインタや標準ライブラリをきちんと理解する必要があります.

なので,C言語は結構な頻度で車輪の再発明をしなくてはなりません.

自分が書きたいコードを書くまでの前準備として,まずは多くのコードを書く必要があることが挫折する原因になります.

私のブログでは,標準ライブラリの使い方や自作コードを公開しているので,是非利用しましょう!

C言語
ChishiroのC言語

こういった私から学べます. Windows,MacOS,Linux/UNIX,FreeBSD等のOS開発に利用されるプログラミング言語「C言語」に関する記事を紹介します. C言語を習得してコンピュータ ...

続きを見る

ハードウェアやOSの理解が必要

C言語でコードを自分で正しく書いてデバッグする場合は,ハードウェアやOSの理解が重要になります.

もちろんハードウェアやOSを深く学ぶこと自体が挫折する原因にもなりますので,あなたが必要な内容を少しずつ学びましょう!

しっかりハードウェアやOSを学びたいあなたは以下の本がおすすめです!

おすすめのハードウェアの本は以下です.




おすすめのOSの本は以下です.



コンパイラやOS,ライブラリ,アセンブリ言語に依存してビルドエラーが発生

C言語には規格として必須の機能とオプションの機能,コンパイラ(GCC/Clang,Visual Studio)の独自拡張の機能があります.

コンパイラがサポートしてない標準ライブラリ関数や独自拡張の機能が原因で,他のコンパイラで利用しようとしたらビルドエラーになってしまう問題があります.

この問題を解決するためにプリプロセッサ(#ifdef,#define,#endif等)を利用してコンパイラ毎に切り分けるコードを書く必要がありますが,結構大変です.

ブログや本に書いてあるコードがビルドエラーになり,その原因を解決することは難しいです.

また,OS(Windows,Linux等)に依存する標準ライブラリや外部ライブラリ等が原因でビルドエラーが発生し,その解決も大変です.

正直,私も何度ハマったか数え切れないくらいですね...

C言語のコードではアセンブリ言語(x64やAARCH64)を利用できます.

あるハードウェアの固有のアセンブリ言語が入ったコードを他の種類のハードウェア(例:x64(Intel)からAARCH64(ARM)のCPU)のコンパイラでビルドするとビルドエラーが発生してしまいます.

正しく修正するためにはハードウェアやアセンブリ言語の知識が必要です.

コンパイラやOS,ライブラリよりはアセンブリ言語でハマる頻度は低いですが,たまにハマりますね...

上記の理由により,初心者だとコードが動かなくてほぼ挫折します.

また,中級者~上級者でも場合によっては解決できないくらい難しいこともあります.

C言語ができるようになる3つの方法

C言語ができるようになる3つの方法を紹介します.

C言語ができるようになる未来をイメージする

C言語ができるようになる未来をイメージして学びましょう!

スラムダンクの桜木花道がバスケのドリブルやパスの練習に飽きてバスケ部をやめたくなるシーンをイメージして下さい.(あきらめたらそこで試合終了ですよ.)

C言語ができるようになることは,桜木花道がバスケットマンになって試合でスラムダンクを決める未来をイメージするようなものです.

以下の記事でC言語を学ぶ3つのメリットを紹介していますので,読むとあなたがC言語ができるようになった未来がイメージできます.

C言語 学ぶメリット
元東大教員が語るC言語を学ぶ3つのメリット

こういった悩みにお答えします. 本記事の内容:C言語を学ぶ3つのメリット 代表的なOSがわかる OS系のインターンや就職がアプリケーション系より簡単に内定ゲットできる コンピュータの本質がわかる こう ...

続きを見る

自分にあう勉強法を見つける

自分にあう勉強法を見つけることが大事です!

以下の記事では,C言語の初心者と中級者~上級者のおすすめの勉強法を紹介しています.

是非,自分にあう勉強法を見つけてC言語を効率的に習得しましょう!

C言語 勉強法
元東大教員が語るC言語の初心者と中級者~上級者のおすすめの勉強法

こういった悩みにお答えします. こういった私から学べます. 目次1 元東大教員が語るC言語の初心者と中級者~上級者のおすすめの勉強法2 C言語の初心者2.1 【無料と有料】ブログや本で独学2.2 【無 ...

続きを見る

グーグルで検索して自己解決する

C言語の初心者の頃は誰かに相談するのも良いと思いますが,グーグルで検索して自己解決できるようになりましょう.

例えば,コンパイルエラーが発生した場合はエラー内容で検索したり,良質なコードや記事を読んだりすることは大事ですね.

C言語の悩みを自己解決できるようになると一気にできるようになり,とても楽しくなります!

私のブログで解決方法を見つけたいあなたは,「site:hiroyukichishiro.com ChishiroのC言語 XX」とグーグルで検索してみましょう!(XXはあなたのお悩みキーワードです.)

まとめ

元東大教員が語るC言語が挫折するほど難しい5つの理由とできるようになる3つの方法を紹介しました.

C言語は歴史が古く習得が難しいですが,自分のペースで少しずつ学びましょう!

C言語を独学で習得することは難しいです.

私にC言語の無料相談をしたいあなたは,公式LINE「ChishiroのC言語」の友だち追加をお願い致します.

友だち追加

独学が難しいあなたは,C言語を学べるおすすめのオンラインプログラミングスクール5社で自分に合うスクールを見つけましょう.後悔はさせません!

-C LANGUAGE, TECHNOLOGY
-, , , , , ,