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?
29
Odpowiedzi:
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:
źródło
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.
źródło
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.
źródło
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
źródło
„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ę.
źródło
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