Table of Contents
はじめに
理系の大学院を2011年に出た人かつpython嫌いなのでバイアスがかかってたらごめんなさい。言語としてはscalaが最強。python1.0が出た当時から生きている老害です(釣り)
背景
2016年現在、機械学習業界がpython一色になっている。現在のpythonは昔のpython(1995年頃)とは別物で、
- 科学計算(NumPy/SciPy/scikit-learn)
- 数式処理(Sage=セイジ)
- データ整形(pandas)
- 可視化(matplotlib)
- インタラクティブ(notebook)
といったパッケージを備えている。なぜこのように強化されたのかを知りたいというモチベーションがあり調査した。
python年表前半(~2011)
1980年
ABC言語が発明される。グイド・ヴァン・ロッサムが開発プロジェクトに参加。
特徴:
- ソースコードがC言語の1/4の長さになる
1994年
python言語がリリースされる。グイド・ヴァン・ロッサムが発明。
特徴:
- 読みやすさ・書きやすさ
- ラムダ関数・map関数・reduce関数を初期バージョンより備えていた
1995年
グイド・ヴァン・ロッサム自らmatrix-sigに参加。pythonで行列計算を可能にするプロジェクト。
2001年
matrix-sigはNumArrayとして開発が継続されていた。その資産の上に、SciPy 1.0リリース。
一方、IPythonがリリースされ、インタラクティブコンピューティングへの道が敷かれる。
2003年
matplotlibリリース。pythonに可視化機能が備わりMATLABの競合への道を歩み始める。
2005年
Sageリリース。Sageの設計思想は車輪の再発明を避けることであり、オープンソースパッケージを統合したものとなっていった。
2006年
NumPy 1.0リリース。pythonは1979年から続くBLASの競合に。必ずしもC言語を使わずに済むようになった
2007年
scikit-learnリリース。release noteを見ると、当時はガウス混合モデルやニューラルネットワークがなかった模様。
SymPyリリース。Sageの数式処理エンジンとなり(しましま(@shima__shima)氏に感謝!)、pythonは1988年から続くmathematicaの競合に。
2011年
pandas 0.30リリース。元はAQLのクローズドソースだった。pythonはplyr/dplyrを備えたRの競合に。
この段階で、現在の状況に至るためのお膳立ては整ったのであった。
- [2006] 科学計算(NumPy/SciPy/scikit-learn)
- [2005] 数式処理(Sage=セイジ)
- [2011] データ整形(pandas)
- [2003] 可視化(matplotlib)
- [2001] インタラクティブ(notebook)
・・・ところで、私が大学院に入学したのは2008年であった。研究室ではintel C compilerしか使われていなかった。そして、BLASやLAPACKをCから叩いていた。スクリプティング言語としては、Rubyが使われていたが、Webアプリは誰も書けなかった。mathematicaやMATLABはよく使われていた。特に脳からの計測データ(電流/光トポ)はMATLABに読み込まれていた。Sageを使ってる人は1人だけいた。
つまり、発明されたのち、普及フェーズをへてイノベーションが起こるという型になっており、イノベーションの波はまだ到達していなかったのだろうと思う。
ということで、この後には普及の歴史が続くこととなる。
python年表後半(2014~)
2014年
Project jupyter開始。jupyterはipythonをカーネルの1つに降格し、CでもHaskellでもScalaでもRでもJuliaでも要は任意の言語で動作するようにした。これにより普及のゴングが鳴らされた。
2017年
型アノテーションが実装される。これにより、Java化がすすみ、マシになる。結局はtypeを指定しなくてもコンパイルエラーにならず、焼け石に水?
今も残り続けるpythonの根本的な問題
- GUI
- 短いので本人しか読めないコードを許す設計
- pythonしか書いたことがない人の存在
- (javascriptと同様の問題)
- ライブラリを加味せず言語単体の性能は微妙?
- 速度はnumpyが速いから良いか
- flaskはWSGIなど色々不足
- (Javaと同様の問題)
総評
初期のpythonは行列演算が速いだけだったが、現在のpythonは進化を続けている。
このあたりについては,以前,Oliphant さんにお話しいただきました
多くプロジェクトをまとめて,NumPyに統合した Oliphant さんのご尽力は大きいと思います
http://www.slideshare.net/shoheihido/sci-pyhistory
おお。実は今日ネットサーフィン(死語)はじめて、初めて調べてるんですが、書いてみるものですね!勉強になります。ありがとございます。
スライドみると、1997年から関わっていて、まさに歴史の生き証人、むしろ当事者なんですね。
ちなみに、情報不足についてはまだまだあるのでアップデートかけてく予定ですが、間違ったことや嘘は書いてませんですよね?
若干,気になる点は sage はいろいろなライブラリを統合してまとめたもので,数式処理自体は SymPy というものがになっているかと思います
SymPyが本体だったんですか・・・お恥ずかしいですが今まで知りませんでした。
調査してすぐ修正します。
貴重なお時間さいていただき有難うございました〜