C LANGUAGE TECHNOLOGY

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

2020年10月18日

悩んでいる人

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言語はつまらないので,挫折します【本音を話します】」を観て,C言語がつまらないと思うこともあるかもしれません.

そこで,元東大教員でC言語でOSをフルスクラッチで開発した経験がある私がC言語の面白さを解説します.

マナブさんと同様に,私も学生の頃に初めて学んだプログラミング言語がC言語でした.

その時は,あまりにもわからなさすぎて何度も挫折しそうになりました.

一緒に頑張る同期の学生やTA,先生方のご指導のおかげでなんとか乗り越えられました.

今では,C言語でプログラミングをすることがとても簡単になりました.

この経験を踏まえて,C言語を学ぶ3つのメリットを紹介します.

C言語を学ぶ3つのメリット

C言語を学ぶ3つのメリットは以下の3つですので,それぞれ解説していきます.

  • 代表的なOSがわかる
  • OS系のインターンや就職がアプリケーション系より簡単に内定ゲットできる
  • コンピュータの本質がわかる

代表的なOSがわかる

C言語を学ぶと代表的なOSがわかります.

具体的には,みなさんがよく使っているWindowsやMacOS,世界中で広く使われているオープンソースの汎用OS「Linux」がわかります.

LinuxはAndroidのスマホで使われているOSです.

また,GoogleやFacebookが次世代の製品に使う予定のリアルタイムOS「Zephyr」がわかります.

特に,私の専門のリアルタイムOSがわかると,ロボットや自動車等に使われている技術「リアルタイムシステム」を理解できます.

リアルタイムシステムとは,決められた時間(デッドライン)までに処理を完了しなければならない性質をもつシステムのことです.

自分でロボットやミニ自動車(例:ラジコン)を作って遊びたいあなたにおすすめの技術です.

OS系のインターンや就職がアプリケーション系より簡単に内定ゲットできる

C言語を学ぶとOS系のインターンや就職がアプリケーション系より簡単に内定ゲットできます.

例えば,任天堂のゲームアプリケーション開発職は倍率100倍以上という話で,私の知り合いで内定をもらった学生は聞いたことがない狭き門です.

しかし,任天堂のOS系は結構簡単で,OSに興味がある学生は重宝されるので内定をもらいやすいです.

また,日本の著名なスタートアップのプリファードネットワークス(PFN)のインターンでは,OS系はそもそも応募が少ないので内定をもらいやすいという情報を,私が指導した東大の学生が言っていました.

したがって,競争が激しいWebやAI等のアプリケーションよりもOSを学んだ方が内定をとりやすいという戦略も考えられますね.

コンピュータの本質がわかる

C言語を学ぶとコンピュータの本質がわかります.

コンピュータの本質がわかると,現在のコンピュータの何が課題なのか,将来はその課題を解決してどういうコンピュータを作ればよいのかが見えるようになります.

特に,C言語はコンピュータ(特にOS)の研究開発に非常に役に立ちます.

ビジネスの場合だと,現在の世の中で何が課題なのか,将来のビジネスチャンスは何なのかを考えて,ビジネスを進めることと同様です.

マナブさんが動画で語る内容へのコメント

マナブさんは動画で以下の事を体験から語っていますので,それぞれ回答します.

C言語マジでつまんないと思ってます.僕もC言語からプログラミングに入ってソッコーでザセツしたから.

そもそもC言語を勉強しても将来的に何できるか全然わかんない.

プログラミングの入り口としてはC言語じゃなくてPHPとかRuby辺りから入った方がマジで確実にオススメ.シンプルに未来が想像できるから.PHPは,掲示板サービス,RubyはTwitterみたいなアプリを作れます.

結構プログラマーの意見とかを聞くと,C言語はプログラムの基礎と言うか,本質部分を勉強できるから最初の入り口としては大切だ.

1回プログラミングで挫折したとしても,またいろんな言語ありますので,挑戦してみるのもありですよ.

https://www.youtube.com/watch?v=QNg0hQzGu-E

C言語マジでつまんないと思ってます.僕もC言語からプログラミングに入ってソッコーでザセツしたから.

プログラミング言語で最も難易度の高い言語の一つはC言語です.

C言語は,プログラミング初心者にはとてもハードルが高いです.

その理由としては,コンピュータやプログラミングは学問として体系化されていないからです.

コンピュータやプログラミングは相互に依存関係があり,数学,物理,化学のように体系化されて順番に学べません.

例えば,C言語を学ぶためには,ハードウェア,コンパイラ,OSの知識が必要で,これらを学ぶためには逆にC言語の知識が必要という相互に依存関係になっています.

なので,挫折しやすい理由がわかると納得ですよね!

昔の私はコンピュータやプログラミングを使いなす方に憧れを頂いていた時期がありました.

現在は,コンピュータの本質をある程度は理解しているので,新しいコンピュータやプログラミング言語を扱う場合でも苦労せずにできます.

これまでに大学でコンピュータを学問として学んで基礎ができているからだと自負しています.

私もC言語を初めて学んで全然できなかった頃は同じ気持ちだったので,とても共感できます.

そもそもC言語を勉強しても将来的に何できるか全然わかんない.

そもそもC言語はアプリケーションを作るためにはあまり適切な言語ではありません.

C言語は,OSを作るためのプログラミング言語です.

なので,C言語を勉強するとオープンソースの汎用OS「Linux」やリアルタイムOS「Zephyr」の開発に貢献できます.

有益なパッチ(プログラムの一部分)を作成すれば,マージして(取り入れて)もらえるかもしれません.

自分が作ったソフトウェアが世界中に使われる体験をしてみませんか?

プログラミングの入り口としてはC言語じゃなくてPHPとかRuby辺りから入った方がマジで確実にオススメ.シンプルに未来が想像できるから.PHPは掲示板サービス,RubyはTwitterみたいなアプリを作れます.

私も同意見で,アプリケーションを作りたいなら,PHPやRuby辺りから入ることをオススメします.

C言語でコマンドラインで入出力を行う関数(scanf関数やprintf関数)を処理することがつまらない方は,ゲームのアプリケーションを簡単に作成できるRuby,Python,HTML/CSS/JS/PHP等の方が面白いと感じると思います.

ゲームというとアプリケーションというイメージがありますが,アプリケーションを効率的に動かすためには,C言語やOSの知識が重要になります.

※専門用語で説明すると,ゲームのアプリケーションのリアルタイム性を保証しつつ動かすためには,リアルタイムOSの知識が必要になります.

OSは縁の下の力持ちのような役割ですので,未来が想像しにくいかもしれませんね.

結構プログラマーの意見とかを聞くと,C言語はプログラムの基礎と言うか,本質部分を勉強できるから最初の入り口としては大切だ.

はい,C言語はもともとOSを作るための言語ですので,C言語を習得するとOSの仕組みが理解できます.

私が考えるC言語をプログラミングの入り口として学ぶ最大の理由はコンピュータの本質を理解し,次世代のコンピュータに何が必要なのかを見極めることです.

例えば,博士号を取得して大学や研究所でコンピュータの研究者として働きたい場合や,GAFA(Google,Amazon,Facebook,Apple)(現在FacebookはMeta Platformsなので正確にはGAMA)で研究者として働きたい場合はC言語を習得した方が良いと思います.

コンピュータを学問として基礎からボトムアップで学ぶにはC言語は必須ですが,ビジネスに必要なツールとしてトップダウンでプログラミングを使うなら不要かもしれませんね.

1回プログラミングで挫折したとしても,またいろんな言語ありますので,挑戦してみるのもありですよ.

私も同意します.

どの程度のプログラミングを習得したいのかは人それぞれですので,C言語にこだわる必要はないと思います.

Webサービスやアプリケーションを作りたいなら,HTML/CSS/JavaScript,PHP,Ruby,Python辺りがおすすめです.

C言語を理解するためにはハードウェア,コンパイラ,OSも勉強する必要があるので,情報系の学部で学んでいない方にはC言語の独学のハードルは高いですね.

まとめ

元東大教員が語るC言語を学ぶ3つのメリットを紹介しました.

  • 代表的なOSがわかる
  • OS系のインターンや就職がアプリケーション系より簡単に内定ゲットできる
  • コンピュータの本質がわかる

C言語は難しくて挫折しそうになりますが,ハードウェア,コンパイラ,OSの勉強をした後に何度か挑戦すれば急にわかりはじめて面白くなります.

私が大好きなバスケに例えると,最初は基礎練習が多くてつまらないですが,つらい時期を乗り越えると急にうまくなる楽しさを得られる感じですね.

C言語を学んでコンピュータの本質がわかることは,スラムダンクの桜木花道がバスケットマンになるようなものです.

C言語エンジニアにおすすめのフリーランスエージェントの記事を読むと実際のC言語の仕事がわかりますので,あわせて読むことをおすすめします.

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

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

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

友だち追加

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

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