pythonの歴史(〜2016年) : from Data Science Perspective

はじめに

理系の大学院を2011年に出た人かつpython嫌いなのでバイアスがかかってたらごめんなさい。言語としてはscalaが最強。python1.0が出た当時から生きている老害です(釣り)

背景

2016年現在、機械学習業界がpython一色になっている。現在のpythonは昔のpython(1995年頃)とは別物で、

  • 科学計算(NumPy/SciPy/scikit-learn)
  • 数式処理(Sage=セイジ)
  • データ整形(pandas)
  • 可視化(matplotlib)
  • インタラクティブ(notebook)

といったパッケージを備えている。なぜこのように強化されたのかを知りたいというモチベーションがあり調査した。

python年表前半(~2011)

1980年

ABC言語が発明される。グイド・ヴァン・ロッサムが開発プロジェクトに参加。

特徴:

  1. ソースコードがC言語の1/4の長さになる
1994年

python言語がリリースされる。グイド・ヴァン・ロッサムが発明。

特徴:

  1. 読みやすさ・書きやすさ
  2. ラムダ関数・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年

python3.5.7リリース

型アノテーションが実装される。これにより、Java化がすすみ、マシになる。結局はtypeを指定しなくてもコンパイルエラーにならず、焼け石に水?

今も残り続けるpythonの根本的な問題

  • GUI
  • 短いので本人しか読めないコードを許す設計
  • pythonしか書いたことがない人の存在
    • (javascriptと同様の問題)
  • ライブラリを加味せず言語単体の性能は微妙?
    • 速度はnumpyが速いから良いか
    • flaskはWSGIなど色々不足
  • (Javaと同様の問題)

総評

初期のpythonは行列演算が速いだけだったが、現在のpythonは進化を続けている。

「pythonの歴史(〜2016年) : from Data Science Perspective」への4件のフィードバック

    1. Haruka Matsuzaki

      おお。実は今日ネットサーフィン(死語)はじめて、初めて調べてるんですが、書いてみるものですね!勉強になります。ありがとございます。

      スライドみると、1997年から関わっていて、まさに歴史の生き証人、むしろ当事者なんですね。

      ちなみに、情報不足についてはまだまだあるのでアップデートかけてく予定ですが、間違ったことや嘘は書いてませんですよね?

      1. 若干,気になる点は sage はいろいろなライブラリを統合してまとめたもので,数式処理自体は SymPy というものがになっているかと思います

        1. Haruka Matsuzaki

          SymPyが本体だったんですか・・・お恥ずかしいですが今まで知りませんでした。

          調査してすぐ修正します。

          貴重なお時間さいていただき有難うございました〜

コメントは受け付けていません。