学生の備忘録なブログ

日々のことを忘れないためのブログです。一日一成果物も目標。技術系はQiitaにあげるように変更しました。

python仮想環境

ややこしいんじゃ

 pythonの禅にもあるだろが,単純でいいんだよ.参入障壁がなくてコミュニティを活発なのがpythonの強みだろがい.

 とおもっていたら,同じことを思っている人がいた.

ymotongpoo.hatenablog.com

話を膨らます

 上記の通り,私はpythonの強みは,pythonの禅に由来する単純さであると思っている.

 私はpyconjp2016に参加したことがある,そこに集まる人達は,プログラミング言語のカンファレンスでありながら,中学生がいたり(その前回開催されたときにスピーカーだった)かなりのご老人がいたりしながら,比較的若い(若々しい)参加者が多く,寛容な雰囲気がpythonという言語を象徴しているように思えた.

 

The Zen of Python, by Tim Peters

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!

 複雑であるよりも単純な方が良い.

 シンプルな一つの方法があれば良い

 実装が説明するのが難しい場合、それは悪い考えである.

 これらのイデオロギーpythonをわかりやすく,単純で,強力な言語にしている.なぜならば,プログラミングは既にそれ自体がライブラリや開発ツールなどの援助を前提としているためである.

 ライブラリが無いpythonなど使うに値するだろうか,numpy,pandas,などの基礎的なものからjupyter notebookでscikit-learndを動かしデータから何事かのモデルを作り出す.これらは環境として完全に他を圧倒している.今日現在2017-04-26ではrubyはライブラリを充実させるのではなく,pythonのライブラリにブリッジしようという動きさえある.

 google機械学習ライブラリ群も,julia langやRのようなもので実装されるのではなく,pythonで実装されたのも,環境が整っているからである.

 いかにして環境は整ったのか,これが先に述べたpythonの禅が内包するイデオロギーによるものであると私は考える.つまり単純でわかりやすいと,みんな手を付けやすいのだ.

 普段ゴリゴリにコードを書き,プロダクトを作るプログラマだけで世界は構成されるわけではない.ツールとしてのプログラミングを選ぶときに,C++を選ぶだろうか.いくら速いとは言え,,,

 ruby,perl,pythonを比べた時,ツールとしての扱いやすさはpythonは出色である.なぜなら,皆同じようなことを記述するとき,似たようなコードを書くからである.  

 ツールとして評価する人は,その扱いやすさの判断基準は情報の多さと,不偏性である.

 pythonの文法はインデントに意味を持たせる.これがpythonのコードの見た目の多様性を制限する.これは大きな利点である.

 同じ機能を持つ全く違うコードは,ツールとしての扱いやすさを著しく損なう.ツールとして扱いたいのであって,文法を学びたいわけではないのだ.

 結果として,道具としての参入障壁が無いため,窓口が大きくなる.これによりコミュニティの裾野が開かれるのだ.

 コミュニティが活発な時,言語におけるインフラである,ライブラリや開発環境が充実してくる.ユーザーがあれば,企業はそれ向けのライブラリやIDEを開発するし,頭の良い人もマスが大きくなれば当然多く含まれてくる.その頭の良い人がpythonで良い成果を上げ,再び言語の評価が上がるのだ

結論

pythonの仮想環境わかりやすくしろや.