Python は優れた言語ではありません

Python は、シンプルで使いやすく、環境に優しく活気があり、汎用性の高いプログラミング言語として、長い間多くの人から「プログラミング言語におけるスイス アーミー ナイフ」と呼ばれてきました。

特に昨今のAIの隆盛に伴い、プログラミング言語界におけるPythonの地位も高まり、かつてはAI専用言語、ビッグデータ専用言語とみなされたこともありました。

しかし、言語機能から始めて、Python は本当に世間で言われているほど素晴らしいのでしょうか? この記事では、人気のある言語についての知識に疑問を抱かせる可能性がある、Python 言語のあまり魅力的ではない側面に光を当てます。 

1. メリット、デメリット、論点

Python の広大なエコシステムとその豊富なサードパーティ ライブラリが素晴らしいことは否定できません。ツールとリソースの選択肢が豊富にあるため、問題を迅速に解決したり、プロトタイプを作成したりする必要がある開発者にとって、これが最初の選択肢となります。

開発者 A: 「Web クローラーを構築する必要があるのですが、どうやって始めればよいのかわかりません。」 開発者 B: 「問題ありません。BeautifulSoup と Python からのリクエストを使用するだけです。簡単です!」 

しかし、Python にはその称賛に値する長所がある一方で、気が遠くなるような弱点もいくつかあります。たとえば、文字列をフォーマットする方法は約 400 あります。このため、Python は簡潔で使いやすい言語というよりも、ユーザーを驚かせようとしているように感じられます。

開発者 A: 「Python には文字列をフォーマットする方法がなぜこんなにもたくさんあるのですか?!」 開発者 B: 「どうしてわかるでしょうか? 1 つを選んでそれを使い続けるほうがよいと思います。」 

一部の人にとって、Python の必須のインデントは非常に物議を醸す問題かもしれません。一貫性と読みやすさはある程度強制されますが、少し制限が多すぎると感じる人もたくさんいます。同様に、Python の動的型付けに関する議論は永遠のテーマであり、動的型付けの柔軟性を好むプログラマーもいますが、動的型付けによって引き起こされる見つけにくいバグを嫌うプログラマーもいます。

開発者 A: 「Python の強制インデントが大好きです! コードがずっときれいになります。」 開発者 B: 「うーん、我慢できない! コードがタイツを履いているみたいです!」 

2.特殊なトラップ

Python の三項式は、その型破りな順列のためにしばしば批判されます。ほとんどの言語は最初に条件を宣言するという一貫した原則に従いますが、Python はその逆を行うため、複雑な式を読み取るときに開発者が混乱する可能性があります。

開発者A:「Pythonの三項式が理解できません。」 開発者B:「うーん、文章を逆から読むような感じですね。」 

Python の 1 項目タプルの構文は頭痛の種になることがあります。末尾のカンマを忘れると、それはタプルではなく式になります。これは、微妙なバグや開発者のフラストレーションにつながる可能性があります。

開発者 A: 「またタプルの末尾のカンマを忘れてしまいました!」 

開発者 B: 「おめでとうございます。典型的な Python のトラップに遭遇しました。」 

Python の正規表現は、JavaScript や Ruby などの他の言語よりも多くの定型表現を必要とするため、より複雑になり、エレガントさが失われる可能性があります。

開発者 A: 「Python で正規表現を書くのは、ジグソーパズルをもう一度やっているような気分です。」 開発者 B: 「同意します。Python の優雅さの典型ではありません。」 

Python の「魔法の」二重アンダースコア属性は初心者にとっては難解に思えるかもしれませんが、オブジェクトの動作をカスタマイズする強力な方法を提供します。しかし、残念ながら、その神秘的な性質により初心者は混乱することがよくあります。

開発者 A: 「Python のこれらの二重アンダースコア属性はどうなっているのですか?」 開発者 B: 「それらは『魔法のメソッド』と呼ばれています。一度コツを掴めば、強力です。」 

3. エラー処理と不変性の謎

Python のエラー処理へのアプローチは、特定のエラー処理を奨励しており、これは良い実践であると考えられています。ただし、すべてのエラーとそのメッセージを 1 つのステートメントでキャプチャすることは、開発中に直感的ではなく退屈になる可能性があります。

開発者 A: 「Python の 1 つのステートメントですべてのエラーをキャッチできないのはなぜですか?」 開発者 B: 「これはすべて、ベスト プラクティスを推進するためのものです。しかし、開発中は非常に煩わしい場合があります。」 

Python には不変辞書や複雑なオブジェクトに対するネイティブ サポートがないことも、開発者にとって大きな悩みの種です。サードパーティのライブラリでこのギャップを埋めることはできますが、無視できない不便さには変わりありません。

開発者 A: 「なぜ Python には不変辞書のサポートが組み込まれていないのですか?」 開発者 B: 「良い質問ですが、その理由はわかりません。サードパーティのライブラリのおかげです。」 

4. コミュニティ文化の対立

Python コミュニティの一部のメンバーは、「Python 的 (エレガント、本格的、きちんとした) 方法」を熱狂的に追求し、固執することがよくあります。コミュニティでは、初心者や異なる意見を持つ人々がイライラしたり不快に感じたりする雰囲気が生まれやすくなります。

開発者 A: 「いつも『Python が足りない』と言われることにイライラしています。」 開発者 B: 「他の人が同意するクリーンで効率的なコードを書くことに集中する必要があります。」 

Python コミュニティには優越感が浸透しており、一部の Python 開発者は他の言語やプログラミング スタイルを見下していることがあります。もちろん、この態度はコミュニティ全体を代表するものではありません。Python 開発者の多くは建設的な批判を高く評価し、他の言語やパラダイムから学ぶことに意欲を持っています。

開発者 A: 「なぜ一部の Python 開発者は、Python が史上最高の言語であるかのように振る舞うのですか?」 開発者 B: 「どのプログラミング言語コミュニティでも、常にある程度のプライドは存在します。しかし、最も優れた開発者は常に学習にオープンであり、成長しています。」 

5. Python は過大評価されていますか?

Python が過大評価されているかどうかについての議論については、実際のところ、Python の開発プロセスを垣間見ることは難しくありません。

15 年前、Python は Web に依存して徐々に市場を占め始めましたが、当時の Python の背後には Django やその後の Flask などの Web フレームワークがありました。それ以来、Python が主流になったのは、データ サイエンスの分野の台頭でした。

初期の NumPy、Scipy から、実際に Python を引き継いだ Pandas、TensorFlow、PyTorch などまで。Google や Meta などの大手企業によって支持されたこれらのデータ サイエンス フレームワークの人気が、Python を一歩一歩現在の地位に押し上げました。

しかし、注意深く調べてみると、これらのライブラリやアーキテクチャが Python ではなく、C、C++、さらには Fortran で書かれていることがわかります。現在でも、Python の競争力の中核は、使いやすいフロントエンドと高性能のバックエンドを結び付ける「接着剤」属性にあります。

データ サイエンスにおける今日の Python の蓄積された利点は揺るぎないものであることは事実ですが、他の多くの側面において、Python のパフォーマンスは依然としてさまざまな分野のリーダーを超えることはできず、さらにはそれに匹敵することさえできません。

6. 結論

結局のところ、Python が人気があり強力なプログラミング言語であることは間違いありませんが、欠陥や論争がないわけではありません。Python の長所、短所、論争を調べることで、この言語についてよりバランスのとれた見方をより正確に描くことができます。

他のプログラミング言語やパラダイムを検討するときは、これらの問題を認識し、広い心を保つことも不可欠です。

結局のところ、最高の開発者とは、適応して学習できる人であり、各プログラミング言語の長所を受け入れ、同様に、各プログラミング言語の弱点も受け入れることができる人です。

おすすめ

転載: blog.csdn.net/java_cjkl/article/details/131992713