Pythonでそんなに人気があるのはなぜですか?[閉まっている]


54

構文として空白に悩まされていることを除けば、私は嫌いではありません。Pythonに魅了されることはありません。

Perlの詩に感謝し、bash&kornおよびshebangで美しいWebサービスをプログラミングしましたgnuplot。私は文書を書きますがtroff、REXXは気にしません。年も前にtclがこれ以上有用であるとは思いませんでしたが、Pythonの大きな悪臭は何ですか?私は求人情報とこれを採用した多くの候補者を履歴書の賞品とトロフィーとして見ています。


現実には、私は個人的にこれで売られるようにしようとしていると思う、ただ理由を見つけることができない。


81
Pythonの必要なインデントに人々がイライラする理由がわかりません。とにかくコードをインデントすることを望みますか?
グレッグヒューギル

10
@GregH、もちろんですが、私の構文はそれによって義務付けられますか?Makefileのようなものですか?
ジェキュー

5
@Xepoch:しかし、Makefileはインデントを必要とするだけでなく、通常は他の種類と区別できない特定の種類のインデントを必要とします。Makefileが特にの代わりに空白のインデントを必要とする場合0x09、おそらくあなたは反対せず、おそらくあなたの好みのインデント幅で一貫したインデントを使用するでしょう。これは、Pythonが許可するものと同じです。
グレッグヒューギル

31
Perlの詩?マジ?他の人のPerlコードを維持することを誇りに思っているなら、Perlが人気の面で落ちた理由を理解するでしょう。
grokus

6
@グレッグ、あなたに同意します。前にも言ったが、もう一度言いますが、Pythonのインデントルールについて不平を言う人は、インデントが不十分なコードを維持するように求められるべきです。ちょうどコト...
grokus

回答:


61

Pythonは、合理的にクリーンな構文、包括的な標準ライブラリ、優れた付属およびサードパーティのドキュメント、広範な展開、および「スクリプト」スタイル言語の即時性(つまり、明示的なコンパイル手順なし)を備えた適切に設計された言語です。


36
うまく設計されていますか?というグローバル関数があることに気づいたことがありlenますか?
代替案

65
lenの何が問題になっていますか?私はあなただけで5分間のpythonについて読ん印象取得
クーゲル

5
個人的には、言語構造は非常に簡単に把握できたため、一般に言語が内部でどのように機能するかをよりよく理解できました。それはささいなことです。ファーストクラスの関数、外部モジュールの関連部分のみを現在にインポートする機能、リスト内包表記、タプル、メソッドパラメーターとしてのselfの包含は、関数とメソッドの違いを理解するのに役立ちました(他の言語は砂糖の後ろに隠れています)。コードが内部的にどのように機能するかについて何も教えていないことを直感的に知っているので、C#のような言語を使用するのは苦痛です。
エヴァンプライス

1
どうすればpythonを適切に設計された言語にできますか?それは奇妙な使用しています__double_underscore_names__、それはミックスalllowercasefunctionamesmixed_underscoreし、mixedCamelCase名。それは必要と:の終わりdefまたはループ。それは奇妙な略語の多くを使用してstrdictislice。コンベンションはまったくなかったようです。それは純粋な混乱です。Peps、Pip、Zen ...これは言語よりもPython宗教のようなものです。いくつかの素晴らしい機能があるかもしれませんが、なぜそんなに多くの人々がそれについて非常にやめたのかを説明していません。pyhonについて特別なことは何もありません。設計が不十分な製品です。
t3chb0t

1
そして、ハックとはdef何ですか?なぜa defではなくaで関数を定義するのfuncですか?pythonほど直感的でない他の言語はありません。
t3chb0t

76

Pythonは、これまでにコードを書いた中で最も自然なプログラミング言語であることがわかりました。Pythonの前後に多くの言語でコーディングしました。多かれ少なかれ、あなたはあなたがやりたいことをやってもらう。Pythonはこの闘争を大幅に軽減します。エリック・レイモンドはそれを言ったくらい私はできるよりも良いのはなぜPythonの?

関連するポイントとして、Pythonは急速に進化しているときでもそのクリーンさを維持しています。私が扱ったほとんどの言語では、新しい言語機能の導入により多くのしわが生じます。しかし、Pythonでは、withいハックのように感じることなく、主要な言語機能(装飾機能が思い浮かぶ)でさえ常に追加されます。


8
基本的にこれを言うためにここに来ました。構文はとても自然に感じられます。まるで擬似コードを書いているようです。
ジェームズデイビス

2
Pythonはコンパクトです。機能セット全体(および少なくともライブラリのコンセプトインデックス)を頭に収めることができます。
systempuntoout

2
@ Zoomzoom83擬似コードの開始と終了があります-Pythonでは動作しません:-(
mbq

1
@mbqそして、私の擬似コードは、括弧を持っているが、それはまた別の話だ;)
クリスは回復モニカ言う

26

これはあまり皮肉に聞こえないことを望みますが、IMO PythonはJava、C#、Objective-Cとまったく同じ理由でとても人気があります。言語自体に素晴らしいものがあるからではなく、それぞれが多くの誇大広告、多くの広告、そして多くの図書館と彼らの好みの言語のサポートを生み出すことができる巨大なスポンサーを持っているからです。


6
C#は特別で、linqがあります
ダニエルリトル

39
Pythonの背後には大企業がありますか?(本物の質問)
ジェキュー

11
ええ、それが私が意味したことです。Pythonは、Googleがそれに興味を持ち始める前に、「クール」ではありませんでした。
メイソンウィーラー

10
@メイソン-しかし、確かに、Googleのような大企業がそれを「クール」にする何らかの理由があるに違いない?
ジャス

7
なぜ人々はPythonの企業スポンサーがあると思いますか?パイコンのサイズと巨大なJava / j2eeの慣習との違いに気づいた人はいますか?これは、企業資金のデビッドとゴリアテの話です。
rox0r

11

私の経験では、プログラミングに真の喜びを感じる人は、学校や大学で学んだことよりも自分に合った言語を求めていることがよくあります。基本的に、これは、デフォルトのPHP / Visual Basic / C ++ / Java / C#から、Python、Ruby、Haskell、さらにはperlなどのよりエキゾチックな(ビジネス/キャリア)に移行することを意味します(ハックの価値と隠蔽性が大きいため)。

誤解しないでください、仕事とコードに大きな誇りと喜びを持っている非常に経験豊富なC#/ VB.netプログラマーがいます(StackOverflowの人は非常に良い例です)が、あなたはPythonプログラマーにならないからですそれは彼らが学校であなたに教えたことです。それはあなた自身の決定でなければなりません。

Jeff Atwoordにはこれに関するブログ投稿があったと思いますが、見つけることができません。見つかったら、このコメントを更新します。


1
Pythonは私の学校で101
。-モーガンハーロッカー

ほとんどすべての言語には存在する理由があり、少なくとも何かが得意です。私の意見では、これは「他の人が好きだから好きだ」と言っているだけです。
NtFreX

9

本当にクールで驚くべきコードゴルフオフを生み出すRubyと比較して、Pythonには「明白な方法[物]が1つ、できれば1つだけあるべきだ」という中核的な哲学があります。これはRubyに比べて大きな利点であることがわかりました。


4
..または一見無限の方法でPerlと比較しましたか?
ジェキュー

@Xepoch-実際、Perlで物事を行うため良い/正しい方法は無限よりはるかに少なく、手掛かりを持っているほとんどの人は、トップ1(またはせいぜい2)あります。あなたが私を信じないなら、SOに関するPerlの質問を見てください。はい、一部の質問には10の異なる解決策があります。しかし、ほとんどの場合、「状況に最も適した」ソリューションについて明確に合意しています。
DVK

@DVK、私は知っていますが、設計目標からそれを見ています。
ジェキュー

8

Pythonが好きになり始めたのは、エリックS.レイモンドが説明するのと同じ理由からです。Pythonでプログラムを書く行為は、頭の中でコードを設計する行為を考えることに概念的に非常に似ています。

優れたPythonプログラマーになることを学ぶことで、私ははるかに優れたC#プログラマーになりました。LINQの理解がはるかに容易になりました。私のようなタイプを採用したことはなかったかもしれないDictionary<string, Func<T>>、または使用して快適得てyield return、私はPythonでクラスや発電機を使用していなかった場合は、。Pythonデコレータを使用したので、AOPの理解がはるかに簡単になりました。リストは続きます。


6

第一に、Pythonの強制インデントのような些細な言語の癖は、言語自体が強力に表現力があり、有用であればほとんど問題になりません。私も最初はそれを理由に退かれましたが、すぐにそれを過ぎて過去を見るようになり、今ではそれが邪魔にならないことさえ覚えました。なぜなら、この言語は私にとって働きやすいからです。 、それは無害な言語の癖であり、言語に慣れている人はそれで悩まされることはありません。

多くの人がPythonが素晴らしいと考える理由を理解するには、言語を試してみてください。その理由は、Perlとほとんど同じです。Pythonの構文(リ​​スト内包表記、OOP構文など)が好きですが、それは本当に主観的であり、あなたの意見は異なるかもしれません。大規模なプロジェクトにはPythonを好みますが、小規模なスクリプトにはPerlを使用します。

それあなたの質問への答えです。PythonをPerl、bash、tclと比較します。ことは、それは公正な比較ではないということです。bashのような言語は、一般的なタスクを自動化する小さなスクリプトを作成するために設計されました。コードが十分に大きくなるとPerlも扱いにくいと思う人もいます(よく書かれたPerlはそうではありませんが、大規模なプロジェクトではうまく書かれたコードを手に入れるのは困難です)。IMHO Pythonは、他の「スクリプト」言語とは異なり、大規模なプロジェクトや小さな1回限りのスクリプトに非常に適しています。Rubyにも同じ品質があると思います。


6

慈悲深い独裁者が良いスタイル[1]のアイデア、良いプログラミングのアイデア、プログラム方法のアイデアを定期的に失望させるという哲学。ヴァン・ロッサムのように思わない。しかし、彼の言語は、ヴァンロッサム以外の考えを表現しようとする試みに抵抗します。彼の考え方は、多くの(ほとんどの?)プログラマーにとって非常にうまく機能しています。しかし、私は彼のプログラミング方法のモデルには合わないようです。

だからこそ、Perlは優れた言語だと思います。

[1]削除に関する彼のブログを参照してくださいreduce


あなたは思考プロセスであなたの推論を詳しく説明してもらえますか、もっと聞きたいです。
ジェキュー

3
@Xepoch-プログラミング言語は表現の手段として機能します。イディオムと思考スタイルは、「適合」から「適合が非常に困難」までの一連の思考で表現できます。例えば、私はリストの理解の観点では考えていません。彼らは私が問題解決についてどのように考えるかとは無関係です。しかし、Common Lispのreduceは、私の心から大きな困難なく流れるものです。しかし、明らかにヴァン・ロッサムはその反対です。Javaでは、すべてのものをオブジェクトに含める必要があります。そのため、非オブジェクト指向ソリューションをJavaで作成することは非常に困難になります。など
ポールネイサン

5

OSカーネルを作成したいのでなければ、ある程度Pythonはあなたが必要とする唯一のプログラミング言語だと思います。インタラクティブな使用、ランダムハック、システム管理、科学アプリケーション、オペレーティングシステムツール、Webアプリケーション、GUIアプリケーション、埋め込みなどに適しています。ポータブルで、無料で、広く使用されています。実際、これらのすべての分野をカバーするプログラミング言語は他にありません。これは、個人と企業にとって非常に優れた戦略的投資です。


4
ここでPythonを疑うことはありませんが、Perlは上記の説明によく合っていると思います。
ジェキュー

Rubyもこれで非常にうまく機能します。
オコド

1
2015年現在、Pythonは科学計算の事実上の汎用言語です。それ以外は、古典的な低レベルのもの(C、C ++、FORTRAN)、いくつかのニッチ(MATLAB、Mathematica、R、Julia、Lua)で競争力があり、ライブラリとインフラストラクチャのみに使用(Java)、ランダムスクリプトツール(bash 、Perl)または....まあ...上記のどれでもない。
ポール

5

2004年以来、Pythonを使用して開発を行ってきました。

  • GUI
  • Python to C ++バインディングを使用したレイトレーサーシーンのスクリプト作成
  • クロスプラットフォームの自動ビルドシステム
  • テストスクリプト
  • 日常の問題を解決する汎用ツール
  • WebサイトとWebアプリ

PythonスクリプトはWindows、Linux、およびMacでほとんど変更を加えずに移植できるため、2004年にPythonが選択された言語でした。


4
別の回答からのコメントを引用するには:「ここでPythonを疑うことはありませんが、Perlは上記の説明によく合っていると思います」
DVK

4

私にとってPythonは親友です。それはまともなスクリプティングおよびプロトタイプ言語です。私が考えることができる重要なことは次のとおりです。

  • 簡潔な構文、非常に単純化され、理解しやすい
  • マルチパラダイム、命令型言語として使用しますか?承知しました。おっと?問題ない。また、ラムダ、リストの理解など、いくつかの軽い関数型言語機能も備えています。
  • 基本的なコンピューティングのニーズに対しては、基本的なデータ構造、配列、タプル、辞書(連想配列)、セットなどをネイティブにサポートしています。
  • 他の機能、たとえばダックタイピング、リフレクション、メタプログラミング、デコレーター、ジェネレーターなど、プログラマーの生産性を高めることができます。
  • 豊富なライブラリのサポート

ラムダはPythonで壊れています。
ポールネイサン

@ポールあなたの意見を裏付けるリンクを提供しても害はないでしょう。
ピョートルドブロゴスト

@Piotr:docs.python.org/reference/expressions.html#lambdaステートメントを含めることはできません。これは、匿名関数の数学的な考え方に違反しています。
ポールネイサン

それは、ラムダが壊れていないことを意味しませんか?
rox0r

4

エレガントで習得しやすく、基本タイプ(特にリスト)に慣れれば、生産性に制限はありません。プロトタイピングアルゴリズム、または最終的にマシンに直接配置できる擬似コードのような言語で記述するのに最適です。また、繰り返しジョブを実行したり、ファイルに対して迷惑な操作を実行したりするためのスクリプト言語としても最適です。サブプロセスが相互に通信するためのグルー言語として使用します。いくつかの簡単なタスクではbashほど強力ではありませんが、1行以上のコードを実行する必要がある場合は、はるかに簡単です。

そして、それは関数とサブルーチンを区別しません、あなたは私の意味を知っています。


3

私が見た多くのPython愛好家は、C環境から切り替えたばかりで、"Hello "+ "World"isのようなものに感銘を受けました"Hello World"。ですから、これは難解な/特定のタグを収集せず、乾燥した森林での火のようなmar教者の間で広まった最初のスクリプト言語だと思います。そして、そのように作成されたファッションは、現在、単独で生きています。


2

私はもう少し疲れていないので、質問に再びアプローチします。

Pythonは、科学プログラミングのタスクに特に適していることがわかった言語であり、その人気がかなり高まっている場所の1つです。いくつかの理由:

  • かなり強力なコミュニティサポートは、いくつかの強力なライブラリが存在することを意味します。Pythonは、MATLABおよびその分野の他の一般的な言語の適切な代替として機能します。
  • 速度必要なときにCでうまく動作しますが、多くの場合、速度はそれほど必要ではないため、Pythonの解釈された性質はそれほど重要ではありません。
  • 私は、部外者にとっては、奇妙にarbitrary意的な構文規則のように感じるものがあまりない、かなり親しみやすい言語であることがわかりました。擬似コードとPythonの間の変換は非常に迅速です。
  • 「それを手に入れるか、そのままにしておきます」。科学プログラミングプロジェクトの多くは、大規模なOOPの恩恵をそれほど受けません。ある人はそうします。この2つの間を簡単に行き来できる言語があると便利です。
  • 強力なクロスプラットフォームサポート。特に私が扱うものはめったにGUIに関係しないので、実行しているOSを気にせずにPythonプログラムを他の誰かに送信できることにほとんど頼ることができます。

プログラミング言語のすべてではありませんが、それはまともな「うん、おそらくどんな問題が発生しても解決するツールを持っている」という言語です。


リストした他のすべての項目に加えて、最も重要な項目の1つは、「実行しているOSを気にせずにPythonプログラムを他の人に送信できることに大きく依存できる」と思います。これは、オペレーティングシステムの種類にとらわれたくない場合にも非常に有利です。
タリック

1

Pythonは、利用可能なフレームワーク(Django、Zopeなど)と簡単にインポート可能なライブラリの両方で非常に「webby」言語であり、多くのWeb機能をカバーしています。

HTML、CSS + JSのスキルセット(過去数年間、新しいプログラマーの大規模なソース)から移行するWeb開発者にとって、これは非常に魅力的な提案になると思います(同じRuby)。

また、GoogleはMicrosoftではありません。


JavaはMSではないので、あなたの推論が正しければ、PythonではなくJavaに移行するでしょう。別の理由が必要です。
rox0r

0

主な理由の1つは、90%のgoogleがPythonで作られているためだと思います。

ただし、Pythonは習得しやすい強力なプログラミング言語でもあります。効率的な高レベルのデータ構造と、オブジェクト指向プログラミングへのシンプルだが効果的なアプローチを備えています。Pythonのエレガントな構文と動的型付けは、その解釈された性質とともに、ほとんどのプラットフォームの多くの領域でスクリプト作成と迅速なアプリケーション開発に理想的な言語になります。

Pythonインタープリターと広範な標準ライブラリは、Python Webサイトhttp://www.python.org/からすべての主要プラットフォーム用のソース形式またはバイナリ形式で無料で入手でき、自由に配布できます。同じサイトには、多くの無料のサードパーティPythonモジュール、プログラムとツール、および追加のドキュメントの配布とポインタも含まれています。

Pythonインタープリターは、CまたはC ++(またはCから呼び出し可能な他の言語)で実装された新しい関数とデータ型で簡単に拡張できます。Pythonは、カスタマイズ可能なアプリケーションの拡張言語としても適しています。

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