Wykorzystanie języka programowania w Google [zamknięte]

29

Słyszałem, że Google używa Python, Java i C ++. Ale nie wiem, w jaki sposób używany jest każdy z tych języków programowania. Mam na myśli, do czego służy Google, Python, Java i C ++. Dlaczego mieliby używać do 3 języków programowania, skoro wystarczy jeden język? Czy ktoś wie?

Joshua Partogi
źródło
16
Zapomniałeś też Go.
cbrandolino
22
Jeśli wystarczy jeden język, dlaczego w ogóle jest Python, C ++ lub Java? Wszyscy moglibyśmy po prostu użyć języka asemblera dla procesora, w którym działają nasze systemy.
Łazarz
Mówienie, że wystarczy jeden język, jest jak powiedzenie, że wystarczy jeden rodzaj drewna, czy szanowałbyś stolarza, który pracował tylko w Pine, ale nigdy nie klon lub dąb?
Zachary K
Zapomniałeś także Sawzall labs.google.com/papers/sawzall.html
Chiron
1
Używali java Sprawdź ten reddit.com/r/google/comments/3sdx3b/...
Elshan

Odpowiedzi:

97

Prawidłowa odpowiedź „ ponieważ różne języki mają różne mocne strony ” została już podana. Ale pozwól mi podać więcej szczegółów na temat tego, dlaczego:

C ++

Główną zaletą C ++ jest to, że jest najszybszy z całej serii. Nie jest to konieczne, ponieważ Java i Python działają wolno, ale ponieważ w C ++ masz większą kontrolę nad sposobem wykonywania zadań.

Na przykład, jeśli piszesz frontend usług internetowych, który wymaga opóźnienia mniejszego niż 30 ms, możesz dostroić kod C ++, aby osiągnąć tę wydajność. W języku zarządzanym, takim jak Java, trudniej jest uzyskać doskonałą współpracę GC.

C ++ jest używany do wielu „magii Google”, takich jak BigTable, MapReduce i goo wyszukiwania.

Jawa

W przypadku większości standardowych aplikacji Java jest całkowicie dobrym językiem. Zawiera świetne narzędzia, wiele istniejących bibliotek i niewiele czasu poświęcanego na debugowanie.

Java jest używana w wielu większych witrynach, które byłyby o wiele trudniejsze do utrzymania w języku niższego poziomu, takim jak C lub C ++. Na przykład rozumiem, że Gmail jest napisany w Javie.

Pamiętaj też, że możesz użyć Google Web Toolkit do skompilowania kodu Java w JavaScript. Tak więc ta niesamowita strona internetowa lub widżet, które widzisz, mogły rozpocząć życie jako klasa Java.

Pyton

Python jest fantastycznym językiem ogólnego przeznaczenia, ale nie oferuje tak precyzyjnej kontroli, jak nawet Java. (Na przykład istnieją różne szalone argumenty JVM dotyczące różnych rzeczy - czy python oferuje podobną konfigurację?)

Jednak z Python doskonale nadaje się do prostych stron internetowych i aplikacji, które w przeciwnym razie byłyby okropnymi skryptami powłoki. Na przykład, jeśli chcesz napisać prostą walizkę testową do zbierania danych z niektórych źródeł, dobrze je przetworz i prześlij do App Engine Python. (Jeśli jednak chcesz rozpowszechniać to przetwarzanie na 1000 komputerów, być może możesz użyć innego języka ...)

JavaScript

Oczywiście Google używa dużo JavaScript. Jednak rodzaj kodu JavaScript napisanego w Google różni się od tego, co widzisz na wolności. Google opracowało optymalizujący kompilator JavaScript, który umożliwia konstruowanie adnotacji w komentarzach w zamian za lepszą optymalizację i sprawdzanie statyczne. Zobacz zamknięcie Google .

Język nie ma znaczenia (interop)

Innym powodem, dla którego Google nie używa tylko jednego języka, jest to, że nie musi. W prawie każdym nowoczesnym języku programowania znajdują się urządzenia do wywoływania bibliotek zewnętrznych, bibliotek, które mogą być napisane w innym języku. (Zobacz swig .)

Ponadto, ponieważ App Engine obsługuje JVM, można uruchomić dowolny język kompilujący się do kodu bajtowego Java. (W Google trzymamy się przede wszystkim wymienionych tutaj języków, ale nie jest to trudne wymaganie). Jeśli chcesz używać Closure, Groovy lub Scala w App Engine, jeśli podasz odpowiednie pliki JAR, wszystko powinno po prostu działać.

Otwarte źródło

Ponadto Google używa i przyczynia się do wielu Open-Source, tam gdzie to możliwe. Projekty te są zwykle napisane w jednym z powyższych języków i wymagają „wykorzystania” w Google.

Najważniejsze jest dwie rzeczy:

  • Każdy język programowania ma swoje mocne strony. Wstrzymanie się w sytuacji skorzystanie z tych mocnych stron byłoby wstydem.
  • Dostępne zestawy narzędzi do współpracy i kompatybilne środowiska wykonawcze oznaczają, że używanie wielu języków w tym samym środowisku wykonawczym jest mniej bolesne.
Chris Smith
źródło
Czy z twojego wyjaśnienia oznacza to, że Gmail korzysta z GWT?
Joshua Partogi
1
Google używa obecnie Pythona również do aplikacji internetowych.
Raphael
Wybitny Googler Alex Martelli wyjaśnia „Python, gdzie możemy, C ++, gdzie musimy”
Peter M. - oznacza Monikę
17
1 language is enough

Być może jeden język wystarcza do odpowiedniego wykonania szeregu różnych zadań, ale różne języki mają różne mocne strony, słabości i zdolności.

Ponieważ Google najprawdopodobniej programuje się w wielu różnych sytuacjach, chodzi o konie na kursy, najlepsze narzędzie do pracy.

StuperUser
źródło
4
+1, używając najlepszego narzędzia do pracy. Obecnie pracuję nad jedną aplikacją komputerową, która używa 3 języków programowania (plus różne języki znaczników i baz danych). Blisko do metalowych rzeczy z C ++, głównej aplikacji z Javą i trochę Jython tu i tam dla łatwego dostosowania. Warto wziąć to, co najlepsze ze wszystkich trzech światów, IMO :-)
Joonas Pulakka
9

Te trzy języki są używane do różnych celów.

Python może być używany do pisania skryptów automatyzacji.
C ++ do implementacji złożonych algorytmów (indeksator, przeszukiwacz, redukcja mapy, duża tabela)
Java dla usług internetowych, aplikacji internetowych itp.

To tylko moje założenia.

Sorantis
źródło
Wdrożę złożone algorytmy - niezbyt krytyczne pod względem wydajności - w Pythonie.
3

Python jest używany na ich stronie wsparcia, widać, że ta strona jest generowana przez skrypt Pythona, używają bibliotek Java dla aplikacji internetowych, stąd wsparcie GWT i Java w silniku aplikacji

Myślę, że używają C ++ do Google Earth lub ogólnie do aplikacji komputerowych

Mahmoud Hossam
źródło
2

„Wystarczy 1 język” może być prawdziwe tylko wtedy, gdy każdy projekt, który wykonujesz, jest określonego rodzaju. W przypadku niektórych projektów nawet C ++ Java i Python nie są najlepszymi narzędziami. Ponadto znajomość tylko jednego języka jest cechą wyróżniającą biednego programistę.

Eldritch Conundrum
źródło
0

Piszą także natywne aplikacje na Maca i iPhone'a, a te są w Objective-C. Powód, dla którego to robią, jest prosty: interfejsy API są w Objective-C.


źródło