Googleでのプログラミング言語の使用[終了]


29

GoogleはPython、Java、C ++を使用していると聞きました。しかし、私が知らないのは、これらのプログラミング言語のそれぞれがどのように使用されているかです。Googleで使用されているPython、Java、C ++は何ですか。1つの言語で十分なのに、なぜ最大3つのプログラミング言語を使用したのでしょうか。誰か知っていますか?


16
また、Goを忘れました。
cbrandolino

22
1つの言語で十分な場合、なぜPython、C ++、またはJavaがあるのでしょうか?システムが実行しているプロセッサにアセンブリ言語を使用することもできます。
ラザロ

1つの言語で十分だと言うのは、1種類の木材で十分だと言うようなものです。パインでしか働いていなかったが、カエデやオークは決して使っていない大工を尊敬しますか?
ザカリーK


1
彼らはjavaを使用しましたreddit.com/r/google/comments/3sdx3b/…を
Elshan

回答:


97

言語ごとに長所が異なるためという正解はすでに述べられています。ただし、その理由について詳しく説明します。

C ++

C ++には、最も速いという主な利点があります。必要のないJavaとPythonのが遅いので、しかし、C ++で、あなたは持っているので、より多くの制御についてどのようなものが実行されますが。

たとえば、待ち時間が30ミリ秒未満のWebサービスフロントエンドを記述している場合、C ++コードを調整してそのパフォーマンスを実現できます。Javaのようなマネージ言語では、GCを完全に連携させるのは少し難しくなります。

C ++は、BigTable、MapReduce、検索gooなど、多くの「Googleマジック」に使用されます。

Java

ほとんどの標準アプリケーションでは、Javaは完全に素晴らしい言語です。優れたツール、多くの既存のライブラリを備えており、デバッグに多くの時間を費やしていません。

Javaは、CやC ++のような低レベルの言語で維持するのがはるかに難しい多くの大きなWebサイトに使用されます。たとえば、私の理解では、GMailはJavaで記述されています。

また、GoogleのWeb Toolkitを使用してJavaコードをJavaScriptにコンパイルできることに注意してください。そのため、表示される素晴らしいWebページまたはウィジェットは、Javaクラスとして始まりました。

Python

Pythonは素晴らしい汎用言語ですが、Javaほど細かく制御することはできません。(たとえば、あらゆる種類のクレイジーなJVM引数があります-Pythonは同様の構成を提供しますか?)

ただし、Pythonを使用すると、そうでなければ恐ろしいシェルスクリプトになるような単純なWebサイトやアプリケーションに最適です。たとえば、いくつかのソースからデータを収集する簡単なテストケースを作成し、それらを処理して、App Engine Pythonにアップロードしたい場合に適しています。(ただし、その処理を1,000台のマシンに分散する必要がある場合は、おそらく別の言語を使用できます...)

JavaScript

明らかにGoogleは多くのJavaScriptを使用しています。ただし、Googleで記述されたJavaScriptのタイプは、実際に見られるものとは異なります。Googleは、最適化と静的チェックの改善と引き換えに、コメント内に注釈を作成できる最適化JavaScriptコンパイラを開発しました。Google Closureをご覧ください。

言語は関係ない(相互運用性)

Googleが1つの言語だけを使用しないもう1つの理由は、Google がその必要がないことです。ほとんどすべての最新のプログラミング言語には、外部ライブラリを呼び出すための機能があります。外部ライブラリは、異なる言語で作成されたライブラリです。(swigを参照してください。)

また、App EngineはJVMを実行するため、Javaバイトコードにコンパイルされる任意の言語を実行できます。(Googleでは、ここで述べた言語に主に固執しますが、これは厳しい要件ではありません。)App EngineでClosure、Groovy、またはScalaを使用する場合、適切なJARファイルを含めるとすべてが正常に機能します。

オープンソース

また、Googleは可能な限り多くのオープンソースを使用し、貢献しています。これらのプロジェクトは通常、上記の言語のいずれかで作成されており、Googleで「使用」する必要があります。

一番下の行は2つのことです:

  • すべてのプログラミング言語には独自の長所があります。状況に応じてこれらの長所を利用しないのは残念です。
  • 相互運用ツールキットと互換性のあるランタイムが利用できるということは、同じランタイム環境内で複数の言語を使用するのが簡単であることを意味します。

あなたの説明から、GMailがGWTを使用しているということですか?
ジョシュアパルトギ

1
Googleは現在、Webアプリケーションにもpythonを使用しています。
ラファエル

著名なGoogle社員のアレックスマルテリは、 「できるPython、必要なC ++」
Peter M.-Monicaの略称

17
1 language is enough

おそらく、1つの言語で多数の異なるタスクを適切に完了することができますが、言語ごとに長所、短所、および能力が異なります。

グーグルはおそらく多くの異なる状況のためにプログラムするので、仕事に最適なツールであるコース用の馬の場合です。


4
+1、仕事に最適なツールを使用します。現在、3つのプログラミング言語(およびさまざまなマークアップ言語とデータベース言語)を使用する単一のデスクトップアプリケーションで作業しています。C ++を使用した金属、Javaを使用したメインアプリケーション、およびカスタマイズが簡単なJythonをあちこちに配置します。IMOの3つすべての世界のベストをとることは理にかなっています:
ジョナスプラッカ


9

これらの3つの言語は異なる目的に使用されます。

Pythonを使用して自動化スクリプトを作成できます。
複雑なアルゴリズムを実装するためのC ++。(Indexer、Crawler、Map-Reduce、Big Table)
Webサービス、WebアプリなどのJava。

これらは私の仮定にすぎません。


Pythonで複雑なアルゴリズムを実装します-非常にパフォーマンスが重要ではありません。

3

サポートWebサイトにはPythonが使用されています。このページはPythonスクリプトによって生成され、WebアプリケーションにはJavaライブラリを使用しているため、アプリエンジンでGWTとJavaがサポートされていることがわかります。

Google Earthやデスクトップアプリケーション全般に​​C ++を使用していると思います


2

「1言語で十分です」は、あなたが行うすべてのプロジェクトが特定の種類のものである場合にのみ当てはまります。また、一部のプロジェクトでは、C ++ JavaとPythonでさえ最良のツールではありません。さらに、1つの言語のみを知っていることは、貧しいプログラマーの際立った特徴です。


0

ネイティブのMacおよびiPhoneアプリケーションも作成し、Objective-Cにあります。その理由は簡単です。APIはObjective-Cにあります。

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