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
29
Jawaban:
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:
sumber
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.
sumber
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.
sumber
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
sumber
"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.
sumber
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