hello mag

おすすめ本2冊でC言語を独学で身につける

  • 2020-03-21
  • 2020-07-25
  • 全体
  • 23view

仕事や学校の授業など、なんらかの理由によりC言語でプログラムを作る、または過去のプログラムを読み解く必要がある初学者を対象としています。なるべく早くスキルとして身につけたいと思われる方が対象です。この記事では、おすすめ本2冊でC言語を独学で勉強し、最短で身につける方法を説明します。

結論

結論としては次の2冊となります。

  • 1日で解るC言語 (最初)
  • UNIX Cプログラミング(通称ライオン本、表紙にライオンが載っているため。現在は古書でしか入手できない模様)

最短でC言語のプログラムを扱えるようになるためには、C言語の知識を身につけるための座学(書籍などから学ぶ)とプログラムの実践(実際にプログラムを行う)の2つをうまく融合させる必要があると考えられます。

1日で解るC言語について

この本は、全くC言語の仕組みを知らない初心者にも、コードを作成して、コンパイルして、プログラムを実行させるという段階を丁寧に説明しています。少ない記述量のわかりやすいサンプルコードを使って、手順を丁寧に解説しているため、開発に必要な内容が何なのか、C言語の開発とはどのようなものなのかが、とてもイメージしやすいように構成されています。

初めて方には、1日での読破は大変かもしれませんが、少しづつでも読み進めると1週間程度で、C言語の雰囲気や大枠をつかむことができると思います。この本によって、仕組みや何を目的としてこれらの手順を踏む必要があるのかがわかれば、別の本にもすぐにチャレンジできるようになります。

UNIX Cプログラミング

この本は、1日で解るC言語について、ある程度理解できた方におすすめです。かなり難易度は上がりますので、できればコンパイラのgcc環境などをインストールして開発が構築でき、 1日で解るC言語で解説されたサンプルコードを実際にコンパイルし実行し確認できてから、読み進めることをおすすめします。

この本は、C言語の生い立ちであるUnixというOSが実際にC言語でどのように実現されているのかを、システムコールやライブラリ関数の内部や使われ方、実装方法などから、C言語の理念や思想を知ることができる貴重な本です。

現在のLinuxは、商用であるUnixをオープンソースの形で置き換え、広く使用できるOSとして開発されたものですので、最新の技術とも密接に関係し、重要な概念を含んでいます。

C言語は他のプログラム言語の原型でもあり、設計理念や概念がわかりにくい部分もあるため、習得が簡単ではない側面がありますが、この本の内容の前半部分の思想が少しでも把握できると他のプログラミング言語の習得スピードが明らかに向上するはずです。後半部分は必要性に応じて参照すれば良い感じです。

開発環境の作り方

OS毎に対応したgccが無料で提供されているはずなので、対応するgccを見つけてインストールを行います。おすすめの方法としては、Linux(またはMacOS)にgccをインストールし、コマンドラインで進めて行く方法です。

Windows10ユーザーの場合は、商用目的でなければVMware workstation(商用版もあります)をWindows10にインストールし、その上に LinuxOSであるubuntu(世界でユーザーが多い) またはCentOS(日本でユーザーが多い)をインストールすると開発環境を構築しやすいです。

Linux環境をおすすめする理由は、LinuxはUnixの文化を色濃く引き継いでいますので、よりC言語の文化に触れることができ、UNIX Cプログラミングの内容をより深く理解することが簡単になるためです。

VisualStudioなどgcc以外の特別で有料な開発環境は、必要に応じて後回しで良いと思われます。

理由はWindowsに特化したライブラリ(関数群)の使い方などがメインとなってきますので、純粋な昔ながらのC言語の関数とは異なる文化となっているためです。

別の方法

ドットインストールというサイトで無料でC言語の講座も受講できるようですので、本格的な独学を行う前段階の準備にはおすすめです。

多少費用がかかっても短時間で過不足のないある一定のカリキュラムをプログラミングスクールで習う方法もあります。

MENTAといわれるサイトを利用して、プログラム開発経験者のメンターを選び、もし条件が合えば契約してアドバイスを受けて勉強を進めることなども可能になっていますので、多様な方向から同時にアプローチすることはいかがでしょうか?

まとめ

この記事ではおすすめ書籍による独学をすすめています。参考になる方もいらっしゃるかもしれませんが、 C言語の習得は、UnixのOS開発面でのシステムコールやライブラリ、ハードウェアなどの複合的な要因、また様々な用途への利用などがあり、実際にはこの習得法が目的に合った最適な方法であると断定できない部分があります。

様々な試みを試してご自身に合った方法を模索していただくしかないかもしれません。まとまりのない記事となってしまいましたが、少しでも参考になれば幸いです。