mathjax

2015年4月24日金曜日

アルゴリズムとオブジェクト指向の間

classを中心としたオブジェクト指向な考えはプログラム全体を一つのシステムとして構築する上で有用であり、効率的なプログラミングのために有用だと言えます。

一方、個別具体的で詳細な問題をどう処理するかを考えるアルゴリズムの問題の重要性は言うまでもないでしょう。

前者を全体、後者を部分と呼んでも良いかも知れません。抽象と具体と言った方が適切かも知れません。

私自身、プログラミングを生業としているわけでもありませんが、年数だけは重ねているので、だんだんとシステム構築に重要性を感じるようになってきました。しかし、プログラミングを始めたばかりの人にとっては個別の詳細な問題の方が気になるものだと思います。

プログラミングを始めた若い人にとっては、既存のアルゴリズムであっても自分の手で再構築したり、目でよくソースコードを眺めたりしながら身につけていく過程が必要なはず。そしてある程度見通しができた段階で全体のシステムに目が向いていくのでしょう。年数を重ねていっても、そのアルゴリズムを考える過程が不要になるとは思いませんが、掛けられる時間は減っていってしまいます。その分、全体の構成を抽象的に捉える事にこだわらざるを得ないのかも知れません。

恐らく、これは学問についても言えることで、個別具体的な事象を理解しようとする営みをすっ飛ばして、抽象的な学問体系を身に着けさせようとする試みは失敗するでしょう。

幸い、pythonなら言語学習に要する時間が少なくて済むので、python not heavy 5で示したように、オブジェクト指向の紹介もスタートから短期間で、しかも簡潔に見せる事ができます。若い人は個別具体的なアルゴリズムの問題に取り組みながらも、オブジェクト指向の有用性を少しずつでも感じてもらえればと思います。

などと語ってみながら、私自身、自分のデータをipython notebook上で解析する際に、滅多に`class`なんてタイプしないのです。 pythonはソースが短いから、小規模なデータ解析だと過去の自作関数やセルをコピペしてその場で修正するだけで済んでしまう事が多いのです。classは寧ろ、C#でタイプしてる。

2015年4月22日水曜日

Python Not Heavy 5

class オブジェクト指向プログラミングの中心概念であるclassについて紹介しました。

2015年4月21日火曜日

Pythonを用いたデータ解析に関するリンク集

実験屋の為のIPYTHON NOTEBOOK

IPython Notebook (初心者向け)日本語フォーラム

A gallery of interesting IPython Notebooks(英語)

Python 3.4.2 ドキュメント(日本語訳)

Python Scientific Lecture Notes(日本語訳)

Matplotlib 

各種グラフやマップデータの表示に不可欠。ちょっと癖はあるが、これに代えて勧めるべきものはまだ無いと思う。(分野にもよろうが。)

Numpy 

Scipy 

Numpyだけだと不便を感じる人のためのちょっとした拡張機能。 
NumpyとScipyの二つは配列、行列、最小自乗法、偏微分方程式の解など、データ解析には不可欠。

Sympy 

Mathematicaのような代数計算がフリーな環境でできる。wxmaxima以上に慣れが必要ですが、ipython notebookユーザーとしては有り難い。

Pandas 

データサイエンス向けパッケージ。自然科学でも使えますが、numpyを覚えるのが先でしょう。

Markdown  

ただし、ipython notebookで使えるmarkdownは拡張されています。なので、ここが良いかも知れません。 

もちろん、このブログにも多少の情報があります。
pythonもipython notebookも進歩が早いので、情報はどんどん古くなっています。基本的には便利になってきているのですが、古いままでは動かない事もあります。
最も頻繁に起こりそうなのは、python2で許されていた
print x
がpython3では許されず、
print(x)
とする必要がある、という事に由来するエラーです。
printはただの関数なので、()が必要です。  

PythonNotHeavy-4

Listとndarray 
zip()という関数を用いたリスト内包表現に触れています。
少し分かりにくいと思いますが、見た目がすっきりしていて、かつ計算速度の速いプログラムを書くために重要な関数だと思います。

Python2と3の違いが実は内在していますが、初心者には3を前提に話すべきと考えています。

私自身にとっては、enumerate()の多用から脱却する良い機会にしたいと思っています。

ラムダ式はまだ使う気になれません。

2015年4月20日月曜日

PythonNotHeavy-3

第3回 自作モジュール

追記: 本当はパッケージまで行きたかったのですが、行き着けませんでした。

2015年4月17日金曜日

PythonNotHeavy -2

Python Not Heavy 第2回目 関数

追記: データファイルが上手く保存できないケースがあるようです。今のところ原因は不明ですが、ネット上のファイル(ココ)をブラウザで直接開き、保存してください。保存したファイルはPythonNotHeavy_2.ipynbと同じフォルダに移動してください。

2015年4月16日木曜日

新しいシリーズを始めました。

Python, 特にipython notebookを用いたデータ解析に関する新シリーズを始めました。

「Python Not Heavy」

です。リンクを貼っておきます。

第0回 : Pythonって何?
第1回 : インストール方法

内容的には一応アップデートされています。