it-swarm.it

Programmazione dell'uso del linguaggio su Google

Ho sentito che Google usa Python, Java e C++. Ma ciò che non so è come viene usato ciascuno di quei linguaggi di programmazione. Voglio dire cos'è Python, Java e C++ sono usati per Google. Perché dovrebbero usare fino a 3 linguaggi di programmazione quando 1 lingua è sufficiente. Qualcuno lo sa?

29
Joshua Partogi

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 maggiore controllo about how le cose vengono eseguite.

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++ viene utilizzato per un sacco di "magia di Google" come BigTable, MapReduce e Search Goo.

Java

Per la maggior parte delle applicazioni standard, Java è un linguaggio perfettamente funzionante. Presenta 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 Java in JavaScript. In modo che la pagina Web o il widget fantastici che vedi potrebbero aver iniziato come Java classe.

Python

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 altrimenti sarebbero orribili script Shell. Ad esempio, se desideri scrivere una semplice testcase per raccogliere dati da alcune fonti, elaborali, e caricarli su App Engine Python sarebbe una buona scelta. (Se avessi bisogno di 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 di ottimizzazione che consente di creare annotazioni nei commenti in cambio di migliori ottimizzazioni e controllo statico. Vedi Chiusura di Google .

La lingua non conta (interop)

Un altro motivo per cui Google non usa solo una 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 swig .)

Inoltre, poiché App Engine esegue la JVM, puoi eseguire qualsiasi lingua che compili in Java Java. (Su 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.
97
Chris Smith
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.

17
StuperUser

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.

9
Sorantis

Python è usato per il loro sito Web di supporto, puoi vedere che Questa pagina è generato da uno python, usano Java per le applicazioni Web, da cui GWT e Java nel motore dell'app

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

3
Mahmoud Hossam

"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.

2

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.

0
user4051