C LANGUAGE TECHNOLOGY

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

2021年11月16日

悩んでいる人

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

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

本記事の信頼性

  • リアルタイムシステムの研究歴12年.
  • 東大教員の時に,英語でOS(Linuxカーネル)の授業.
  • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校(UNC)コンピュータサイエンス学部で客員研究員として勤務.C言語でリアルタイムLinuxの研究開発.
  • プログラミング歴15年以上,習得している言語: C/C++PythonSolidity/Vyper,Java,Ruby,Go,Rust,D,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
  • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開
  • 2020年1月~現在はアメリカのノースカロライナ州チャペルヒルにあるGuarantee Happiness LLCのCTOとしてECサイト開発やWeb/SNSマーケティングの業務.2022年6月~現在はアメリカのノースカロライナ州チャペルヒルにあるJapanese Tar Heel, Inc.のCEO兼CTO.
  • 最近は自然言語処理AIイーサリアムに関する有益な情報発信に従事.
    • (AI全般を含む)自然言語処理AIの論文の日本語訳や,AIチャットボット(ChatGPT,Auto-GPT,Gemini(旧Bard)など)の記事を50本以上執筆.アメリカのサンフランシスコ(広義のシリコンバレー)の会社でプロンプトエンジニア・マネージャー・Quality Assurance(QA)の業務委託の経験あり.
    • (スマートコントラクトのプログラミングを含む)イーサリアムや仮想通貨全般の記事を200本以上執筆.イギリスのロンドンの会社で仮想通貨の英語の記事を日本語に翻訳する業務委託の経験あり.

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

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

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

私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!

友だち追加

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

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

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

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

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

開発環境の構築が大変

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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




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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

私のブログで解決方法を見つけたいあなたは,サイドバーにある検索ボックスで「C言語 XX」と検索してみましょう!(XXはあなたのお悩みキーワードです.)

「site:hiroyukichishiro.com ChishiroのC言語 XX」とグーグルで検索しても構いません.

まとめ

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

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

元東大教員が語るプログラミングが思うように上達しない3つの理由とおすすめの上達方法もあわせて読むことをおすすめします!

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

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

私のキャパシティもあり,一定数に達したら終了しますので,今すぐ追加しましょう!

友だち追加

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

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