Quali sono le possibilità che Google Go diventi un linguaggio tradizionale? [chiuso]


58

Chi sta imparando Go? Altre aziende stanno cercando di usarlo? È probabile che venga ampiamente utilizzato?


21
ruby diventa popolare dopo le rotaie, obiettivo-c dopo iphone, a che afterserve?
oh,

1
Terribile, non risolve nulla per la maggior parte delle persone.
Daniel Little,

6
Le probabilità sono tra 0 e 1. Qualunque cosa più specifica richiederebbe un dottorato in Prognostication, che non possiedo.
Rein Henrichs,

1
@Rein Henrichs - ne otterrai uno, anche se il comitato richiederà alcune modifiche alla tesi finale
Martin Beckett,

3
Google dovrebbe davvero prendere in considerazione lo sviluppo di un SDK Android per la lingua Go. Almeno come inizio.
setzamora,

Risposte:


46

Quando si tratta di linguaggi di programmazione, il vecchio adagio "non è chi sei, è chi conosci" è sicuramente vero. C e C ++ sono stati sponsorizzati da AT&T, Java ci è stato offerto da Sun, la famiglia .NET è uscita da Microsoft e tutti sono diventati molto popolari molto rapidamente. Poi abbiamo Objective-C e Python, che erano in circolazione da un po 'di tempo e sono rimasti davvero oscuri fino a quando non sono stati scoperti e pubblicizzati da Apple e Google, rispettivamente, e poi improvvisamente sono decollati. Ma le lingue senza un grande sponsor tendono a languire nell'oscurità, non importa quanto siano brave.

Go è sponsorizzato da Google. Non è difficile arrivare alla conclusione giusta qui. Dagli cinque anni e sarà enorme.


13
@ixtmixilix: sei serio? App Engine e GWT dicono diversamente.
imgx64,

4
@ixtmixilix - Guice (un framework IoC basato su Java) è scritto da Google e utilizzato nel front-end e in Wave di AdWords. Google Seam utilizza diverse lingue.
mlk,

3
+1 Sono d'accordo con il tuo argomento principale (FORTRAN, COBOL e C sono vivi e bene), ma non sono d'accordo su Go, perché è solo un esperimento lontano per avere sponsorizzazioni aziendali.
Apalala,

2
AT&T non ha davvero spinto C o C ++. C divenne popolare perché era il linguaggio di Unix, e in seguito perché era meglio di Pascal per programmi più grandi. Il C ++ è solo una specie di diffusione, secondo il libro di Stroustrup "Design and Evolution of C ++". In genere, le lingue hanno bisogno di un'app killer o di grandi sponsorizzazioni aziendali per colpirla in grande, ma le lingue possono colpirla in grande senza questo o mancarne.
David Thornley,

3
Sono passati cinque anni - cosa ne pensi adesso?
hippietrail,

17

In realtà non penso che Go avrà così tanto successo. Un motivo per cui non raggiungerà le grandi masse è che deve essere un linguaggio per la programmazione del sistema.


17
Non sono d'accordo. Dai un'occhiata al codice sorgente di Linux per 'echo', quindi dai un'occhiata all'implementazione Go di echo. Se il linguaggio è in grado di eliminare migliaia di righe da un semplice comando del genere, probabilmente può eliminare le righe da elementi come le librerie di elaborazione grafica. E se riesce a eliminare le linee dalle librerie di elaborazione grafica, forse le persone del software id (per esempio) un giorno lo troveranno più utile di C / C ++. E poiché id ha l'abitudine di rilasciare il codice sorgente per i suoi giochi, la grafica 3d in Go potrebbe essere enorme entro 5 anni.
ixtmixilix,

14
@ixtmixilix Linux non ha nulla a che fare con l'eco, questo è parte di GNU.
alternativa il

3
hai mai visto qualcosa scritto in Erlang? non è Dio orribile.
The Unix Janitor

2
Penso che Go supererà il C / C ++ come una lingua di sistema se il sistema operativo di Google decolla. Se il sistema operativo di Google non decolla, penso che sarà molto più difficile colpire il mainstream.
Jordan Parmer,

2
Più tardi penso che Go crescerà molto velocemente. I miei motivi: 1. La sintassi è abbastanza strana 2. Troppo Limbo 3. Libreria non esaustiva 4. Il modello di concorrenza è migliore su Erlang
Daniel Voina

15

C'è davvero bisogno di un linguaggio di sistema con funzionalità più moderne. C e C ++ sono troppo vincolati dal codice legacy e dalla retrocompatibilità qui per migliorare molto. Detto questo, non credo che Go svolga quel ruolo nella sua forma attuale. Il suo design è troppo minimalista. Mentre il suo modello di concorrenza è entusiasmante, porta poche altre funzionalità da linguaggi di livello superiore nel mondo dei sistemi. (L'ultima volta che ho controllato, che è stato un po 'di tempo fa, non aveva nemmeno eccezioni.) Inoltre, almeno nella misura in cui il Computer Language Benchmark Game è una buona misura (è certamente un indicatore molto approssimativo), non lo è quasi quanto un linguaggio di sistemi "reale" deve essere.

Credo che la lingua con le migliori possibilità per riempire il vuoto di un più moderno linguaggio di sistemi è D . D è tecnicamente molto più forte di Go ma politicamente più debole. Non è supportato da una grande azienda. Ciò di cui ha davvero bisogno sono alcune librerie (questo problema viene risolto rapidamente ora che le specifiche del linguaggio sono stabili) e un'app killer.


7
ri "non aveva nemmeno eccezioni" È stata presa una decisione importante - golang.org/doc/go_faq.html
user151019

1
@Mark: interessante. Panico e recupero sembrano eccezioni paralizzate. D ha dichiarazioni di ambito, che sono approssimativamente equivalenti a defer (), ma con normali eccezioni.
dsimcha,

3
Non ha eccezioni, ma non ne ha bisogno. Invece, consente più valori di ritorno, rendendo foo, err := SomeFunc()banale. Per problemi importanti o punti in cui err non funziona molto bene, puoi usare panic()e recover(). Tuttavia, questi sono intenzionalmente usati molto raramente; non c'è modo di passare eccezioni nello stack se lo stack è molto corto e gli stack corti sono all'ordine del giorno in cui ci sono molti thread simultanei.
crazy2be,

3
"D è tecnicamente molto più forte di Go", "Il suo design è troppo minimalista". Interessante come lo dici come se fosse un dato di fatto. È solo la tua opinione, affrontala.
Moshe Revah,

10

Sto imparando Go e sì, viene utilizzato in modo produttivo oltre a Google e Heroku.

Go è sicuramente un bel linguaggio per la programmazione del sistema. Codice semplice come in C, strutture potenti come in C ++ e funzionalità di sicurezza come in Java. Dal momento che è una lingua molto giovane sono state ereditate molte cose belle da altre lingue:

  • iterazione su intervalli
  • Canali (dimentica i mutex ecc.)
  • nessuna gerarchia di tipi, solo ereditarietà di interfaccia
  • infatti Go non conosce nemmeno le classi ma "Tipi" più flessibili: le interfacce vengono ereditate automaticamente quando i metodi definiti corrispondono
  • meno boilerplate: i := 1anziché int i = 1, func f(x, y, z int)invece di void f(int x, int y, int z), type Foo struct { a, b int }; bar := Foo{1, 2}anzichéclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
  • eccezioni ("panico") solo per casi davvero eccezionali: negli altri casi la funzione soggetta a errori può restituire un parametro di errore aggiuntivo che puoi facilmente ignorare

Considerando tutte queste belle cose e la sicurezza e le prestazioni conosciute solo da linguaggi tipicamente statici, molte persone della comunità delle lingue dinamiche hanno iniziato ad apprezzare Go. Nella maggior parte dei casi il codice Go non è molto più lungo del codice Ruby, ma in ogni caso più sicuro e strutturato meglio.

Ma alla fine immagino che l'argomento killer per Go sia la concorrenza. È un linguaggio di tipo C che ha un potente supporto di concorrenza che è noto solo dai linguaggi funzionali.


2
Di recente mi sono innamorato di Go mentre lo apprendevo per la programmazione di AppEngine, e non avrei potuto dirlo meglio di te. Molto bene.
Adam Crossland,

5

Direi che questo dipende principalmente dalle librerie / servizi / software che verranno creati in / per / usando Go. Le persone usano qualcosa in tre situazioni (l'ordine conta): quando praticamente non hanno altra opzione (Obiettivo-C), quando l'ambiente circostante lo usano (FORTRAN), quando rende più facile la loro vita (Ruby).


5

Potrebbe essere un po 'tardi per questo, ma Go sta diventando una lingua popolare ora e probabilmente entrerà nel mainstream con Google che lo spinge in avanti. Viene spinto come lingua utilizzata per sistemi e prodotti all'interno di Google e viene spinto come lingua da utilizzare con Google App Engine. Ci sono alcune persone molto acute sul backend di Go building e migliorarlo. Ci sono alcune persone molto intelligenti e fantasiose che lavorano su librerie di terze parti per Go.

Go riempie un vuoto che altre lingue non hanno ancora colmato. Per me, cercavo di riempire quel vuoto con Perl e un mucchio di soluzioni e trucchi. Non credo che sia il linguaggio perfetto per tutte le situazioni e tutte le persone, ma sicuramente è un candidato per un numero piuttosto elevato di situazioni. Ad esempio, funziona benissimo per le app Web e allo stesso tempo funziona perfettamente per le app desktop o le app basate su server. Fa un lavoro così fantastico con HTTP e WebSocket (il che significa che puoi saltare Apache o nginx del tutto) mentre funziona anche molto bene su Windows, Linux e OS X sia per i demoni che per le normali app desktop. In questo momento l'unica situazione in cui fallisce per me è per le app Android, che spero venga presto risolta. Lo uso per app desktop Windows, app desktop Linux e app Web basate su Linux.

Credo che passeranno diversi anni prima che colpisca davvero il mainstream, ma ci arriverà. Penso che debba creare più librerie di terze parti, proprio come il tipo di numero e selezione che Perl ha con CPAN. Ci arriverà.


3

Cosa significa comunque "mainstream"? Senza saperlo, è sempre così difficile rispondere a questa domanda. Diamo un'occhiata a quello.

Esistono molte definizioni possibili. Eccone alcuni:

Vista della gestione:

  • Chiedi ai clienti che ti richiedono di usarlo
  • Avere la gestione che richiede di usarlo
  • Non verrà criticato dalla direzione per averlo usato

Vista degli sviluppatori:

  • Strumenti linguistici comunemente disponibili (ad es. Nelle distribuzioni Linux)
  • Gli strumenti linguistici saranno comunemente disponibili per 10 anni
  • Crea artefatti software che persisteranno e verranno utilizzati per almeno 10 anni

Visione professionale:

  • Le competenze specifiche della lingua sono trasferibili ad altri lavori
    • I reclutatori lo richiedono

Alla luce di quanto sopra, direi che l'unica risposta onesta è probabilmente "troppo presto per dirlo", ma credo che il miglior indicatore di qualsiasi longevità reale sia il numero di piccoliimprese che usano la lingua. Le grandi organizzazioni stanno molto bene - potrebbero persino essere essenziali alla crescita di una lingua o di un sistema di strumenti a causa della portata degli investimenti che possono applicare - ma sono piuttosto inclini a passare mode (con poche eccezioni). Al contrario, se una piccola impresa si è costruita attorno all'uso della lingua per fornire prodotti e servizi, è molto probabile che desiderino contribuire a garantire che saranno ancora in grado di farlo in futuro. Costituiscono anche il fondamento di un forte mercato del lavoro nell'area e richiedono anche strumenti. Stranamente, questi sono diversi indicatori di integrità nella mia lista (forse di più, a seconda dei capricci della gestione).

Quindi, quante persone al di fuori di Google stanno usando Go per il loro lavoro? Non ne ho idea. (Non lo sono. Le mie esigenze sono attualmente ben servite da una miscela di Java, C e Tcl. YMMV.)


Grande sintesi di ciò che significa "mainstream". Penso che Go abbia tutto questo, ad eccezione di "i clienti richiedono che tu lo usi".
Wildcard il

2

È già più popolare di alcune lingue.

È possibile che Go sia la lingua più importante in oltre 20 anni. Presenta davvero grandi vantaggi in termini di enormi set di dati, che presentano siti di social media, cloud computing, ricerca e dispositivi mobili.

Siti come Facebook, Twitter, Linkedin, YouTube e le reti di annunci offrono molto più utilizzo per Google Go rispetto a Ruby On Rails, almeno in alcuni contesti.


1

Ho esaminato Go quando ne ho sentito parlare. Come principiante completo sto ancora imparando le lingue per principianti (nel mio caso Java, C #, Python e Scheme) che è molto da prendere in considerazione, ma se non fossi preso da così tante lingue diverse lo avrei preso seriamente in considerazione

Immagino al mio livello, non c'è nulla di male nel mettere le basi prima di saltare sui vagoni. Tuttavia, se ricordo bene, quando stavo guardando in alto Go, per qualche motivo sono diventato molto attratto da Erlang.


1

Ho appena guardato Go a causa di questa domanda, quindi non posso davvero commentare se decollerà come un linguaggio tradizionale, ma una cosa mi ha davvero entusiasmato:

http://golang.org/doc/go_spec.html#Channel_types

Ho scoperto per la prima volta il concetto di Canali in Occam-pi e devo dire che è uno dei migliori concetti di programmazione di sempre . Fa sembrare la concorrenza così facile dove a volte fare la stessa cosa in un linguaggio di tipo C può essere una seccatura.

Da quello che ho visto (nei 10 minuti che ho visto), Go sembra provare a combinare molti concetti di programmazione diversi, ma questo ha il rischio che sia un Jack di tutti i mestieri, un maestro di nessuno.


0

Ho il sospetto che se diventerà mainstream dipenderà dal fatto che Google lo adotti come linguaggio supportato per appengine e / o GWT.


2
In che modo una lingua di sistema sarebbe utile per Google App Engine?
ixtmixilix,

Direi che solo perché al momento è un linguaggio di sistema compilato per codice macchina non impedirebbe a Google di prendere di mira altre piattaforme in futuro. Guarda cosa hanno fatto con java, compilando JavaScript nel caso di GWT e tafgetting dalvik vm per Android. Allo stesso modo Facebook compilando PHP. Potrei immaginare un output di Go che potrebbe essere installato in appengine ad un certo punto in futuro.
Chris Buckett,

+1: l'importante è che sia utile per qualcosa. Guarda cosa ha fatto l'iPhone per Objective-C.

3
Bene, è appena successo . Ora vediamo se decolla ...
Elad

3
Per la cronaca, sto attualmente sviluppando un'applicazione Web ampia e ambiziosa sul runtime di AppEngine Go. Go è enormemente produttivo e veloce. Il codice è molto leggibile. È una lingua meravigliosa.
Adam Crossland,

0

Vorrei che Go diventasse popolare.

È potente nella sintassi. (Scopri i vantaggi di Python, C, Java). È buono per CPU multi-core. (Il canale funziona molto meglio della programmazione thread). Il design impedisce molte insidie ​​del programmatore. (puntatore errato, stesso stile di codifica dello strumento gofmt, prevenire bug variabile non inizializzato, per la prima volta, lo provo per la prima volta in quanto è Python + C ma con la velocità vicino a 1/2 della velocità di C.

Ma, dopo aver appreso a fondo, ho scoperto che potrebbe essere adatto a sviluppare la tolleranza agli errori e l'architettura scalabile

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.