Programmazione dell'uso del linguaggio su Google [chiuso]


29

Ho sentito che Google utilizza Python, Java e C ++. Ma quello che non so è come viene usato ciascuno di quei linguaggi di programmazione. Voglio dire che cos'è Google Python, Java e C ++. Perché avrebbero usato fino a 3 linguaggi di programmazione quando 1 lingua è sufficiente. Qualcuno lo sa?


16
Inoltre, hai dimenticato Vai.
cbrandolino,

22
Se una lingua è sufficiente, perché esiste Python, C ++ o Java? Tutti potremmo semplicemente usare il linguaggio Assembly per il processore in esecuzione sui nostri sistemi.
Lazzaro,

Dire che una lingua è sufficiente è come dire che un tipo di legno è sufficiente, rispetteresti un falegname che aveva lavorato solo in pino, ma mai acero o quercia?
Zaccaria K,

Inoltre, hai dimenticato Sawzall labs.google.com/papers/sawzall.html
Chirone il

1
Hanno usato java Controlla questo reddit.com/r/google/comments/3sdx3b/…
Elshan,

Risposte:


97

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.

Dalla tua spiegazione significa che GMail usa GWT?
Joshua Partogi,

1
Google sta attualmente utilizzando Python anche per le applicazioni Web.
Raffaello,

Il prominente googler Alex Martelli spiega "Python dove possiamo, C ++ dove dobbiamo"
Peter M. - sta per Monica il

17
1 language is enough

Forse una lingua è sufficiente per completare adeguatamente una serie di compiti diversi, ma lingue diverse hanno diversi punti di forza, debolezza e capacità.

Dal momento che Google molto probabilmente programma per un gran numero di situazioni diverse è un caso di cavalli per corsi, lo strumento migliore per il lavoro.


4
+1, utilizzando lo strumento migliore per il lavoro. Attualmente sto lavorando su una singola applicazione desktop che utilizza 3 linguaggi di programmazione (oltre a vari linguaggi di markup e database). Vicino alle cose metal con C ++, l'applicazione principale con Java e alcuni Jython qua e là per una facile personalizzazione. Ha senso prendere il meglio dei tre mondi, IMO :-)
Joonas Pulakka,


9

Queste tre lingue sono utilizzate per scopi diversi.

Python potrebbe essere usato per scrivere script di automazione.
C ++ per l'implementazione di algoritmi complessi (Indexer, Crawler, Map-Reduce, Big Table)
Java per servizi Web, app Web, ecc.

Questi sono solo i miei presupposti.


In Python implementerei algoritmi complessi, non estremamente critici per le prestazioni.

3

Python è usato per il loro sito Web di supporto, puoi vedere che questa pagina è generata da uno script python, usano le librerie java per le applicazioni web, quindi il supporto GWT e java nel motore dell'app

Penso che usano C ++ per google earth o per applicazioni desktop in generale


2

"1 lingua è sufficiente" può essere vero solo se ogni progetto che fai è di un tipo specifico. E per alcuni progetti, anche C ++ Java e Python non sono gli strumenti migliori. Inoltre, conoscere solo una lingua è una caratteristica distintiva del povero programmatore.


0

Scrivono anche applicazioni native per Mac e iPhone, e quelle sono in Objective-C. Il motivo per cui lo fanno è semplice: le API sono in Objective-C.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.