GoogleのPythonの多用、それは好みの問題なのか、それとも彼らに競争上の優位性を与えるのか?
GoogleのPythonの多用、それは好みの問題なのか、それとも彼らに競争上の優位性を与えるのか?
回答:
私が2004年にGoogleでインタビューしたときまでに、PythonはすでにGoogleで著名だったので、私は実際に決定的な答えを出すことはできません。
確かに、私が間違いなく否定できる明らかに魅力的な説明が1つあります。それは、非常に多くの著名なPythonistaを採用しているため、GoogleがPythonを使用しているということではありません。そこにあります(例外はPeter NorvigとJeremy Hyltonが含まれますが、歴史的には、GoogleがPythonを選択したことで、それらも以前から存在していました)。
それが間違いなく私が最初に興味を持った理由です(私の出版社は、Googleが購入していた私の本の大量のコピーについて知らせました-最初は、それを私のフリーランスのコンサルティングサービスを販売する良い機会だと思っていました...;- )、私が後にギドに私たちに加わるように説得することができた方法、そして私は信じています
非常に初期のGoogle社員(Sergey、Larry、Craigなど)が優れたエンジニアリングの決定を下したため、すべてが始まったと私は信じています。「可能な場所ではPython、必要な場所ではC ++」-彼らは(のサブセット)を使用しました非常に低いレイテンシおよび/またはメモリの厳密な制御が重要であるソフトウェアスタックの部分のC ++、および他の部分のプログラムのより迅速な配信とメンテナンスを可能にするPython。当時、90年代後半、後者の役割の選択は基本的にPythonとPerlの間で行われていました。他のスクリプト言語は熟していない(たとえば、Rubyがまだ出回っていないと思います)か、他の問題と制限がありました。Perlは(特にCPANを介して使用可能なアドオンのエコシステムの点で)成熟していましたが、Pythonはより読みやすく、保守しやすいと見なされ、C ++ライブラリ(SWIGを介した)へのインターフェースはより簡単でした。
Javaは後に登場し、中間のニッチをカバーしました-そして最近ではもちろんGoが開発されました(ただし、まだ進化して成熟しているため、まだ多くの制作作業が行われているとは思いません)。sawzallなどのいくつかの特殊な言語も、非常に特殊なタスクのために混在しています。もちろん、JavaScriptはブラウザー側の作業にとって非常に重要です。
2006年にGregが言及した言語を含む他の言語は、「偶発的」であるか、または他の特定のタスク(iPhoneまたはMac上のクライアントのObjective Cなど)に使用されています。たとえば、Googleが最初のシステム管理者を雇ったとき、それらの従業員は必然的にPerlとBashの非常に強力な習熟を伴い、しばしばこれらの言語のいずれかを使用して複雑な内部システムを開発しました。それらをPythonで再コーディングする(デプロイと保守を容易にするため)ことがよくあります。他のもの(C#など)は、買収により一時的に混在している可能性がありますが、繰り返しになりますが、「主要なGoogle言語」の1つでの再コーディングは常に非常に優先度が高くなります(C#の場合、再コーディングは通常、ほとんどJavaで行われますが、 2つの言語は抽象化のレベルの点で類似した領域を扱っているため)。
私は記事全体を読んでいないので、それがどれほど代表的であるかわかりませんが、多分これはあなたの質問に答えます:GoogleでのPython。
わかりました。ほとんどは読みましたが、残念ながらそれほど洞察は得られませんが、興味深い記事であると思います。多分最も重要:
Googleでは、PythonはC ++およびJavaと並んで3つの「公用語」の1つです。ここでの公式とは、Google社員がこれらの言語を本番環境サービスにデプロイすることを許可されていることを意味します。(Googleの内部では、PHP、C#、Ruby、Perlなどの多くのテクノロジーを使用しています)。PythonはGoogleのエンジニアリングプロセスに最適です。Googleの典型的なプロジェクトは、小さなチーム(3人)と短い期間(3か月)です。
Pythonの作成者であるGuido van Rossumが2005年から2012年までGoogleで働いたことを忘れないでください;)
私もこの見積もりを見つけましたが、確認できません。
「Pythonは最初からGoogleの重要な部分であり、システムが成長し進化する間も変わりません。今日、何十人ものGoogleエンジニアがPythonを使用しており、この言語のスキルを持つ人をもっと探しています」
-Peter Norvig、 Googleの検索品質担当ディレクター
私はCPythonのパフォーマンスを向上させることを目的としたプロジェクトであるUnladen-Swallowについて読んでいました。ディスカッション掲示板を閲覧しているときに、このディスカッションに遭遇しました。CollinWinter (Googleの従業員およびPythonのコア開発者)は、Googleの従業員が新しいプロジェクトでPythonを使用することを控えているという主張に答えました。
まあ、単純な常識は、Googleのスケールで動作するときのPythonの適用性を制限することになります。JavaまたはC ++ほど高速ではなく、スレッド化が悪く、メモリ使用量が高いなどです。新しいシステムを設計するときに直面する設計上の制約の1つは、 「負荷が10倍または100倍になるとどうなりますか?新しいサービスがすばらしいと惑星全体が考えているとどうなりますか?」この制約を満たすことを困難にするテクノロジーは、Pythonはこのカテゴリーに分類されると思いますが、他のメリットを支持する非常に強力なケースがない場合は、落胆することになります。Pythonの長所と短所のバランスを取る必要があります。エンジニアはPythonを使用することで生産性が向上する可能性がありますが、ボリュームの増加に応じてプラットフォームレベルのパフォーマンス/スケーリングの制限を回避する必要がある場合、先に出ますか?等
簡潔さ==パワーというPaul Grahamの考えに同意した場合(つまり、言語Xでコードを10行で記述して、100行の言語Yを実行したことを達成できれば、私の言語はより強力になります)
最近のハードウェアは安く、食器は高価です。電池が含まれている傾向があるという理由だけで、他の言語よりも多くの、より速く、より良く、より明確にPythonで書くことができることを知っています。確かに遅いかもしれませんが、本当に.05秒と.0005秒の違いに気づくでしょうか。
より現実的な例では、Googleの開発者がガベージコレクションを心配する必要のないプログラムをPythonで記述し、X社がC ++でプログラムを記述し、メモリ割り当てに関連するバグの追跡に10%の時間を費やしている場合、 C ++ショップが残りのコードを同じくらい速く作成できたとしても、誰がより速く完了したと思いますか。
ですから、Pythonでコーディングすることは競争上の利点になると思います。