Pythonはなぜ機械学習の言語に利用されるのか。Perl(真珠)使いの嘆き。
筆者が書けるプログラミング言語は低水準言語である機械語(マシン語)、アセンブラから高水準言語であるC,C++,C#,Perl、Visual Basic、Lisp、Prolog、PHP、Java、Ruby,Pythonですが、そのなかでとりわけperl,C/C++,C#,java,phpを日頃使っています。今でもLinux,windowsともこの言語群でさくっとコーディングします。
Pythonは今やトレンディーな言語なので仕方なく使っています。Pythonのコンセプトは単純で簡潔なコード、効率のよいコード、誰が書いても同じようなコードになるように基本的に1通りしかないように作られています。
perlのようにいろんな表現ができる仕様とは逆なのです。C言語なんかもっと自由に表現できます。逆にそれは効率の悪さ、コードの複雑さを招きます。
プログラミング言語をC言語から初めているエンジニアであればperlでさえもどかしさを覚えることがあります。構造体、ポインターでさせてくれたら一撃なのにと思うところがふと頭をよぎることがあります。
Pythonは1991年にリリースされた比較的新しい言語です。とはいうものの20年も経っていますが。2000年にPython 2.0がリリースされ、2008年にリリースされたPython 3.0は、完全な下位互換性を持ちません。
従ってPython 3.0から入った方は幸せです。Python 2のコードの多くは、Python 3ではそのままでは動作しないのです。Python 2は2020年に正式に廃止される始末です。言語仕様が変わるのは良くありますが変わり過ぎです。筆者もなんだこれはとなりました。
phpのミドルバージョンのアップでの仕様変更でコード修正を迫られるなど可愛いものです。
そのPythonですが今や大流行です。プログラミング言語利用実態調査2021(日経クロステック)の調査ではPythonが1位です。私が一番気に入っているperlなんて、あの伝説のCOBOLよりも下でトップ10圏外です。
(ただCOBOLエンジニアは今でも旧資産から最新のリソースに移行するのに引く手あまたですが)
Pythonはシステム開発に利用できるライブラリーやフレームワークが豊富に存在するので、機械学習、データ分析やAI関連といったシステム開発に利用する機会が多いと
言われますがperlでもライブラリーは充実しており、同じです。そもそもPythonが注目されたきっかけは機械学習の開発言語がPython一択だったからといろんなところで述べられています。
だれかが、Pythonを機械学習、データ分析やAI関連に紐づけたトップランナーがいるはずです。あるいは必然的にそうなったのでしょうか。トップランナーはだれか? グーグル検索を駆使して過去に遡ると。
2016/10/25
Introduction to Machine Learning with Python(Pythonではじめる機械学習)
Andreas C. Mueller,Sarah Guido
コンピュータ関連で書籍出版のO'REILYから出版されています。ということはこれより数年前に変化点があったと思われます。
2014年には欧米では既に機械学習の研究者がPythonを好んで使い出しています。
Pythonの単純な構文は、より自然で直感的な抽出、変換、読み込みプロセスも可能にし、C ++,javaと比較して開発が効率よく、開発者は機械学習アルゴリズムを実装せずにすばやくテストできます。必然的にそうなったようです。
機械学習アルゴリズムをPythonに組み込んだのはだれか?
出典: https://miro.medium.com/max/1400/0*agN3x-Al2UXuuZgx.
Pythonは機械学習や人工知能のためのフレームワークの中で、最も多くのライブラリを誇っています。機械学習に関する多種な問題に対して、ライブラリが用意されています。
開発者としては、様々なライブラリに類似の事例が既に用意されているので、問題解決に時間を費やす必要がなく、あるゆる分野で好んで使われます。
機械学習用の有名なPythonライブラリには、以下のようなものがあります。
・Scikit-learn、Keras、TensorFlowが機械学習に使用されます。
・NumPy はデータ解析や高性能科学計算に関する問題を扱う。
・SciPy は高度な計算を支援する。
・汎用的なデータ解析はPandasで行う。
・データの可視化はSeabornが担う。
このように機械学習用が充実しています。Pythonがこれらの高度な技術に最適なのは、主にそのシンプルさによるものです。(尚、私にとってはどこがシンプルな構文なのかいまだに分かりません)
何回も言いますが、シンプルな構文、高い可読性、簡単なテストは、効率を高め、処理時間を短縮します。
これが全てです。必然だったのです。
開発者のGuido Van Rossumは1991年にPythonをリリースしました。プログラマに複雑な言語に代わるよりシンプルな選択肢を提供した。このシンプルさが故に、Pythonを今日のようなトップに押し上げたのだと思う。当事者の彼はこのようことを目論んでいたでしょうか。
ちなみに、Googleにおいて開発言語はPythonが多く使われます。Googleのコアとなる検索アルゴリズムのほとんどはPythonで書かれています。
Googleの人工知能や機械学習に関連するプロジェクトは、すべてPythonで行われているほどです。
また、GoogleはPythonの複数の機械学習ライブラリの作成も担当しているので、
十分なサポートと豊富なソース、そして信頼性の証となります。
駆け出しエンジニアの方は是が非でもPythonを必須のスキルとしましょう。
初期に機械学習用のライブラリを作成したのは分からずじまいでしたが、GitHubを漁ればわかるかもしれません。もしくは研究論文などでしょう。知っている方はぜひコメントで教えて欲しいものです。
XX \\ \o*\ \* o\ \ *o \ \o ooo* \ \o *o**\ \ * o \ \o***o * * o\ \** o*ooo*** o o \ ^-^-^-^-^-^-^-^-^-^ []
#-- Merry Christmas for all ! Python --
import random
n = 9
print(' XX')
print('\n'.join(' '*(n - i)+'\\'+''.join(random.choice(' o *') for i in range(2 * i))+'\\' for i in range(n)))
print(' ^-^-^-^-^-^-^-^-^-^')
print(' []')
#---------------------------------------