La risposta corretta " perché diverse lingue hanno punti di forza diversi " è già stata dichiarata. Ma lascia che ti fornisca ulteriori dettagli sul perché:
C ++
C ++ ha il vantaggio principale di essere il più veloce del lotto. Non necessario perché Java e Python sono lenti, ma poiché in C ++ hai più controllo su come le cose vengono eseguite.
Ad esempio, se si sta scrivendo un frontend di servizi Web e si richiede una latenza inferiore a 30 ms, è possibile ottimizzare il codice C ++ per ottenere tali prestazioni. In un linguaggio gestito come Java è molto più difficile far cooperare perfettamente il GC.
C ++ è usato per un sacco di "Google magic" come BigTable, MapReduce e goo di ricerca.
Java
Per la maggior parte delle applicazioni standard, Java è un linguaggio perfettamente raffinato. È dotato di ottimi strumenti, molte librerie esistenti e non molto tempo per il debugging.
Java è usato per molti siti web più grandi che sarebbero molto più difficili 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 Toolkit Web di Google per compilare il codice Java in JavaScript. In modo che la fantastica pagina web o il widget che vedi possa aver avuto inizio come classe Java.
Python
Python è un fantastico linguaggio generico, ma non offre un controllo tanto dettagliato quanto persino Java. (Per esempio, ci sono molti tipi di argomenti JVM pazzi per cose - Python offre una configurazione simile?)
Tuttavia, con Python è perfettamente adatto per semplici siti Web e applicazioni che altrimenti sarebbero script di shell orribili. Ad esempio, se si volesse scrivere una semplice testcase per raccogliere dati da alcune fonti, elaborarle e caricarle su App Engine Python sarebbe una buona scelta. (Se dovessi distribuire quell'elaborazione su 1.000 macchine, forse potresti usare 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 Google Closure .
La lingua non importa (interop)
Un altro motivo per cui Google non usa solo una lingua è che non è necessario. Ci sono strutture in quasi tutti i linguaggi di programmazione moderni da chiamare in librerie esterne, librerie che possono essere scritte in una lingua diversa. (Vedi swig .)
Inoltre, poiché App Engine esegue la JVM, è possibile eseguire qualsiasi linguaggio che compaia in codice byte Java. (In Google ci atteniamo principalmente alle lingue menzionate qui, ma non è un requisito rigoroso.) Se si desidera utilizzare Closure, Groovy o Scala su App Engine se si includono i file JAR corretti, tutto dovrebbe funzionare.
Open-Source
Inoltre, Google utilizza e contribuisce a molte Open-Source ove possibile. Questi progetti di solito sono scritti in una delle lingue sopra e richiedono che vengano "usati" su Google.
La linea di fondo sono due cose:
- Ogni linguaggio di programmazione ha i suoi punti di forza. Non approfittare di questi punti di forza per la situazione sarebbe un peccato.
- La disponibilità di toolkit di interoperabilità e runtime compatibili significa che è meno doloroso utilizzare più lingue nello stesso ambiente di runtime.