Google’da programlama dili kullanımı [kapalı]


29

Google’ın Python, Java ve C ++ kullandığını duydum. Ama bilmediğim şey, bu programlama dilinin her birinin nasıl kullanıldığı. Yani, Python, Java ve C ++ Google'da kullanılıyor. 1 dil yeterli olduğunda neden 3 programlama dilini kullandılar? Kimse biliyor mu?


16
Ayrıca, Go'yu unuttun.
cbrandolino

22
Bir dil yeterliyse, neden Python, C ++ veya Java var? Assembly dili hepimiz sistemlerimizin çalıştığı işlemci için kullanabiliriz.
Lazarus

Bir dilin yeterli olduğunu söylemek, bir tür odunun yeterli olduğunu söylemek gibi bir şeydir, yalnızca Çam'da çalışan ama hiçbir zaman akçaağaç veya meşe yapmamış bir marangoza saygı gösterir misiniz?
Zachary K

Ayrıca, Sawzall'ı
Chiron

1
Java kullanıyorlardı Bu reddit.com/r/google/comments/3sdx3b/…
Elshan

Yanıtlar:


97

Doğru cevap " çünkü farklı dillerin farklı güçlü yönleri var " zaten belirtildi. Ama neden hakkında daha fazla ayrıntı vereyim:

C ++

C ++, en hızlı olmanın ana avantajına sahiptir. Gerekli değil Java ve Python yavaş olduğu için, ancak C ++ Eğer var çünkü daha fazla kontrol hakkında nasıl işler idam.

Örneğin, 30 ms'den az gecikme gerektiren bir web servisleri ön yüzü yazarsanız, bu performansı elde etmek için C ++ kodunu ayarlayabilirsiniz. Java gibi yönetilen bir dilde, GC'nin mükemmel bir şekilde işbirliği yapması biraz zor.

C ++, BigTable, MapReduce ve goo gibi pek çok Google büyüsü için kullanılır.

Java

Çoğu standart uygulama için, Java mükemmel bir dildir. Harika araçlar, birçok mevcut kitaplık ve hata ayıklama için çok fazla zaman harcamaz.

Java, C veya C ++ gibi daha düşük bir dilde bakımı çok daha zor olacak birçok büyük web sitesi için kullanılır. Örneğin, benim anladığım kadarıyla GMail Java ile yazılmış.

Ayrıca, Java kodunu JavaScript'te derlemek için Google'ın Web Araç Seti'ni kullanabileceğinizi unutmayın. Böylece gördüğünüz harika web sayfası veya widget bir Java sınıfı olarak hayata başlamış olabilir.

piton

Python fantastik bir genel amaç dilidir, ancak Java kadar ince taneli kontrol sunmaz. (Örneğin, her şey için çılgınca JVM argümanları var - python benzer bir yapılandırma sunuyor mu?)

Ancak, Python ile basit web siteleri ve aksi takdirde korkunç kabuk betikleri olacak uygulamalar için mükemmel bir şekilde uygundur. Örneğin, bazı kaynaklardan veri toplamak için basit bir test çantası yazmak, bunları işlemek ve App Engine Python'a yüklemek istemeniz iyi bir seçim olacaktır. (Bu işlemi 1000 makineye dağıtmanız gerekirse, belki de farklı bir dil kullanabilirsiniz ...)

JavaScript

Açıkçası Google çok fazla JavaScript kullanıyor. Ancak, Google’da yazılmış olan JavaScript türü, vahşi doğada gördüğünüzden farklıdır. Google, daha iyi optimizasyon ve statik kontrol karşılığında yorumlarda açıklama ekleyebilmenizi sağlayan optimize edici bir JavaScript derleyici geliştirmiştir. Google Kapatma bölümüne bakın .

Dil Önemli değil (birlikte çalışma)

Google’ın yalnızca bir dili kullanmamasının bir başka nedeni de gerek duymamasıdır. Hemen hemen her modern programlama dilinde dış kütüphanelere, farklı bir dilde yazılmış kütüphanelere çağrı yapma imkânları var. ( Swig'e bakınız .)

Ayrıca, App Engine JVM'yi çalıştırdığından, Java bayt koduna uyan herhangi bir dili çalıştırabilirsiniz. (Google’da öncelikle burada belirtilen dillere bağlıyız, ancak bu zor bir gereklilik değil.) Eğer her şeyin çalışması gereken doğru JAR dosyalarını eklerseniz, App Engine'de Closure, Groovy veya Scala kullanmak istiyorsanız.

Açık kaynak

Ayrıca, Google mümkün olan yerlerde bir sürü Açık Kaynak kullanıyor ve katkıda bulunuyor. Bu projeler genellikle yukarıdaki dillerden birinde yazılmıştır ve Google'da 'kullanılmasını' gerektirir.

Alt satırda iki şey var:

  • Her programlama dilinin kendine göre güçlü yönleri vardır. Durumsal olarak faydalanmamak, bu güçlü yönlerden yararlanmak bir utanç olacaktır.
  • Birlikte çalışma araç takımları ve uyumlu çalışma zamanları mevcut olması, aynı çalışma ortamı ortamında birden fazla dil kullanmanın daha az acı verici olduğu anlamına gelir.

Açıklamanıza göre, GMail GWT kullanıyor mu?
Joshua Partogi

1
Google şu anda web uygulamaları için python kullanıyor.
Raphael

Tanınmış Google çalışanı Alex Martelli açıklıyor "Biz, C biz gereken ++ nereye nereye Python"
Peter M. - Monica açılımı

17
1 language is enough

Belki bir dil yeterli sayıda farklı görevi tamamlamak için yeterlidir, ancak farklı dillerin farklı güçlü yönleri, zayıf yönleri ve yetenekleri vardır.

Google, muhtemelen çok sayıda farklı durum için program yaptığından, bu, kurslar için bir at, iş için en iyi araçtır.


4
+1, iş için en iyi aracı kullanma. Şu anda 3 programlama dili (ayrıca çeşitli biçimlendirme ve veritabanı dilleri) kullanan tek bir masaüstü uygulaması üzerinde çalışıyorum . C ++ ile metal öğelere, Java ile ana uygulama ve burada ve orada bazı Jython kolay özelleştirme için kapatın. IMO :-)
Joonas Pulakka,


9

Bu üç dil farklı amaçlar için kullanılır.

Python, otomasyon komut dosyalarını yazmak için kullanılabilir.
C ++ karmaşık algoritmalar uygulamak için. (İndeksleyici, Paletli, Harita Azaltma, Büyük Tablo)
Web servisleri, web uygulamaları için Java.

Bunlar sadece benim varsayımlarım.


Python'da karmaşık algoritmalar (aşırı derecede kritik performans değil) uygulardım.

3

Python destek web siteleri için kullanılır, bu sayfanın bir python betiği tarafından oluşturulduğunu görebilirsiniz, web uygulamaları için java kütüphaneleri kullanırlar, bu nedenle GWT ve java desteği uygulama motorunda

Sanırım google earth veya genel olarak masaüstü uygulamaları için C ++ kullanıyorlar.


2

"1 dil yeterli" ancak yaptığınız her projenin belirli bir türden olması durumunda doğru olabilir. Bazı projeler için, C ++ Java ve Python bile en iyi araç değildir. Ayrıca, yalnızca bir dili bilmek, zayıf programcının ayırt edici bir özelliğidir.


0

Yerel Mac ve iPhone uygulamaları da yazıyorlar ve bunlar Objective-C'de. Bunu yapmalarının nedeni basit: API'ler Objective-C'dedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.