長い書き損じ

「あーっ。」と、ね。

みんなのPython(第3版)を読んで

こんにちは。

前にブログに書いたように
jumffff.hatenablog.com
Pythonのお勉強をしています。(治験中に。)

色々何をやるか悩んだりグダグダしたりもしたのですが、みんなのPython(第3版)をとりあえず一周読み切ったので、
その所感とPythonについて軽くまとめたいと思います。

ただ、この記事はあくまでpdfにまとめてサークルで後輩に布教する目的と、今後ポートフォリオサイトを作った際のアフィリエイト記事目的の叩き台としての意味合いが強いので結構ザックリしてるかもしれませんが、ご了承ください。
省略できる箇所についてはガンガン省略していきます。箇条書き大好き

何故Python

何故僕がPythonを勉強しようと思ったのか。について。

  • R以外の言語を扱いたくなった(扱えないといけないと思った)

  • 機械学習人工知能についての豊富なライブラリがある
  • 最近アツいらしい(実用・実務的にもやる意義がありそう)

Rは言語と言っていいのか怪しいという意見もありますが、そのような理由で他の言語を使いたくなりました。
勿論Rだってそんなに慣れていませんし、機械学習人工知能をやるためにRもPythonも必要だと思うのでやろうと思いました。
詳しくは上にある記事でも書いてあると思うので省略します。

何故「みんなのPython(第3版)」?

何故この本を選んだのか。について。

いくつか理由はあるのですが、Pythonを学ぶにあたって僕が本選びで重視した点、注目した点、この本でいいと思った点、などを挙げます。

  • Pythonの内容が基礎的なところから網羅されている

これは全くの素人だったので必要でした。やりたいことが具体的なので網羅的な学習をしたら実際にガリガリコーディングして勉強すればいいと思っていたのでとりあえず基礎を身につけたかったです。

  • 演習問題がある

これは少し前の記事で書いたかもしれませんが、プログラミングを勉強する上で演習問題の存在は重要だと思います。
それは基礎的なことをいちいち理解して暗記するのは向いていないし、プログラミングを行う上で不必要だと思うからです。
勿論基本の構文や関数は理解しておかなければなりませんが、やりたいことが明確なので、それをプログラミングするためにリファレンスでも読み漁りながらやればいいと思いました。
なので、「章末の演習問題を解くことを想定して、章の内容を流し読みしてあとから見返す」という勉強法ができる本を求めていました。
これについては後述するのですが、演習問題自体はそんなに充実していなかったですが勉強は充実しました。

  • Python2とPython3についてよくわからなかった(ので調べられる本が必要だった)

Pythonには2系と3系があります。
そして後方互換性がないことが知られています。
「3系に対応していないライブラリがたくさんあるから使うなら2系!」
「そのうちみんな対応するから使うなら3系!」
など根拠のよくわからない(知識のない僕には理解できない)主張が飛び交っている状態でした。
なので具体的に2系と3系ではどこが異なるのか勉強することができる本が必要でした。
もう一つ、個人的に新しいものを学ぶべきだと考えていたので3系を学びつつ、「3系は良いのか」「2系と違うところは何か」「注意点」などを書いてくれている本が必要でした。みんなのPython(3版、4班)は3系に対応しており注意点も書かれています。

読み終えた僕の意見としては(何か特別な理由がない限り)絶対3系をやるべきです

  • 大学の図書館にあった

いわずもがな(ちなみに4版はなかった)

  • 検索したら結構オススメされてた
  • なんかWebアプリケーションもつくれるらしい

基礎を勉強しただけじゃなんだかよくわからないけど、実際に何かを設計したりすること(簡単だけど)の章があった

pythonを学ぶ以上、「Pythonは何を目的としているどのような言語なのか」とか、またそれを知るために手っ取り早い「Pythonはこういう思想があって設計された」みたいなことがわかりたいと思っていました。
また、聞いたことはあるけど(数理科学科の自分には全くの勉強不足理解不足であった)オブジェクト指向についてしっかり説明してありそうだったのでみんなのPythonは良かったです。

  • パッと見で読みやすそうだった

基礎なんてサッサと終わらせたいという気持ちがあったので、どこかのレビューで「優秀な人は3日で読み終える」と言われていたこの本はベストでした。
実際には僕はめちゃくちゃ時間に余裕がある環境で、あまり集中力は保てなくても、1週間程度で終わりました。
ページ数は多いのでむしろ達成感があっていいです。(何もしてない気がしてたけどいつの間にか今日は50p読んでやったぜへへへ、みたいな)


こんなところでしょうか。

ついでにデメリットを挙げておくと、Amazonのレビューにもあるように誤植がめちゃくちゃ多いです。
ですが、ぶっちゃけそんなの気にならないので良いです。証明が間違ってるとか数式が間違ってるとかに比べたら些細なもんです。

もう一つ、プログラムのソースコードが少なく、ほとんどがシェル上での実行でした。
ですが、読み終えての感想ですが、思想が十分すぎる程伝わる本でした。
エンジニアとして他の言語にすでに親しんでいる人がPythonやりたいなー、どんな言語なのかなー、と思って読むには十分だと思います
(プログラミング経験なんて十分にあるからわざわざPythonのコーディングや出力なんて見なくてもいいでしょう、見たいなら自分で書けよ)。
数学系など理論系の学生など、分け合ってPythonに触れる必要があり、プログラミングの知識がほぼほぼ皆無である人にも十分だと思います。
むしろコードの結果なんかよりも"Pythonの気持ち"やオブジェクト指向を理解できることのほうがよっぽど意味があって効果的だと(結果論ですが)思いました。
これが先ほど言った演習問題の意味そんなになかったけど別に良かった、の真意です。

なので、みんなのPythonPythonの入門書だけでなくプログラム(オブジェクト指向)の入門書にばっちりだと思います。
更にいうと関数型プログラミングの性質も持ってはいる(し、みんPyで少し解説してくれている)ので、他の関数型言語などにも移行しやすく思います。
上手く説明できないですが、「オブジェクト指向」という一つの考え方を理解しておけば他の考え方にも馴染みやすいみたいなことです。
なんて言ったってどうせ数日で終わるので。

教育用言語と言われてるだけあります。何ならCより先にやるべきでは?

何故3版?

ずばり、これしか図書館になかったからです。

でも、色々なレビューを読むと3版で良かったかな(4版も復習がてら読めば良いかな)、と思えます。

2版以前は2系なので割愛。

3版は作りが上手くて、初めから理解を深めつつ読み進めていくことで12章でやっと「おい!そういうことだったんかいPython!」となることができます。
たぶんですけど、目次を見る限り4版にこの感動はありません。
(2017/02/27追記)そんなことはないようです。


著者様からお返事いただきました。

一方で4版自体もとても良くて、
著者様のサイトで加筆された項目が明らかになっているし、
最近流行りのデータ解析などに対応しているし、
誤字誤植めっちゃ少ないらしいし、
めっちゃ最近に書かれているし、
更に読みやすいらしいし、というわけでサークルの経費で落としたいぐらいです。

3版で勉強して、4版で復習、が個人的にベストかなーって思ってます。
4版だけでもいいと思いますけどね。まだ4は読んでないのでわかりませんよ。


Pythonについて

ここからPythonについて説明していきたいと思います。



と言いたいところなのですが、僕としては「おい!そういうことだったんかいPython!」となって欲しいんですよね。笑

あと、23時に消灯ということもあり、詳しく書くのは後日自分用にまとめてからにしたいと思います。

ヒント(?)をいくつか挙げておくと、

  • Pythonではすべてがオブジェクト」

です。

よく聞くけど実際よくわかんなかったしネタだろって思ってたんですけど、この文章の意味が理解できるようになればPythonオブジェクト指向もわかってきたのかなって気がします。
僕自身プログラミングは雑魚だしPython歴1週間ぐらいなんで何も言えないんですけど、
Pythonはすべてがオブジェクトってもしかしてそういうこと~~~~~?????????!!!!!!!!!!☆☆☆☆☆☆☆☆
ってなってから劇的に視界が開けた気がします。
オブジェクト指向を理解してる人からしたら当たり前なのかもしれないですけど。

というわけで近いうちにPythonについてまたまとめたいと思います。
基本的なオブジェクトの解説(リファレンスづくり)と、みんPy4版の感想と、基本的な用語の説明と、僕の独自解釈、あたりでしょうか。

僕がアフィリエイトを買ったら是非そこから買ってください。よろしくお願いします。