web-dev-qa-db-ja.com

Googleでのプログラミング言語の使用

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

29
Joshua Partogi

正しい答えは「異なる言語には異なる長所があるためです」はすでに述べられています。しかし、その理由についてもう少し詳しく説明します。

C++

C++には、最も高速であるという主な利点があります。 JavaとPythonは遅いため必要ありませんが、C++ではより多くの制御があるためhow物事が実行されます。

たとえば、30ミリ秒未満のレイテンシを必要とするWebサービスフロントエンドを作成している場合は、C++コードを調整してそのパフォーマンスを実現できます。 Javaのようなマネージ言語では、GCを完全に連携させるのは少し難しいです。

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

Java

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

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

また、GoogleのWebツールキットを使用して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つの理由は、使用する必要がないことです。現代のほとんどすべてのプログラミング言語には、外部ライブラリ(異なる言語で記述されている可能性があるライブラリ)を呼び出すための機能があります。 ( swig を参照してください。)

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

オープンソース

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

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

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

たぶん、1つの言語でさまざまなタスクを適切に完了するのに十分ですが、言語によって、長所、短所、能力が異なります。

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

17
StuperUser

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

Pythonは、自動化スクリプトの記述に使用される場合があります。
複雑なアルゴリズムを実装するためのC++(インデクサー、クローラー、マップリデュース、ビッグテーブル)
Webサービス、WebアプリなどのJava.

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

9
Sorantis

PythonはサポートWebサイトで使用されています このページ はpythonスクリプトによって生成され、Javaライブラリを使用しますWebアプリケーションの場合、GWTとJava App Engineでのサポート

私は彼らがグーグルアースまたはデスクトップアプリケーション一般にC++を使用していると思います

3
Mahmoud Hossam

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

2

彼らはネイティブのMacとiPhoneのアプリケーションも書き、それらはObjective-Cにある。その理由は簡単です。APIはObjective-Cにあります。

0
user4051