Memprogram penggunaan bahasa di Google [ditutup]

29

Saya pernah mendengar Google menggunakan Python, Java, dan C ++. Tapi yang saya tidak tahu adalah bagaimana masing-masing bahasa pemrograman itu digunakan. Maksud saya untuk apa Python, Java dan C ++ digunakan di Google. Mengapa mereka menggunakan hingga 3 bahasa pemrograman bila 1 bahasa sudah cukup. Adakah yang tahu

Joshua Partogi
sumber
16
Anda juga lupa Go.
cbrandolino
22
Jika satu bahasa sudah cukup, mengapa ada Python, C ++ atau Java sama sekali? Kita semua bisa menggunakan bahasa Majelis untuk prosesor yang sedang dijalankan sistem kami.
Lazarus
Mengatakan satu bahasa saja sudah cukup seperti mengatakan satu jenis kayu saja sudah cukup, apakah Anda akan menghormati seorang tukang kayu yang hanya bekerja di Pine, tetapi tidak pernah maple atau oak?
Zachary K
Selain itu, Anda lupa Sawzall labs.google.com/papers/sawzall.html
Chiron
1
Mereka menggunakan java. Periksa reddit.com/r/google/comments/3sdx3b/…
Elshan

Jawaban:

97

Jawaban yang benar " karena bahasa yang berbeda memiliki kekuatan yang berbeda " telah dinyatakan. Tapi izinkan saya memberikan beberapa detail tentang alasannya:

C ++

C ++ memiliki keunggulan utama sebagai yang tercepat dari yang banyak. Tidak perlu karena Java dan Python lambat, tetapi karena di C ++ Anda memiliki lebih banyak kontrol tentang bagaimana hal-hal dijalankan.

Misalnya, jika Anda menulis antarmuka layanan web yang memerlukan latensi kurang dari 30 ms, Anda dapat menyetel kode C ++ untuk mencapai kinerja itu. Dalam bahasa yang dikelola seperti Jawa, agak sulit untuk membuat GC bekerja sama dengan sempurna.

C ++ digunakan untuk banyak 'Google magic' seperti BigTable, MapReduce, dan search goo.

Jawa

Untuk sebagian besar aplikasi standar, Java adalah bahasa yang sangat baik. Ini fitur alat yang hebat, banyak perpustakaan yang ada, dan tidak banyak waktu yang dihabiskan untuk debugging.

Java digunakan untuk banyak situs web yang lebih besar yang akan lebih sulit dipertahankan dalam bahasa tingkat rendah seperti C atau C ++. Sebagai contoh, pemahaman saya adalah bahwa GMail ditulis dalam Java.

Juga, perhatikan bahwa Anda dapat menggunakan Google Web Toolkit untuk mengkompilasi kode Java ke dalam JavaScript. Sehingga laman web atau widget keren yang Anda lihat mungkin sudah mulai hidup sebagai kelas Java.

Python

Python adalah bahasa tujuan umum yang fantastis, tetapi tidak menawarkan banyak kontrol yang halus seperti halnya Java. (Misalnya, ada segala macam argumen JVM gila untuk hal-hal - apakah python menawarkan konfigurasi yang sama?)

Namun, dengan Python sangat cocok untuk situs web dan aplikasi sederhana yang seharusnya menjadi skrip shell yang mengerikan. Misalnya, jika Anda ingin menulis testcase sederhana untuk mengumpulkan data dari beberapa sumber, memprosesnya, dan mengunggahnya ke App Engine Python akan menjadi pilihan yang baik. (Jika Anda perlu mendistribusikan pemrosesan itu di 1.000 mesin, mungkin Anda bisa menggunakan bahasa yang berbeda ...)

JavaScript

Jelas Google menggunakan banyak JavaScript. Namun, jenis JavaScript yang ditulis di Google berbeda dari yang Anda lihat di alam bebas. Google telah mengembangkan kompiler JavaScript pengoptimalan yang memungkinkan Anda membuat anotasi dalam komentar dengan imbalan optimasi yang lebih baik dan pemeriksaan statis. Lihat Google Penutupan .

Bahasa Tidak Masalah (interop)

Alasan lain mengapa Google tidak menggunakan hanya satu bahasa adalah karena tidak perlu. Ada fasilitas di hampir setiap bahasa pemrograman modern untuk memanggil ke perpustakaan eksternal, perpustakaan yang dapat ditulis dalam bahasa yang berbeda. (Lihat tegukan .)

Juga, karena App Engine menjalankan JVM Anda dapat menjalankan bahasa apa pun yang dikompilasi ke kode byte Java. (Di Google kami terutama berpegang pada bahasa yang disebutkan di sini, tetapi ini bukan persyaratan yang sulit.) Jika Anda ingin menggunakan Closure, Groovy, atau Scala di App Engine jika Anda memasukkan file JAR yang tepat, semuanya seharusnya hanya berfungsi.

Sumber Terbuka

Juga, Google menggunakan dan berkontribusi pada banyak Sumber Terbuka jika memungkinkan. Proyek-proyek ini biasanya ditulis dalam salah satu bahasa di atas dan mengharuskannya untuk 'digunakan' di Google.

Intinya adalah dua hal:

  • Setiap bahasa pemrograman memiliki kekuatannya sendiri. Tidak mengambil keuntungan dari kekuatan-kekuatan ini secara situasional akan memalukan.
  • Ketersediaan toolop interop dan runtimes yang kompatibel berarti bahwa kurang menyakitkan untuk menggunakan beberapa bahasa dalam lingkungan runtime yang sama.
Chris Smith
sumber
Dari penjelasan Anda, apakah itu berarti GMail menggunakan GWT?
Joshua Partogi
1
Google saat ini menggunakan python untuk aplikasi web juga.
Raphael
Googler Terkemuka Alex Martelli menjelaskan "Python di mana kita bisa, C ++ di mana kita harus"
Peter M. - singkatan dari Monica
17
1 language is enough

Mungkin satu bahasa sudah cukup untuk menyelesaikan sejumlah tugas berbeda secara memadai, tetapi bahasa yang berbeda memiliki kekuatan, kelemahan, dan kemampuan yang berbeda.

Karena google kemungkinan besar memprogram untuk sejumlah besar situasi yang berbeda, ini adalah kasus kuda untuk kursus, alat terbaik untuk pekerjaan itu.

StuperUser
sumber
4
+1, Menggunakan alat terbaik untuk pekerjaan itu. Saat ini saya sedang mengerjakan aplikasi desktop tunggal yang menggunakan 3 bahasa pemrograman (ditambah berbagai bahasa markup dan basis data). Dekat dengan hal-hal logam dengan C ++, aplikasi utama dengan Java, dan beberapa Jython di sana-sini untuk kustomisasi yang mudah. Masuk akal untuk mengambil yang terbaik dari ketiga dunia, IMO :-)
Joonas Pulakka
9

Tiga bahasa ini digunakan untuk tujuan yang berbeda.

Python dapat digunakan untuk menulis skrip otomatisasi.
C ++ untuk mengimplementasikan algoritma yang kompleks. (Indexer, Crawler, Map-Reduce, Big Table)
Java untuk layanan web, aplikasi web, dll.

Ini hanya asumsi saya saja.

Sorantis
sumber
Saya akan mengimplementasikan algoritma yang kompleks - tidak terlalu kritis terhadap kinerja - dengan Python.
3

Python digunakan untuk situs web dukungan mereka, Anda dapat melihat bahwa halaman ini dihasilkan oleh skrip python, mereka menggunakan pustaka java untuk aplikasi web, karenanya GWT dan dukungan java di engine aplikasi

Saya pikir mereka menggunakan C ++ untuk google earth, atau untuk aplikasi desktop secara umum

Mahmoud Hossam
sumber
2

"1 bahasa sudah cukup" hanya bisa benar jika setiap proyek yang Anda lakukan adalah dari jenis tertentu. Dan untuk beberapa proyek, bahkan C ++ Java dan Python bukanlah alat terbaik. Selain itu, mengetahui hanya satu bahasa adalah fitur yang membedakan programmer yang buruk.

Eldritch Conundrum
sumber
0

Mereka juga menulis aplikasi Mac dan iPhone asli, dan itu ada di Objective-C. Alasan mereka melakukan itu sederhana: API ada di Objective-C.


sumber