2015年03月24日

無料でプログラミングを学べる本の紹介(経験者向け、英語で書かれてます)

英語話者は羨ましい。無料の学習用書籍が溢れてますし、大学の講義もWebで大量に公開されてます。日本語だと公開されているコンテンツの量や範囲はかなりグレードダウンしてしまいます。

ということで、本日紹介する記事はこちら。

Free books! 19 no-cost programming guides
(無料書籍! 19冊のプログラミングガイドブック)

ということで19冊のオススメの無料プログラミング本が紹介されています。

内容的には初学者向けではなく、ある程度経験があって英語が読める人向けになっています。

紹介されていたのは下記。

Dive Into Python 3

インストール、基本的な文法、データ型、文字列、正規表現、クロージャ、クラス、単体テスト、リファクタリング、ファイル操作、XML操作、シリアライズ等、基本的な情報が揃っています。

実践向けというよりは基礎的な知識を抑えるのに良いと思います。ある程度Pythonに慣れた人が読んでも「あ、これ知らなかった」と思うシーンがあるものなので、経験者が流し読みしてみるのも良いかもしれません。

他の言語を学んだことがある人がPythonをかじってみようと思った時に読んでみても良さそうです。

Think ○○

Think ○○シリーズでは下記の書籍など、無料でいくつかの本がPDFで公開されています。

同シリーズのThink StatsThink Bayesを読んだことがありますが、網羅的な本というよりは演習問題などもついた実践的な本で、学生に対して実演しながら教えていくような想定の内容になっています。

リファレンス的な使い方はしづらいですが、難易度は低めに設定されているので読みやすいです。

PDFを読める端末を持ち歩いている人は、馴染みのない言語の本をダウンロードして暇な時に目を通していると、新しい言語を習得するのに役立ちそうです。

Learn Version Control with Git

現在のバージョンコントロールシステムの主流にもなっているGitについて解説する書籍です。動画も用意されています。動画については一部有料ですが大半のチャプターは無料で公開されています。

紙面については書籍版は有料、Web版は無料になっています。Web版はページが細かくわかれているので、Thinkシリーズのようにダウンロードしておいて読むことはできませんが、図解も豊富でコードも色分けされているので見やすいです。

日本語だとPro Gitが翻訳版も含めて公開されているので、日本人ならこちらを見る人が多いかも。

Linux from Scratch

Linuxを学ぶにはどうすれば良いか。

最低限の機能しか入っていないOSに対して、自分で1つ1つソフトをインストールして構成を作っていくプロセスを体験すれば、実感としてLinuxが理解できるようになるのではないか。そんなコンセプトの本です。

Gentoo入れて苦しむことで得られるような知識を、体系に沿ってガイドブック付きで体験できるようなものといえば良いでしょうか。私はマゾではないのでArchでいいです。

ARM対応したCross-Compiled Linux From Scratchも用意されているので、RaspberryPIに入れて1から構築するというのも楽しそうです。

An Introduction to Programming in Go

最近だいぶ存在感が増してきている感もあるGoのビギナー向け本です。(もちろんGoを学ぼうとするような人間の中のビギナーという意味)

型、変数、制御構文、関数、ポインタ、構造体、パッケージ、単体テスト、コアパッケージなど、基礎的なところがひと通り抑えてあります。ポインタとか構造体が出てくるあたりにGoらしさがにじみ出てますね。

PDF版とWeb版があるので、出先で読みたい人にもPCの前で腰を据えて勉強したい人にも、どちらにも優しい構成になってます。

その他

他にもHadoopの本とか、Clojureの本とか、ECMAScript6の本とかが紹介されていました。

これだけの質の本が無料で読めるとは、良い世の中になったものです。しかもいくつかの本はGithubに登録されていて、誤りに対してpull requestが送れるというケースもあります。

RMSが以前、世の中にはせっかく良いドキュメントを書いくれる人がいるのに、彼らは出版社と契約して出版物として出してしまう為に、古くなってもメンテできないと苦情を言っていたことがありますが、少しはより良いドキュメントが作られる世の中に近づいたと言えるでしょうか。

posted by newsit at 07:00| programming