La risposta corretta " perché lingue diverse hanno punti di forza diversi " è già stata dichiarata. Consentitemi di fornire ulteriori dettagli sul perché:
C ++
Il C ++ ha il vantaggio principale di essere il più veloce del lotto. Non necessario perché Java e Python sono lenti, ma perché in C ++ hai un maggiore controllo su come vengono eseguite le cose.
Ad esempio, se si sta scrivendo un frontend per servizi Web che richiede una latenza inferiore a 30 ms, è possibile ottimizzare il codice C ++ per ottenere tali prestazioni. In un linguaggio gestito come Java è un po 'più difficile far cooperare perfettamente il GC.
Il C ++ è usato per un sacco di "magia di Google" come BigTable, MapReduce e search goo.
Giava
Per la maggior parte delle applicazioni standard, Java è un linguaggio perfetto. È dotato di ottimi strumenti, molte librerie esistenti e non molto tempo dedicato al debug.
Java viene utilizzato per molti siti Web più grandi che sarebbe molto più difficile da mantenere in un linguaggio di livello inferiore come C o C ++. Ad esempio, la mia comprensione è che GMail è scritto in Java.
Inoltre, tieni presente che puoi utilizzare il Web Toolkit di Google per compilare il codice Java in JavaScript. Quindi quella fantastica pagina web o widget che vedi potrebbe aver iniziato la sua vita come una classe Java.
Pitone
Python è un linguaggio fantastico per tutti gli usi, ma non offre un controllo così preciso come anche Java. (Ad esempio, ci sono molti tipi di argomenti JVM pazzi per le cose - Python offre una configurazione simile?)
Tuttavia, con Python è perfettamente adatto per semplici siti Web e applicazioni che sarebbero altrimenti orribili script di shell. Ad esempio, se si desidera scrivere un semplice testcase per raccogliere dati da alcune fonti, elaborarli e caricarli su App Engine Python sarebbe una buona scelta. (Se fosse necessario distribuire tale elaborazione su 1.000 macchine, tuttavia, è possibile utilizzare una lingua diversa ...)
JavaScript
Ovviamente Google utilizza molto JavaScript. Tuttavia, il tipo di JavaScript scritto su Google è diverso da quello che vedi in natura. Google ha sviluppato un compilatore JavaScript ottimizzante che consente di creare annotazioni nei commenti in cambio di migliori ottimizzazioni e controllo statico. Vedi la chiusura di Google .
La lingua non conta (interoperabilità)
Un altro motivo per cui Google non utilizza una sola lingua è che non è necessario. Ci sono strutture in quasi tutti i moderni linguaggi di programmazione per chiamare in librerie esterne, librerie che possono essere scritte in una lingua diversa. (Vedi il sorso ).
Inoltre, poiché App Engine esegue JVM, è possibile eseguire qualsiasi lingua compilata in codice byte Java. (In Google ci atteniamo principalmente alle lingue menzionate qui, ma questo non è un requisito difficile.) Se vuoi usare Closure, Groovy o Scala su App Engine se includi i file JAR giusti, tutto dovrebbe funzionare.
Open-Source
Inoltre, Google utilizza e contribuisce a molti open-source, ove possibile. Questi progetti di solito sono scritti in una delle lingue sopra e richiede che sia "utilizzato" da Google.
La linea di fondo è due cose:
- Ogni linguaggio di programmazione ha i suoi punti di forza. Non approfittare situalmente di questi punti di forza sarebbe un peccato.
- La disponibilità di toolkit di interoperabilità e di runtime compatibili significa che è meno doloroso utilizzare più lingue all'interno dello stesso ambiente di runtime.