読者です 読者をやめる 読者になる 読者になる

タオルケット体操

サツバツいんたーねっと

プログラミングの初心者がまず最初にするべきなのは書籍の購入ではないとおもうよ

ここしばらく悪趣味な人たちのおもちゃ話題になってた彼のブログに触発されて、ずっと考えてたことを書きます。
出版社とか著者の人たちごめんなさい(最初に謝っておく)。

プログラミングがわからない...誰か参考書をプレゼントしてくれませんか?【Amazonほしい物リスト】 - いしだの話

はじめての◯◯みたいな本は無意味

お前の個人的な話だろと思われるかもしれませんが、ここはブログなので僕の個人的な経験からくるあれこれを書きます。 はじめての、だとか7日でわかるとかタイトルについてる本はまず買う必要はありません。つーか7日でわかるってお前、ただ7章構成になってるだけじゃねえかよ!

はいじゃあ何故無意味なのか。
まず、オープンソースのプログラミング言語にはまず間違いなく公式のドキュメントが存在します。そして、「はじめてのルビー」みたいな書籍に書いてある内容はまず間違いなく公式のドキュメントとだだかぶりです。
僕が読んだのは主にPython関係の書籍ですが、ドラクエにハマっていた時にVジャンプの攻略本を買ったときと同じ感想を抱きました。曰く「説明書に書いてあることしか書いてねぇ!」。
プロプライエタリの言語はMS製のものしか知りませんが、C#の公式ドキュメントは大変丁寧でしたね*1

ふたつめ、書籍は内容が古くなります。そしてその上で誤りが放置されていることが多いです。
インターネット上の、特に公式のドキュメントは常に最新の状態に更新され、また多くの人が目にするために内容の間違いが放置されていることはほぼありえません。世間の一般的な法則として、インターネットの文章は概ね無価値なゴミで書籍のほうが信頼できるものなのですが、ことプログラミング関係の文章に関して言えばそれは逆転しています。
……すいません言い過ぎました、インターネットのプログラミング関係の記事も間違ったものが沢山あります。初心者の人たちは常に複数のソースにあたって比較検討した上で自分でも試すように気をつけましょう。

みっつめ、習うより慣れよ。
例えば件のいしだくんが挙げているオライリーの「プログラミング言語 Ruby」とか、あれは初心者向けの本じゃないです。あと古いです。
オライリーに限らず、何もわからない初心者が黙々と言語仕様の解説を読んでも特に得るものはない。最初は、本当に必要な構文だけ覚えて、後はとにかく沢山コードを書く以外にプログラミングを覚える方法はない。天才の事情は知らないけど、普通の初心者は書いたコードの数だけ成長するのでわかりやすくていいですね。

とかまぁそんなことを書いたけど、プログラミングの書籍っておおむね3000円くらいだし、いくらハズレを引こうが良質な書籍に巡り合って技能を金で買えるなら安いもんなんで気になった本はとりあえず買っちゃえばいいとおもいます。
あと、この業界の人たちはどういう本を読んだかでマウンティングをかけていくのが一種のアイサツとして浸透してるフシがあるので、そこでヤンナルネとならないように背伸びした本を読むことも、あるとかないとか……

本を買う前に読むもの

まずはチュートリアルやろう

PythonでもRubyでもなんでもいいんですけども、大抵のプログラミング言語の公式サイトにはチュートリアルがついてます。

Python チュートリアル — Python 3.5.2 ドキュメント
20分ではじめるRuby

万人向けかどうかは知りませんけども、試してみる価値はあるんじゃあないでしょうか。
DjangoとかRailsとか、大抵の大手フレームワークは公式ドキュメントに簡単なチュートリアルが存在しています。逆にはじめてのレールズみたいな本を買うと、半分くらいがRubyの基本構文の解説で終わった挙句、サンプルコードのバージョンが古かったりします。つうかフレームワークの解説本に言語仕様の解説乗せてページ稼ぐのやめろ。

チュートリアルを何周かしつつ、色々と書いてるうちに段々とプログラミングの雰囲気が掴めてくるはずです。そしたら次のステップです。

エラーメッセージを読もう

半分冗談、半分本気です。
とりあえず、初心者のうちは本棚に動物の本を置いていることよりもエラーメッセージを読む習慣があるかどうかの方が大事です(動物も大事です)。

標準ライブラリのリファレンスを(少しづつでいいから)読み始めよう

地味なようでいて、新人プログラマーが他と簡単に差をつけられる部分です。
いかんせん量が膨大なので全てを読む必要はありません。まずは自分がよく使うような処理に関わるものから読みましょう。というか偉そうにこんな記事を書きつつ、僕だって全てを覚えているわけではないんですが、ここをちょっと真面目にやるだけでかなり効率が上がるんで、ほんと騙されたとおもって読んで。

初心者*2が陥りがちな落とし穴として、標準ライブラリで提供されている処理を自前で頑張って実装した挙句にバグを作り込むということなんですが、コツコツと読み進めることで効率良くプログラムを組み立てていけるようになります。
また、初心者が手を出すようなプログラミング言語の標準ライブラリにはそれぞれ共通しているものが多いです。つまり潰しがききます。

正直、チュートリアルをやって標準ライブラリのリファレンスを読んだ時点で、世の中の入門書籍のほとんどは役立たずになっているはずです。

初心者は脱したかな? と感じたらEffectiveとかプロフェッショナルとかついてる本を買おう

かなりマジです。

プログラミングにおいて、考えた通りに動くものを作れるようになる壁と、言語仕様そのものへのわかりを深めていくという壁(とその他もろもろの壁)が存在するわけなんですが、プログラミング言語の書籍は概ね後者を伸ばすためのものです。技能を伸ばすためには背伸びして深みに足を踏み込む必要があります。

Ruby関係の書籍で僕が読んだのはパーフェクトRubyとか、メタプログラミングRubyで、中でもメタプログラミングRubyはPythonistaでも読んで損はない良書ですので読みましょう。
Pythonの場合ですと、数年前ならば「エキスパートPythonプログラミング」をおすすめしたかったんですが流石にもう古いので「Pythonプロフェッショナルプログラミング」を読みましょう。プログラミングだけではなく、プロジェクトの進め方なんかについても書いてありますので、そういう意味でも初心者におすすめの本です。

とにかく、なんか強そうな名前がついてる書籍がおすすめです。
というか、このレベルの書籍とか動物本くらいじゃない限り言語について説明した書籍は無意味ですので、ソフトウェア工学とか開発の方法論とか、そういう特定の言語に依存しないレイヤーの書籍を買って読み始める頃合いだとおもいます。

まとめ

ものが出来てないというか、プログラミングがわからない状態で起業して、登記費用がかさんで本も買えないってなんかこう、順番間違えてません?
というのはともかく、お金がないなら公式ドキュメントを読めば良いじゃないというのを伝えたかった。

そして自分の読んだ技術書履歴を洗ってみて、全然本を読んでいないどころか話題の書籍もスルーしまくっているのでもうちょっと見栄を張れるようになりたいなとおもいました。

こちらからは以上です。

名前がでた書籍とか

エキスパートPythonプログラミング

エキスパートPythonプログラミング

  • 作者: Tarek Ziade,稲田直哉,渋川よしき,清水川貴之,森本哲也
  • 出版社/メーカー: KADOKAWA/アスキー・メディアワークス
  • 発売日: 2010/05/28
  • メディア: 大型本
  • 購入: 33人 クリック: 791回
  • この商品を含むブログ (92件) を見る

Pythonプロフェッショナルプログラミング 第2版

Pythonプロフェッショナルプログラミング 第2版

パーフェクトRuby (PERFECT SERIES 6)

パーフェクトRuby (PERFECT SERIES 6)

  • 作者: Rubyサポーターズ,すがわらまさのり,寺田玄太郎,三村益隆,近藤宇智朗,橋立友宏,関口亮一
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/08/10
  • メディア: 大型本
  • この商品を含むブログ (22件) を見る

メタプログラミングRuby 第2版

メタプログラミングRuby 第2版

*1:今はC#もオープンソースですが

*2:あるいはこの章を永遠に通過しない人