Google banyak menggunakan Python, apakah itu hanya masalah selera atau apakah itu memberi mereka keunggulan kompetitif?
Google banyak menggunakan Python, apakah itu hanya masalah selera atau apakah itu memberi mereka keunggulan kompetitif?
Jawaban:
Saya benar-benar tidak dapat memberikan jawaban yang pasti, karena pada saat saya wawancara di Google pada tahun 2004, Python sudah menonjol di Google.
Memang, ada satu penjelasan yang tampaknya menarik yang bisa saya tolak: bukan karena Google menggunakan Python karena mempekerjakan begitu banyak Pythonistas terkemuka - melainkan, kebanyakan Google "Pythonista" googler bergabung dengan Google, setidaknya sebagian, karena kami tahu tentang keunggulan Python. di sana (kemungkinan pengecualian termasuk Peter Norvig dan Jeremy Hylton, tetapi secara historis Google memilih Python bahkan sebelum mereka).
Itulah mengapa saya pertama kali tertarik (penerbit saya memberi tahu saya tentang jumlah besar buku saya yang dibeli Google - pada awalnya, saya menganggapnya sebagai kesempatan yang baik untuk menjual layanan konsultasi lepas saya ...; - ), bagaimana saya kemudian dapat meyakinkan Guido untuk bergabung dengan kami, dan, saya percaya, bagian dari motivasi untuk Pythonista seperti Greg Stein, Wesley Chun, Fredrik Lundh, Thomas Wouters, Collin Winters, Jeffrey Yasskin, ...
Semuanya dimulai, saya percaya, karena Google yang paling awal (Sergey, Larry, Craig, ...) membuat keputusan rekayasa yang baik: "Python di mana kita bisa, C ++ di mana kita harus" - mereka menggunakan (subset dari) C ++ untuk bagian-bagian tumpukan perangkat lunak di mana latensi yang sangat rendah dan / atau kontrol memori yang ketat sangat penting, dan Python, memungkinkan pengiriman dan pemeliharaan program yang lebih cepat, untuk bagian-bagian lain. Pada saat itu, akhir tahun 90-an, pilihan untuk peran yang terakhir pada dasarnya adalah antara Python dan Perl: bahasa skrip lain belum matang (misalnya, saya kira Ruby belum ada, misalnya) atau memiliki masalah dan keterbatasan lainnya. Perl lebih dewasa (terutama dalam hal ekosistem add-on yang tersedia melalui CPAN), tetapi Python dianggap lebih mudah dibaca dan dipelihara, dan berinteraksi dengan perpustakaan C ++ (melalui SWIG) lebih mudah.
Jawa datang kemudian, mencakup ceruk antara - dan baru-baru ini tentu saja Go dikembangkan (meskipun saya belum percaya ada banyak pekerjaan produksi di dalamnya, karena masih berkembang dan semakin matang). Beberapa bahasa khusus seperti sawzall juga dalam campuran untuk tugas yang sangat spesifik, dan tentu saja Javascript sangat penting untuk pekerjaan sisi browser.
Bahasa lain, termasuk yang disebutkan Greg pada '06, bisa "kebetulan" atau digunakan untuk tugas spesifik lainnya (mis., Objective C untuk klien di iPhone atau Mac) - misal, ketika Google menyewa administrator sistem pertamanya , para karyawan itu mau tidak mau datang dengan penguasaan Perl dan Bash yang sangat kuat, dan sering menggunakan salah satu dari bahasa itu untuk mengembangkan beberapa sistem internal yang kompleks; pengodean ulang orang-orang di Python (untuk penyebaran dan pemeliharaan lebih mudah) telah sering terjadi. Lainnya (seperti C #) mungkin telah berada dalam campuran sementara karena akuisisi, tetapi, sekali lagi, pengodean ulang dalam salah satu "bahasa Google utama" selalu menjadi prioritas yang cukup tinggi (dalam kasus C #, pengodean ulang biasanya akan sebagian besar di Jawa, karena kedua bahasa tersebut membahas bidang yang sama dalam hal tingkat abstraksi).
Saya belum membaca keseluruhan artikel dan saya tidak tahu seberapa representatifnya tapi mungkin ini menjawab pertanyaan Anda: Python di Google .
Ok saya membaca sebagian besar, sayangnya memberikan tidak bahwa banyak wawasan tapi saya pikir itu masih sebuah artikel menarik. Mungkin yang paling penting:
Di Google, python adalah salah satu dari 3 "bahasa resmi" bersama dengan C ++ dan Java. Resmi di sini berarti bahwa Googler diizinkan untuk menggunakan bahasa-bahasa ini ke layanan produksi. (Secara internal orang Google menggunakan banyak teknologi termasuk PHP, C #, Ruby dan Perl). Python sangat cocok untuk proses rekayasa di Google. Proyek khas di Google memiliki tim kecil (3 orang) dan durasi pendek (3 bulan).
Tidak lupa bahwa Guido van Rossum pencipta Python bekerja untuk Google dari 2005-2012;)
Saya juga menemukan kutipan ini tetapi saya tidak dapat memverifikasinya:
"Python telah menjadi bagian penting dari Google sejak awal, dan tetap demikian ketika sistem tumbuh dan berkembang. Saat ini puluhan insinyur Google menggunakan Python, dan kami sedang mencari lebih banyak orang dengan keterampilan dalam bahasa ini"
- Peter Norvig, Direktur Kualitas Pencarian di Google
Saya membaca tentang Unladen-Swallow , sebuah proyek yang bertujuan untuk meningkatkan kinerja CPython. Saat menjelajah melalui papan diskusi mereka, saya menemukan diskusi ini , di mana Collin Winter (karyawan Google dan pengembang inti Python) menjawab klaim bahwa karyawan Google tidak disarankan menggunakan Python untuk proyek baru :
Nah, akal sehat sederhana akan membatasi penerapan Python ketika beroperasi pada skala Google: itu tidak secepat Java atau C ++, threading sucks, penggunaan memori lebih tinggi, dll. Salah satu kendala desain yang kita hadapi ketika merancang sistem baru adalah, "Apa yang terjadi ketika beban naik 10x atau 100x? Apa yang terjadi jika seluruh planet berpikir layanan baru Anda hebat?" Setiap teknologi yang membuat memuaskan kendala itu lebih sulit - dan saya pikir Python termasuk dalam kategori ini - harusberkecil hati jika tidak memiliki kasus yang sangat kuat yang mendukungnya pada kelebihan lainnya. Anda harus menyeimbangkan kekuatan Python dengan kelemahannya: teknisi Anda mungkin lebih produktif menggunakan Python, tetapi jika mereka harus bekerja di sekitar lebih banyak kinerja tingkat platform / pembatasan skala dengan meningkatnya volume, apakah Anda unggul? dll.
Jika Anda berlangganan ide Paul Graham yang ringkas == kekuatan (yaitu Jika saya dapat menulis kode dalam bahasa X dalam 10 baris untuk mencapai apa yang Anda ambil 100 baris bahasa Y, bahasa saya lebih kuat)
Perangkat keras akhir-akhir ini murah, daging mahal . Saya tahu bahwa saya dapat menulis lebih banyak, lebih cepat, lebih baik DAN lebih jelas dalam Python daripada yang saya dapat dalam bahasa lain, hanya karena baterai cenderung disertakan. Tentu, ini mungkin lebih lambat tetapi apakah Anda benar-benar akan melihat perbedaan antara 0,05 detik dan 0,0005 detik?
Dalam contoh yang lebih nyata, jika pengembang Google menulis sebuah program dengan Python di mana mereka tidak perlu khawatir tentang pengumpulan sampah, dan Perusahaan X menulis sebuah program dalam C ++ dan mereka menghabiskan 10% dari waktu mereka melacak bug yang berkaitan dengan alokasi memori, tebak siapa yang selesai lebih cepat - bahkan jika toko C ++ berhasil menulis kode mereka dengan cepat.
Jadi ya, saya akan mengatakan itu adalah keunggulan kompetitif untuk kode dalam Python.