プログラマーになるのであれば参考書選びは大切
プログラミングを独学で勉強する際に参考書選びはとても重要です。
選んだ参考書によっては挫折したまま一生プログラミングに触れなくなるなんてこともあり得ると思います。
どの参考書が使いやすいかは人によって変わると思います。
僕が個人的に分かりやすいとか楽しいと感じた言語、参考書をここにまとめます。
Java
プログラミング言語ランキングでそこそこ上位にいる言語です。
使用用途も広くwebアプリ、androidアプリ、組込みシステムなどに使用されています。
とりたてて簡単ではないですが、初心者でも深い挫折を味わうことなく学べる言語だと思います。
Javaでシステムを開発している企業も多く汎用性も高いです。
ちなみに僕が初めて触ったプログラミング言語はJavaでした。
Javaの参考書にこんなものがあります。
スッキリわかるJava入門
Javaで分かりやすく、かつ有名な参考書といえばこれです。
この参考書はJavaで何かを作ることではなく、Javaの文法やプログラミングの概念を一つずつ学んでいく構成になっています。
これ一冊で割と簡単に文法と概念を身につけることができました。
文法と概念を理解できていればさらに発展した参考書も読むことができるようになります。
基礎からわかるTCP/IP Javaネットワークプログラミング
Javaでネットワークプログラムを作ることを目的としています。
割と古めな参考書なのですが、そもそもネットワークを理解しそのプログラムを作ることはいろいろと役に立つことが多いのでそこまで問題とは思いませんでした。
後半では簡単なクライアントとサーバーを使ったGUIのゲームを作ります。
CUIでカタカタやっていた初心者のころの僕にはうれしいサンプルでした。
上に挙げた2冊をやればある程度のものは作れるようになりますし、さらに発展的な内容でも頭に入りやすくなります。
少なくとも僕はそうでした。
CとC++
Javaと同様に汎用的な言語です。
というかC++はJavaよりも先に生まれた言語で、JavaはC++の影響を受けています。
使用用途は幅広くデスクトップアプリやNDKという形でAndroidアプリにも使われています。
低レイヤ操作もできるためOSの開発やミサイルや戦闘機にも使われているそうです。
C/C++はJavaよりも古いため参考書などの教材資源が数多くあります。
僕がCやC++を学んだのはJavaを学んだあとで、プログラミングの概念はある程度は身についていました。
ですから初心者向けの参考書はあまり使わずネットで情報を集めつつ勉強していました。
といいつつもいくつか参考書は買いました。
やさしいC++ 第5版 (「やさしい」シリーズ)
僕が買ったのは第5版ではないですが、 これは本当に優しかったです。
難しいことが難しく書かれていない感じです。
C++は学習難易度が高いといわれていますので、C++に関して初めて買った参考書がこれでなかったら挫折していたかもしれません。
Linuxネットワークプログラミングバイブル
ネットワークに少し興味があったためこれを買いました。
これ一冊でネットワークプログラミングについて網羅的に学ぶことができたと思います。
ただあくまでネットワークプログラミングを勉強するためのものなので、この参考書で使われているC言語の基礎を解説するような内容は含まれていません。
僕はC++の知識が粗方あったので、そこで躓くことはありませんでした。
知識が全くない場合別途勉強する必要があるということですね。
Python
Python(パイソン)とはニシキヘビを意味しているようです。
初めは「ピソン」と読んでいました。
この言語は高い汎用性をもち、本当に手軽だと思います。
セキュリティーや機械学習の分野で使われていることは有名だと思います。
僕個人のイメージとしてはC/C++を簡単に書けるようにした言語です。
Cの機能を呼べたり、APIの呼び出しなどどこかCと似ているところがあったりします。
サイバーセキュリティプログラミング ―Pythonで学ぶハッカーの思考
Pythonを本格的に触るようになったのはこの参考書を買ってからでした。
タイトルにあるようにセキュリティーをテーマにした参考書で、Pythonをつかってそれらを学んでいこうというものです。
ページ数はあまり多くありませんが、実用的な内容も書かれていてPythonのサンプルコードが記載されています。
書かれているものをすぐに検証できるのは学習するうえで助けになりました。
Pythonとセキュリティーに興味があった僕にはちょうどいい参考書だったと思います。
Ruby
個人的にはPythonのライバル的な立ち位置なのかなと思います。
Pythonと同じく扱いやすい言語です。
Ruby on Railsのおかげでwebの分野で力のある言語だと思いますが、
用途はwebに限らずvagrantやmetasploitなどのツールの開発にも使われています。
ただRubyでプログラミングを勉強する場合webアプリを作るところから始めるのが無難かと思います。
Rubyではじめるシステムトレード (現代の錬金術師シリーズ)
僕がRubyに関して初めて買った参考書です。
なぜか株に興味がわいてきたとき、ふと見つけました。
内容は膨大な株価データからどのような取引をするかを判断するシステムをつくる、というものです。
Rubyが分かりやすい言語なので基本的に1日1章のペースで読み進めることができました。
プログラミングを抜きにしてもデータを集めて解析したりするのが好きな人はのめり込める書籍です。
ちなみに結局株はやってません
どの言語でどういう参考書がいいか
未経験者がゼロからプログラミングを勉強する場合C/C++から入るのはやめたほうがいいと思います。
はじめにPythonやRubyなど軽めな言語(余裕があればJava)で感覚をつかんでから、
C/C++みたいな重ためな言語を勉強するのがいいかなと思います。
参考書については入門者向けの参考書一冊を終わらせてから、
何かを作ることを目的とした参考書を買えばモチベーションを保てます。
上で挙げたJavaの参考書2冊がいい組み合わせだと個人的に思ってたりはします。
いずれにしろ基礎と概念を学んだら、目標を決めて何かを作ることが一番成長しやすい方法です。