C LANGUAGE TECHNOLOGY

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

悩んでいる人

C言語がつまらないんだけど,学ぶ意味あるの?

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

本記事の内容:C言語を学ぶ3つのメリット

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

本記事の信頼性(長いので太字のみでOK)

  • 私の実績
    • 東京大学を含む様々な大学(慶應義塾大学,東京工科大学,産業技術大学院大学)でプログラミングを学生に教育
    • 2012年9月~2013年8月にアメリカのノースカロライナ大学チャペルヒル校コンピュータサイエンス学部2021年の世界大学学術ランキングで20位)で客員研究員として勤務.プログラミングを利用した研究開発.
    • プログラミング歴15年以上,習得している言語: C/C++,Java,Python,Ruby,HTML/CSS/JS/PHP,MATLAB,Assembler (x64,ARM).
    • 東大教員の時に,C++言語で開発した「LLVMコンパイラの拡張」,C言語で開発した独自のリアルタイムOS「Mcube Kernel」GitHubにオープンソースとして公開
    • 2020年1月~現在はアメリカのスタートアップ「Guarantee Happiness LLC」CTOとしてECサイト開発やWeb/SNSマーケティングの業務.(コロナの影響のため,現在は日本からアメリカの仕事をリモートワーク.)
    • 2020年からC言語で業務委託のエンジニアとして3件,技術顧問として1件,講師として1件の案件を請け負った実績.
  • プログラミングを教えた学生の実績
    • 有名な企業やスタートアップに就職(例:グーグル,任天堂,ソニー,メルカリ,プリファードネットワークス).
    • 欧米の大学や企業に進学,交換留学,インターン(例:アメリカのカリフォルニア大学バークレー校,イギリスのエディンバラ大学,エストニアのタリン工科大学,ドイツのNEC欧州研究所).

こういった私が解説していきます.

マナブさんの動画「【実体験】C言語はつまらないので,挫折します【本音を話します】」を観て,C言語がつまらないと思うこともあるかもしれません.

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

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

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

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

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

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

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

代表的なOSがわかる

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

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

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

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

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

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

リアルタイムシステム
元東大教員から学ぶリアルタイムシステム

続きを見る

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

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

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

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

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

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

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

特に,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で研究者として働きたい場合は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言語エンジニアにおすすめのフリーランスエージェント

続きを見る

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

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

友だち追加

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

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