Pythonはどのタイプのアプリケーションにとって悪い選択ですか?[閉まっている]


21

私はPythonの学習を始めたばかりで、言語に関するコンテキストをもう少し取得したいと思います。

多くの場合、PythonはCやC ++に比べて遅い言語であることを認識しています。したがって、可能な限り迅速に実行する必要のあるアプリケーションにとって、Pythonはおそらく最良の選択ではありません。

これ以外では、Pythonは読み書きが簡単な優れた汎用言語のようです。利用可能なライブラリにより、膨大な機能が提供されます。パフォーマンスが重要なアプリケーション以外で、Pythonを使用するのが悪い選択はどこですか(そしてその理由)。


8
偉大な汎用言語のようなものはありません。5年ごとに、新しいものがニッチ市場でのみ存続する古いものを置き換えます。Lispの、Fortranの、パスカル、基本、エイダ、Perlの...
mouviciel

3
@mouviciel:パスカルはニッチ言語ですか?わかりました、その名前はBorland / CodeGear / Embarcadero IDEに一致するようにDelphiに変更されましたが、Delphiはまだ(に基づいて)Pascalであり、市場シェアを失いましたが、ニッチ言語とは呼べません。それに、基本的なことでもありません。Visual Basicはまだ基本です。DelphiおよびVisual Basicの両方が...多くの企業で使用されている
マージャンVenema氏が

7
「PythonはCまたはC ++に比べて遅い言語です」。これは、使用した特定のベンチマークでバックアップする必要があります。いくつかのケース(多くのシステムコールを行うI / Oバウンドプログラム)では、PythonはCライブラリの単なるラッパーであるため、Cと同じくらい高速です。
S.Lott

S.Lott真、そしてPyPy月時々 JVM、あるいはC / C ++のライバル@
yati sagade

パスカルは、私が大学にいたときに選択した教授言語でした。それから数十年が過ぎ去り、今では彼女のジャワに見えます。私はいくつかの言語をプロフェッショナルにコーディングしています(半ダースほど)が、楽しみのためにDelphiをコーディングしています。
-Mawg

回答:


22

リソースが限られている組み込みターゲットを対象としたソフトウェア。この惑星のプロセッサのほとんどは、リソースが不十分なためにPythonを実行できないか、そのアーキテクチャにバージョンを移植していません。現在でも、ほとんどのプロセッサには1メガバイト未満のメモリが搭載されています。


…誰かがArduinoのPythonポートを作るまでです。あ、待って!
スポイケ

5
@Spoikeそのリンクは、実際にコンピューターでpythonを実行し、arduinoとのみシリアル通信するためのものです。Arduinoのは、Pythonのコードを実行されていない
basarat

1
@BasaratAli:免責事項-jestでコメントを書きました。;-)
スポーク

14

思い浮かぶ2つの場所は、多くの並行性を必要とするものであり、そのためにErlangを使用します。または、ヘビーデューティーの数値計算。Fortranを使用しようとするでしょう。


1
Fortranはまだ数値計算でC / C ++に先んじていますか?...
Sardathrion-モニカを

1
あなたは私が知らないことを知っています。それは私が多くの経験を持っている領域ではありません。しかし、私は、Fortranの人々が30年以上を費やしてツールを非常に高速にしたことを知っています。
ザカリーK

@Sardathrion-言うのは難しいです。ごく自然なことです。しかし、数か月前、Intel Fortranの名誉あるライオネル氏は、Fortranラインは開発ラインの他のすべての製品(それほど狭くない)を売っていると述べました。
ルーク

@Idigas:実際、Fortranが広く使用されていることは知っていますが、それは最適化の制約ではなく、レガシーコードが原因である可能性があります。多分私はそれを質問として尋ねるべきです...
サルダスリオン-モニカの復活

また、数値計算を行う多くの人々がFortranを非常によく知っており、Fortranが彼らの選択するツールであることも忘れないでください。そのため、そのようなタスクを行う必要がある場合、Fortranに到達します。
ザカリーK

8

Pythonは動的に型付けされた言語であるため、コンパイル時のチェックは行われないため、大規模な単体テストを持たない大規模なPythonプロジェクトのリファクタリングは困難です。

したがって、長期にわたって保守および変更する必要がある大規模なプロジェクトがあり、チームがすべての自動テストの作成に専念していない場合は、JavaまたはC#を使用した方がよい場合があります。


17
単体テストなしで大規模なプロジェクトをリファクタリングすることは非常に困難です。
サルダスリオン-モニカを

9
確かに、タイプセーフティがないとはるかに困難です。
エリックウィルソン

3
@Eric Wilson-それでも、強い型付けは誤った安心感を与える可能性があります... コンパイルして出荷します!
マークブース

2
これは、質問のトピックに関する100%ではないかもしれませんが、依然として有効なポイントです。動的に型指定された言語のツールサポート、特にリファクタリングは、JavaやC#などの言語と比較して不足しています。ものの名前を変更するだけでも、大規模なPythonプロジェクトでは徹底的な演習になります。
オリバーズ

Pythonは別個のランタイムまたはVMを必要としますか、それとも単一の自己完結型実行可能ファイルを生成できますか?
ジムでテキサス州

2

主な焦点がWindows GUI開発である場合、(。Netの使用と比較して)優れたフォームデザイナーが不足しているため、CPythonを推奨します。

ただし、IronPythonは.Net上で実行され、Visual StudioとSharpDevelopから選択できるフォームデザイナを備えた2つのIDEがあります。実際、Visual StudioのPythonツールは IronPythonと同様にCPythonにも使用できます。これはまだ試していませんが、かなりきれいです。


2

これは本当に「悪い選択」の意味に依存します。

Pythonの使用が非常に難しいアプリケーションを意味する場合、比較的少数です:思い浮かび、まだ言及されていない主なものは、洗練された型システムを持つ言語(Haskell、依存型付け言語)より良いオプションです。

Pythonが最適ではない(つまり、より良い選択肢がある)アプリケーションを意味する場合、より多くの選択肢がありますが、それらはより主観的です。たとえば、明らかに限られた経験では、代数的なデータ型、パターンマッチング、およびPythonよりも機能的な機能を使用すると、コンパイラおよびインタープリターでの作業がはるかに簡単になります。ただし、このようなアプリケーションを網羅的にリストすることは、個人ごとに異なるため不可能です。


2

表現力とさまざまなサポートライブラリがあるため、何かをすばやくスクリプト化するのに最適です。

動的な型チェックと明示的な変数宣言の欠如により、数十万行、さらには数百万行のコードを含む大規模プロジェクトには適していません。同じことがミッションクリティカルなシステムや安全性が重要なシステムにも当てはまります。たとえば、アビオニクスシステムでは、コンパイル時に捕捉できたエラーが原因でシステムが故障することはまったく許容できません。


0

まあ、あなたと同じように、私もPythonから始めています。しかし、私にとっては機械学習とデータサイエンスのコンテキストです。

また、Java 8とその新しいストリーム指向ライブラリの新鮮な知識をすべて習得しました。

新しいJava 8ストリームライブラリの滑らかな感触と、Apacheスパークライブラリのおかげでそれがどれほど身近に感じられたかがとても気に入りました。Pythonに入ったとき、同じことを期待していました。

もっと見ました。しかし、はるかに少ない。十分なドキュメントがありますが、不十分なドキュメント。流動性はなく、実際のところ、メソッドが新しいオブジェクトを統治していたのか、それともオブジェクトを操作しているのかを推測していました。地図/縮小などに近いものはありませんでした。

しかし最初から、私は言語を学ぶことがどれほど簡単になるかについて大きな期待を持っていませんでした。私は正しいことがわかった。一貫性がなく、直感的でなく、学ぶのが難しい。しかし、それはJavaが好きなことすべてにかなり優れているという私の経験でした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.