Chi sta imparando Go? Altre aziende stanno cercando di usarlo? È probabile che venga ampiamente utilizzato?
Chi sta imparando Go? Altre aziende stanno cercando di usarlo? È probabile che venga ampiamente utilizzato?
Risposte:
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.
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.
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.
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.
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:
i := 1
anziché 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);
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.
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).
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à.
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:
Vista degli sviluppatori:
Visione professionale:
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.)
È 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.
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.
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.
Ho il sospetto che se diventerà mainstream dipenderà dal fatto che Google lo adotti come linguaggio supportato per appengine e / o GWT.
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
after
serve?