GoogleでのPythonの頻繁な使用[終了]


185

GoogleのPythonの多用、それは好みの問題なのか、それとも彼らに競争上の優位性を与えるのか?


21
これはコミュニティWikiである必要があります
AutomatedTester

72
アレックスマルテリが受け入れられた回答を間もなく受信します....
ChristopheD

4
実際、この答えは客観的に答えられると思います(Googleがどこでそれを使用するのかについての声明が出ているはずです;))
Felix Kling

15
@nomemory、「重い」はここではかなり正しい形容詞です(もちろん、確認のためにコードベースを確認する必要があります-PythonとJavaとC ++の量など-しかし、私それを見ることできます、そしてほとんど毎日Pythonに貢献しています;-)。そして質問は、IT業界のすべてではない-それが私たちの一部が持っていたグーグル、(非プログラマを含む)20,000従業員の会社、上特にですより良い、そのビューを形成して作用することから、「全体的なビューを持っています」それは私たちの仕事の中核部分です;-)。だから、私は再開することを投票しています。
Alex Martelli、2010

7
@ nomemory、Pythonカンファレンスには常に熱心なOracle採用担当者がいるので、Pythonがコードベースに「存在しない」ことを知って驚かれます(そうであれば、それらの採用担当者は嘘をついており、彼ら自身の時間とPythonistaを浪費しています) ;-)。とにかく、どのようにOracleとGoogleが競合している、本当に- ?)
アレックスマルテッリ

回答:


286

私が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つの言語は抽象化のレベルの点で類似した領域を扱っているため)。


@Alexおそらく正しく理解できなかったようですが、Googleはエンジニア(特に研究者)が大学で何年も過ごし、CまたはC ++だけを手にした人たち(これらの言語で始まり、ほとんどの人が終わったため)にオープンな環境を望んでいたようですそれにも)。ここで、pythonは強力な候補であり、C / C ++の巨大なlibへのインターフェースを提供します。
Ramiz Uddin


素晴らしい洞察!! 将来のGoogle社員を支援できます
kmario23

3
Levyの優れた本「In the 'Plex」を読んで私が収集した1つのヒントは、PythonがどのようにしてGoogleに入ったのかです(Googleと呼ばれる前は-backrubでした)。ラリーペイジは、当時の真新しいJava 1.0ベータ版でWebスクレイピング「スパイダー」を書いていたので、寮のルームメートが、より安定した堅実で生産的な言語で書き直すことでPythonを助けました。おもしろいことに、その「スパイダー」がなければ、Googleは存在しなかったかもしれません...
Alex Martelli

34

私は記事全体を読んでいないので、それがどれほど代表的であるかわかりませんが、多分これはあなたの質問に答えます: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の検索品質担当ディレクター


それは味の問題なのか、それとも競争上の優位性なのでしょうか。
Andrei Ciobanu 2010

4
@nomemory:多分両方?それはエンジニアリングプロセス(味)に適合します。そのため、製品を早く仕上げることができれば、彼らに利点をもたらす可能性があります。
Felix Kling

1
何十人ものエンジニアがPythonを使用していますか?グーグルと同じくらい大きい会社にとって、それはほとんど説得力のあるケースではありません。
Jason Baker

28

私はCPythonのパフォーマンスを向上させることを目的としたプロジェクトであるUnladen-Swallowについて読んでいました。ディスカッション掲示板を閲覧しているときに、このディスカッションに遭遇しました。CollinWinter (Googleの従業員およびPythonのコア開発者)Googleの従業員が新しいプロジェクトでPythonを使用することを控えているという主張に答えました。

まあ、単純な常識は、Googleのスケールで動作するときのPythonの適用性を制限することになります。JavaまたはC ++ほど高速ではなく、スレッド化が悪く、メモリ使用量が高いなどです。新しいシステムを設計するときに直面する設計上の制約の1つは、 「負荷が10倍または100倍になるとどうなりますか?新しいサービスがすばらしいと惑星全体が考えているとどうなりますか?」この制約を満たすことを困難にするテクノロジーは、Pythonはこのカテゴリーに分類されると思いますが、他のメリットを支持する非常に強力なケースがない場合は、落胆することになります。Pythonの長所と短所のバランスを取る必要があります。エンジニアはPythonを使用することで生産性が向上する可能性がありますが、ボリュームの増加に応じてプラットフォームレベルのパフォーマンス/スケーリングの制限を回避する必要がある場合、先に出ますか?等


20

簡潔さ==パワーというPaul Grahamの考えに同意した場合(つまり、言語Xでコードを10行で記述して、100行の言語Yを実行したことを達成できれば、私の言語はより強力になります)

最近のハードウェアは安く、食器は高価です。電池が含まれている傾向があるという理由だけで、他の言語よりも多くの、より速く、より良く、より明確にPythonで書くことができることを知っています。確かに遅いかもしれませんが、本当に.05秒と.0005秒の違いに気づくでしょうか。

より現実的な例では、Googleの開発者がガベージコレクションを心配する必要のないプログラムをPythonで記述し、X社がC ++でプログラムを記述し、メモリ割り当てに関連するバグの追跡に10%の時間を費やしている場合、 C ++ショップが残りのコードを同じくらい速く作成できたとしても、誰がより速く完了したと思いますか。

ですから、Pythonでコーディングすることは競争上の利点になると思います。


2
呪われたサイトのリデザイン!さて彼は代替リンクを持っているので、そこに行きます。
Wayne Werner

11
「あなたは本当に.5秒と.005秒の違いに気づくつもりですか?」あなたはグーグルコアサーチ、YouTubeやGmailで働いていませんね?
jwg 2013

5
Googleと同じくらい必要な場合、ハードウェアは安くはありません。
NGRhodes 14年

5
Pythonの優れている点は、パフォーマンスに大きな違いがある場合(例:495ミリ秒)、いくつかのC / C ++コードをプラグインできることです。Pythonを使用すると、迅速に開発し効率的に最適化できます。
Trevor

3
.5秒と.005秒の違いは、一方が目立ち、もう一方が目立たないことです。
チャーリーシュリーサー、2014
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.