「Python」の弱点やそのとらえ方--生みの親、グイド・ヴァンロッサム氏が語る
コメント
選択しているユーザー
うーん。モバイルの場合は、Pythonの弱点というよりは、一部の言語にしかモバイルOS側が対応出来ていないのが原因じゃないのかなあ、というのが正直な感想。
例えばiOSでプログラムを組むならSwiftかObjective-Cなんだけど、iOSのソフトウェアを組む用途以外でこれらを使っている人って殆どいないし、これら専用の言語みたいになってる。Androidはまだ選択肢があるのでそっちを指してるのかもしれないけど、あんまり「弱点」って印象じゃないかもしれない。
ちなみに弊社が運営している競技プログラミングでは、Pythonの人気は第2位で、1位はC++です。C++が人気な理由は
・極限まで高速化しようと思うとC/C++系列しか選択肢がない
・一部の大会がC++でしか行われていない
みたいな感じ。言語が選ばれる/選ばれない理由は本当にバラバラよね。
注目のコメント
Pythonの弱点は、ナイーブに自前でループなどを書いた時のコードの実行速度が挙げられます。Guidoは、現在マイクロソフトでPythonの高速化に取り組んでいるようですね。まずは、来年リリースになるであろうバージョン3.11では、2倍程度速くすることや、さらに先には、部分的に10倍程度速くすることも考えているようです。
ただし、そもそも現状でもTensorFlowやPyTorch、Numpyなどのライブラりを利用してコードを組んだ場合には、充分に高速です。なぜなら、これらのライブラリの内部コードは、主に高速なC, C++, Fortran等で書かれて、Pythonからは、ほぼ呼び出すだけという状況に近いからです。また、GPUによる加速の恩恵も受けられます。
ちなみに、ここにでてきたウェブのバックエンドとフロントエンドの違いですが、前者は、サーバ側での処理、後者は、クライアント側(つまりブラウザのこと)での処理を意味します。ボタンをクリックして、通信のために一呼吸おいて、画面が切り替わるのがバックエンドの処理、ボタンなどを押した瞬間に画面が描画されるのが、フロントエンドの処理です。
前者には、PythonやPHP、Rubyなどが使われます。後者は、JavaScriptの領域です。バックエンドの開発は、日本では、PHPやRubyとそのフレームワークであるRuby on Railsが多かったですが、外国では、Pythonも元から多かったと思います。ちなみに、RubyのRuby on RailsにあたるフレームワークはPythonでは、Djangoです。そして、最近は、日本でもWebバックエンドでのPythonの使用が増えてきており、Djangoエンジニアの求人は、求人サイトで検索すると数百件みつかります。
Juliaと比べたときのPythonの利点は、ウェブアプリ、GUIアプリの中に埋込みがしやすいことがあります。ライブラリは、一般的にPythonの方が充実しています。ただし、Juliaの方がライブラリに依存せず自前で書いたコードの実行速度は出しやすいです。(注:そもそも、ライブラりに依存せず実装するシチュエーションは少ないと思います。)rubyの時も思ったけど、OSとは独立したアップデート先ってのが、かなりハードルを上げてるんだよね。
バージョン固定で作り上げる企業システムはともかくとして、個人で「なんとなく」作るプログラムはyumで入れた時は動いても、pipを実行した瞬間に動かなくなる。
学習のハードル以前に、環境を作るところにハードルが大きい。
ソースからpythonを入れれば良いんだけど、そうすると色んなところでPATHの指定が…と悩みどころ。
現状だと、どうしてもpythonでメンテナンスをしなければならない状況を除いて、あまり触れない言語になってきてる。
言語としての学習コストが低いのに、環境がハードルになって、周囲にpython使いが少ない…
そもそもソースからコンパイルするって行為が、人によってはハードルになる模様。