Quem aqui está aprendendo o Go? Outras empresas estão procurando usá-lo? É provável que seja amplamente utilizado?
Quem aqui está aprendendo o Go? Outras empresas estão procurando usá-lo? É provável que seja amplamente utilizado?
Respostas:
Quando se trata de linguagens de programação, o velho ditado "não é quem você é, é quem você conhece" definitivamente é verdadeiro. C e C ++ foram patrocinados pela AT&T, o Java foi trazido a nós pela Sun, a família .NET saiu da Microsoft e todos eles se tornaram muito populares muito rapidamente. Depois, temos o Objective-C e o Python, que estavam por aí por um bom tempo e permaneceram muito obscuros até serem descobertos e sensacionalizados pela Apple e pelo Google, respectivamente, e de repente eles realmente decolaram. Mas os idiomas sem um grande patrocinador tendem a definhar na obscuridade, por melhores que sejam.
O Go é patrocinado pelo Google. Não é difícil chegar à conclusão correta aqui. Dê cinco anos e será enorme.
Na verdade, acho que o Go não terá tanto sucesso. Uma razão pela qual não alcançará as grandes massas é que ele se destina a ser uma linguagem para a programação do sistema.
Existe uma necessidade real de uma linguagem de sistemas com recursos mais modernos. C e C ++ são muito limitados pelo código legado e pela compatibilidade com versões anteriores aqui para melhorar muito. Dito isto, acho que o Go não cumpre esse papel em sua forma atual. Seu design é muito minimalista. Embora seu modelo de concorrência seja empolgante, ele traz poucos outros recursos de linguagens de nível superior para o mundo dos sistemas. (A última vez que verifiquei, reconhecidamente há algum tempo, nem sequer havia exceções.) Além disso, pelo menos na medida em que o Jogo de benchmark de linguagem de computador é uma boa medida (é reconhecidamente um indicador muito grosseiro), não é quase tão rápido quanto uma linguagem de sistemas "real" precisa ser.
Eu acho que a língua com a melhor chance para preencher o vazio de uma linguagem de sistemas mais moderno é D . D é tecnicamente muito mais forte que Go, mas politicamente mais fraco. Não é apoiado por uma grande corporação. O que ele realmente precisa é de algumas bibliotecas (isso está sendo resolvido rapidamente agora que a especificação da linguagem é estável) e um aplicativo matador.
foo, err := SomeFunc()
comum. Para problemas importantes ou pontos em que errar não funciona muito bem, você pode usar panic()
e recover()
. No entanto, estes são usados intencionalmente muito raramente; não há como passar exceções na pilha se a pilha for muito curta, e pilhas pequenas são comuns onde há muitos encadeamentos simultâneos.
Estou aprendendo o Go e, sim, ele é usado produtivamente além do Google e do Heroku.
Go é definitivamente uma linguagem agradável para a programação do sistema. Código simples como em C, estruturas poderosas como em C ++ e recursos de segurança como em Java. Como é uma linguagem muito jovem, muitas coisas legais de outras línguas foram herdadas:
i := 1
vez de int i = 1
, em func f(x, y, z int)
vez de void f(int x, int y, int z)
, em type Foo struct { a, b int }; bar := Foo{1, 2}
vez declass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
Considerando todas essas coisas legais e a segurança e o desempenho conhecidos apenas em idiomas tipicamente estatísticos, muitas pessoas da comunidade de idiomas dinâmicos começaram a gostar do Go. Na maioria dos casos, o código Go não é muito mais longo que o código Ruby, mas em todos os casos mais seguro e melhor estruturado.
Mas, no final, acho que o argumento principal para o Go é a simultaneidade. É uma linguagem do tipo C que possui um poderoso suporte de simultaneidade conhecido apenas em linguagens funcionais.
Eu diria que isso depende principalmente das bibliotecas / serviços / software que serão criados no / para / usando o Go. As pessoas usam algo em três situações (a ordem importa): quando praticamente não têm outra opção (Objective-C), quando o ambiente a utiliza (FORTRAN), quando facilita a vida (Ruby).
Pode ser um pouco tarde para isso, mas o Go está se tornando um idioma popular agora e provavelmente entrará no mainstream, com o Google avançando. Ele está sendo enviado como um idioma usado para sistemas e produtos no Google e está sendo enviado como um idioma para uso com o Google App Engine. Existem pessoas muito afiadas no back-end do edifício Go e aprimorando-o. Existem pessoas muito inteligentes e imaginativas trabalhando em bibliotecas de terceiros para o Go.
Go preenche um vazio que outros idiomas ainda não preencheram. Para mim, eu costumava tentar preencher esse vazio com o Perl e várias soluções e truques. Não acredito que seja a linguagem perfeita para todas as situações e para todas as pessoas, mas certamente é candidata a um grande número de situações. Por exemplo, funciona muito bem para aplicativos da Web e também funciona para aplicativos de desktop ou baseados em servidor. Ele faz um trabalho fantástico com HTTP e WebSocket (o que significa que você pode ignorar completamente o Apache ou o nginx) enquanto também executa muito bem no Windows, Linux e OS X para os daemons e para aplicativos de desktop comuns. No momento, a única situação que falha para mim é para aplicativos Android, que espero que seja remediada em breve. Eu o uso para aplicativos de área de trabalho do Windows, aplicativos de área de trabalho Linux e aplicativos da Web baseados em Linux.
Acredito que levará vários anos até que realmente chegue ao mainstream, mas chegará lá. Eu acho que ele precisa ter mais bibliotecas de terceiros construídas, bem como o tipo de número e seleção que o Perl tem com o CPAN. Vai chegar lá.
O que significa "mainstream", afinal? Sem saber disso, é muito difícil responder a essa pergunta. Vamos dar uma olhada nisso.
Existem muitas definições possíveis. Aqui estão alguns:
Visão de gerenciamento:
Visão dos desenvolvedores:
Visão profissional:
Dado todo o exposto, eu argumentaria que a única resposta honesta é provavelmente "muito cedo para contar", mas acredito que o melhor indicador de qualquer longevidade real é o número de pequenosempresas que usam o idioma. As grandes organizações estão muito bem - elas podem até ser essenciais para o crescimento de um idioma ou sistema de ferramentas devido à escala de investimento que podem aplicar - mas são propensas a passar modas (com algumas exceções). Por outro lado, se uma pequena empresa se desenvolver usando o idioma para fornecer produtos e serviços, é provável que queiram contribuir para garantir que ainda poderão fazê-lo no futuro. Eles também formam a base de um forte mercado de trabalho na área e também exigem ferramentas. Engraçado, esses são vários indicadores de mainstreamidade na minha lista (possivelmente mais, dependendo dos caprichos da gerência).
Então, quantas pessoas fora do Google estão usando o Go no trabalho? Eu não faço ideia. (Não estou. Atualmente, minhas necessidades são bem atendidas por uma mistura de Java, C e Tcl. YMMV.)
Já é mais popular que alguns idiomas.
É possível que Go seja a língua mais importante em mais de 20 anos. Realmente apresenta alguns grandes benefícios em termos de conjuntos de dados massivos, que os sites de mídia social, computação em nuvem, Pesquisa e Dispositivos Móveis apresentam.
Sites como Facebook, Twitter, Linkedin, YouTube e redes de veiculação de anúncios têm muito mais uso do Google Go do que o Ruby On Rails, pelo menos em alguns contextos.
Eu olhei para o Go quando soube disso. Como iniciante completo, ainda estou aprendendo as linguagens iniciantes (no meu caso, Java, C #, Python e Scheme), o que é muito difícil de entender, mas se eu não estivesse absorto em tantas linguagens diferentes, teria considerado seriamente
Eu acho que no meu nível, não há mal algum em entender o básico antes de pular em bandwagons. Embora, se bem me lembro, quando estava olhando para Go, fiquei muito atraído por Erlang por algum motivo.
Eu apenas olhei para o Go por causa dessa pergunta, então não posso realmente comentar se ele decolará como um idioma convencional, mas uma coisa me deixou realmente empolgado:
http://golang.org/doc/go_spec.html#Channel_types
Eu me deparei com o conceito de Canais no Occam-pi e devo dizer que é um dos melhores conceitos de programação de todos os tempos . Faz a simultaneidade parecer tão fácil, onde fazer a mesma coisa em uma linguagem do tipo C às vezes pode ser uma dor.
Pelo que vi (nos 10 minutos que olhei), o Go parece estar tentando combinar muitos conceitos de programação diferentes, mas isso corre o risco de ser um Jack de todos os negócios, um mestre de nenhum.
Suspeito que se ele se torne mainstream dependerá de o Google adotá-lo como um idioma suportado para appengine e / ou GWT.
Eu gostaria que o Go se tornasse popular.
É poderoso na sintaxe. (Aprenda as vantagens de python, C, Java). É bom para CPU multi-core. (O canal funciona muito melhor do que a programação de threads). O design evita a armadilha de muitos programadores. (ponteiro errado, mesmo estilo de codificação por tool gofmt, evita erros variáveis não inicializados. Na primeira vez, eu tento na primeira vez, pois é python + C, mas com uma velocidade próxima a 1/2 da velocidade de C.
Mas, depois de aprender profundamente, achei adequado desenvolver tolerância a falhas e arquitetura escalável
after
para ir?