ねずこん読書記録

小さな会社を経営しています。読んだ本について書き残していきますー

記録#36 『独学プログラマー』 やるぞ、Pythonでデータサイエンス

昨年2017年末にG's AcademyのData Science Bootcampに参加して、Pythonを活用した機械学習・データサイエンスにトライしていました。

いまはビジネス・デザイン中心に働いていますが、中期的にデータ周りの力をもっとつけて、データサイエンスの方々と一緒に働けるようになりたいなと思っています。

それに向けて、一人ひっそり学びを続けています。どこかのコミュニティに入ってメンター探して、みたいなのをおすすめされるんですが、人見知りを発動させてなかなか飛び込めずにいます...*1

タイトルそのまま、「独学プログラマー」読んでみました。著者のコーリー・アルソフさんは政治学を学んで大学を終了後、1年間プログラミングを独学しながら、その後eBayのソフトウェアエンジニアとして働き始めた人。相当努力されたんだろうなぁ...

プログラミングの基本

本書で言うところのプログラミングは、Pythonを基としています。これまで全く触ったことのない方でもわかりやすいように算術演算子や関数からはじめ、ループやファイル管理まで扱っています。

適宜「知識を一つにまとめる」というタイトルで演習が入っているのがとても良かったです。私はGoogle Colaboratoryを使ってやりました。便利。

www.codexa.net

オブジェクト指向”といわれるもの

これまで何度か聞いていたと思うんですが、やっとぱっきり理解できた気がします。

「相互に作用するオブジェクトを定義するパラダイム」と言われるとよくわからなかったんですが、手続き型プログラミング・関数型プログラミングと対比してもらって、かつ例もわかりやすくてありがたい...

バッグにオレンジがいくつも入っている状況を例に説明すると、どのオレンジもそれぞれがオブジェクトです。どのオレンジにも、色や重さと行った共通の属性情報があります。どのオブジェクトにも共通した属性情報がありますが、その値はオブジェクトごとに異なります。クラスを使ってオレンジにどんな特徴(属性)があるのかを定義して、クラスから個々のオレンジオブジェクトを異なる属性値で作成します。

(p.149) 

いつか誰かに説明を求められたとしても自分の言葉で伝えられるようになりたいです。

プログラマとしての心得

  • コードを書くのは最後の手段:他の誰かがすでにこの問題を解決していないか?をまず考える
  • DRY(Don't Repeat Yourself):同じ作業を繰り返さない
  • 直交性を保つ:モジュール間での依存性をなくす
  • 慣例に従う:PEP8読み込め
  • テストしろ:「テストされていないコードは、壊れているコードだ」

文中に出てくる"The Zen of Python"は仕事に立ち向かうときの心構えの話だった。

Beautiful is better than ugly.

Explicit is better than implicit.

Simple is better than complex.

Complex is better than complicated.

Flat is better than nested.

Sparse is better than dense.

Readability counts.

Special cases aren't special enough to break the rules.

Although practicality beats purity.

Errors should never pass silently.

Unless explicitly silenced.

In the face of ambiguity, refuse the temptation to guess.

There should be one-- and preferably only one --obvious way to do it.

Although that way may not be obvious at first unless you're Dutch.

Now is better than never.

Although never is often better than *right* now.

If the implementation is hard to explain, it's a bad idea.

If the implementation is easy to explain, it may be a good idea.

Namespaces are one honking great idea -- let's do more of those!

qiita.com

 

 何かデータ系のプロジェクトを始める・参加してみようと思います。 

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

 

 

*1:みんなのペースに合わせるの苦手...結果↑のData Science Bootcampも最後の演習直前にドロップアウトしました