Breve introdução à Linguagem de Programação Go
Enviado por MDK (mdkcoreΘgmail·com):
“Uma nova linguagem de programação está disponível sob a licença BSD, a Go, sendo que foi desenvolvida por nada menos nada mais: o Google. Advinda da família das liguagens C, e com elementos de Python, ela nasce para tampar o vão de pouca evolução no campo das linguagens de programação nesta última década, uma vez que os computadores tiveram melhorias gigantes em seu desempenho, porém os ambientes de desenvolvimento continuaram praticamente estagnados.
Abaixo encontra-se uma breve introdução à mesma, desde sua instalação até um simples código de exemplo. Breve introdução à Linguagem de Programação Go” [referência: thecoreme.org]
E o Marcelo Cavalcanti avisa sobre a polêmica do nome da linguagem.
• Publicado por Augusto Campos em
2009-11-13
“porém os ambientes de desenvolvimento continuaram praticamente estagnados.”
Descordo plenamente!
descorda é?
Depende do que ele considera ambiente de desenvolvimento. Hoje existe tanto Framework bom.
Existem ótimos frameworks hoje em dia.
Mas todos eles usam linguagens com conceitos antigos e um pouco limitados.
Essa nova linguagem tem foco em facilidade de programação, desempenho e escalabilidade em ambiente multi-core, como é o mundo hoje em dia.
Alguém ai já fez multi-threading usando C#, C, C++ ou outra linguagem qualquer?
Quem já fez, sabe o nível de dificuldade.
E algué ai já teve problemas de gerenciamento de memória em programas multi-threading? Eu já tive e tenho.
Uma linguagem compilada, com garbage collector é tudo de bom. E com o mesmo desempenho do C então, nem se fala.
E olha que a linguagem mal saiu, já temos entendidos.
@kayo
Hehehe.
http://golang.org
Tá tudo lá. Ontem a noite eu já compilei algumas coisas aqui, e realmente gostei do que vi.
Mas no meu caso, estou longe de ser um “entendido” nela. Afinal, compilei meu primeiro programa ontem nela.
Mas ler o site já me deu um panorama geral bem legal. Foi sobre ele que eu escrevi ai em cima.
André Luis Pereira (Xara),
Java é multi-threading por natureza, tem garbage collector e seu byte-code é compilado em tempo de execução pela JVM.
@André Felício, E…?
Sou programador Java, e já fui de Delphi.
Quando era programador Delphi, surgiu um boato de uma linguagem chamada Java. Será que ela “pegaria”?
Pois bem, acho muito ruim o programador de “apaixonar” por uma linguagem e morrer abraçado à ela. Não estou dizendo que Java morreu, longe disso.
Mas ficar com a mentalidade presa à uma linguagem, não é legal.
Ruby, JRuby, Python, Go.., tantas opções.
Claro que meu ganha pão é Java.
Mas já foi Delphi.
Como já mostra a Teoria do Tio Darwin: “evolução é adaptção”
Abraços.
Que saudades do Clipper Summer 87… to brincando, não tenho saudades não. Foi só uma piada para descontrair.
Ah, e aprendi a programar com o Clipper Summer 87! :D
Venho aqui me desculpar pelo não aprofundamento do artigo e algumas gafes/más espressões utilizadas no texto. Minha intenção era fazer algo melhor, mas por alguns motivos acabei fazendo um “how-to” de instalação e alguns problemas enfrentados (já até resolvidos nas últimas atualizações da mesma). Foi ai que adicionei o “breve” ao texto :p
Em breve farei um artigo falando realmente sobre a linguagem, mas ao ter certo domínio sobre a mesma…
Abraços a todos!
Tem milhares de linguagens de programação ai, todas com suas evoluções e implementações (java via GCJ, C++0x, Python, Ruby, Erlang, etc…).
Mas ai o google anuncia uma linguagem com um design **pobre** (parece AWK) e cheia de “mais do mesmo”, adiciona o rótulo na caixa dizendo “by Google, for you” e o mundo fica completamente eufórico!!
Acordem.
Eu aprendi no “BASIC in ROM” do Tk85… to ficando velho.
Também não vi o que essa linguagem tem de tão revolucionario que outras não possuem. Antes ele tivesse colaborado com o Python ou com outra linguagem.
Li a primeira parte do “cursinho” lá no golang.org e até gostei.
O que não consigo entender é o porquê de querer mudar coisas só para ficar diferente e nada mais, sem nenhuma vantagem. A linguagem é uma evolução do C e tem um monte em comum, então por que é que não deixam igual elementos de sintaxe, parênteses, ponto-e-vírgulas, essas coisas, e só alteram o que realmente interessa na funcionalidade? Para que mudar esses detalhezinhos que afinal só importam para o programador? Afinal, a idéia não é facilitar a minha vida, e não a do compilador?
@André Felício
Java tem tudo isso, mas roda sobre a JVM. A tal nova linguagem do Google é compilada e roda em cima do OS diretamente.
Velocidades recordes são conseguidas assim.
Ou seja, tem garbage collector e ainda por cima é compilada e não precisa de VM.
@Programador Procrastinador
Você leu alguma coisa no site oficial? Viu o que ela faz e como ela funciona, fora como é design dela?
Se não tem uma IDE/RAD para desenvolvimento de interface gráfica facilitada então é mais do mesmo.
Bom, como ainda não apareceram muitas pessoas sensatas por aqui, e como no momento estou com um pouco de tempo livre, vamos lá…
Primeiro um pouco de história. Um dos principais arquitetos da linguagem Go é o Rob Pike, que pra quem não conhece, é um dos criadores do UNIX e do Plan 9. Pra quem não conhece o Plan 9, ele já tem um compilador C próprio há anos, que inclusive já acrescenta algumas coisas à linguagem. O Rob Pike também trabalhou em outro sistema muito bom chamado Inferno, que tem uma linguagem chamada Limbo.
O que é a linguagem Go? É uma evolução dos projetos anteriores do Rob Pike. Se vocês derem uma olhada no código fonte do compilador, vão ver que uma grande parte dos códigos são provenientes do Plan9 e do Inferno. Só que a Google se interessou pelo negócio, e deixou o Rob Pike desenvolver essa linguagem junto com alguns outros figurões.
Quanto à sintaxe ser diferente do C em alguns pequenos aspectos, acho que a única diferença significativa é na ordem invertida dos tipos na hora de declarar variáveis. Eles dão uma justificativa de que isso torna algumas situações de sintaxe menos confusas. A falta de parênteses em if’s por exemplo eu considero pura frescura reclamar, ainda mais porque você pode colocar os parênteses lá se quiser e não vai fazer diferença nenhuma, só que agora você tem opção de não colocar e economizar seus dedos.
Quanto às novidades da linguagem, quem fala que Java já tudo, realmente não procurou se informar a respeito de nada.
Pra começar, o esquema de threading é totalmente diferente. Java não funciona por canais. Se quer comparar com outra linguagem, compare com OCCAM, a saudosa linguagem que todo acadêmico da área de Programação Concorrente ama e adora, só que com um esquema bem mais modernizado, onde os canais são cidadãos de primeira classe e podem ser passados como variáveis.
Além disso, o esquema de “orientação a interfaces” dele é mil vezes mais limpo, intuitivo para o programador, mais fácil de compilar e otimizar e mais flexível que o OOP de linguagens como Java e afins. Se vocês verem o Slide2, vão ver como é intuitivo de usar, e vão ver como permite construções extremamente flexíveis – tipos “variant” saem naturalmente do esquema de type assertions da linguagem. É claro que nada disso é novo. O esquema de interfaces lembra um pouco as typeclasses do Haskell.
E claro, não podemos esquecer que a linguagem Go tem lambdas, closures, escopo léxico, etc.
Enfim, a linguagem não é perfeita, mas dizer que é “mais do mesmo” revela que a pessoa realmente não leu nada sobre a linguagem. Eu acho que a iniciativa deles é boa, pegar alguns recursos de algumas linguagens modernas que pouca gente consegue usar, e reunir em uma linguagem familiar e fácil de aprender.
Mas quem quiser reclamar que reclame. Se vocês não usarem o Go, a Google vai usar, o Rob Pike vai usar, o pessoal do Plan 9 vai usar, etc.
“Java tem tudo isso, mas roda sobre a JVM. A tal nova linguagem do Google é compilada e roda em cima do OS diretamente.”
Tá cheio de compiladores Java, bastava trabalhar com um.
@Welington
Como se programação séria fosse feito apenas em RAD, né?!
Existem programas que não são gráficos. Uma RAD não iria agregar muita coisa ao seu desenvolvimento.
E outra: você também tá querendo demais, já que a linguagem foi anunciada ontem. Já tá querendo uma IDE e se possível com RAD???
Sabe quanto tempo o C/C++ demorou pra ter uma RAD????
E é porque lançaram, a linguagem ontem e ela não tem ima IDE/RAD ainda, é que ela é “mais do mesmo”???
Pense bem e vai perceber que não é bem assim.
Calma. Ferramentas de produtividade são lançadas após a linguagem e não antes ou junto com ela.
Calma.
Caindo o nível do BR-Linux. Achei que ia encontrar um artigo legal, o link só aponta pra um blog mal feito com o mesmo conteúdo da página oficial e um monte de AdWords.
Tô fora…
@Henrique: Também fiquei decepcionado.
Para os não-esclarecidos: é possível programar em java, conpilar com GNU GCJ (e linkar na classpath) e rodar java nativamente em ambientes GNU, sem precisar do overhead de uma JVM. Eu disse na-ti-vo (binário direto, elf), mas com tudo que tem direito (inclusive GC).
Sugiro olharem o http://shootout.alioth.debian.org/
Tem comparativo de performance de várias linguagens. Go tem uma boa performance, mas permance no mesmo Patamar de Python/Perl/Ruby. Não se empolguem demais com o selo do google ehehehe
E por ultimo: Plan 9 é uma idéia que nasceu falida. Conheço poucas pessoas que realmente usam sem reclamar do design… Go combina com algumas idéias dessa época, mas não vai longe não.
Eu tinha a opção de publicar ou não publicar o link que o leitor enviou. Preferi publicar, dar a oportunidade a quem não ficaria sabendo (e não lê inglês), e estar aberto a críticas.
O “nível do BR-Linux” é esse, Henrique. Se alguém tivesse me mandado link de outro texto em português, mais amplo e inovador, eu teria publicado também. Mas não tenho o condão de fazer surgir textos mais avançados, a minha parte é só divulgar o material de quem chega a publicar algo.
@Programador Procrastinador, O 6g não otimiza tanto quanto o gcc, porque ele usa uma backend de otimização própria, que é bem simples. Seria mais justo comparar o gccgo com o gcc, e não o 6g.
“Sabe quanto tempo o C/C++ demorou pra ter uma RAD????”
E quantas linguagens praticamente nasceram com ferramentas RAD?
C/C++ surgiram quando nem existia interface gráfica, não dá pra comparar.
Claro que existem aplicativos que não precisam de um ambiente visual, mas o que mais populariza uma linguagem hoje em dia é a programação RAD, isso é fato.
Quando eu li os comentarios, eu PEIDEI!
Augusto, sinceramente, o seu site eh muito legal… o que fode nele eh esse bando de entendidos que estao usando Linux a 1 ou 2 anos e se acham os fodoes.
Parabens pelo SITE, mas eu removeria essas areas de comentarios e nao daria a oportunidade para esse bando de “mancos” tentarem se aparecer.
@calisto
Falou tudo! Sabe qual é a coisa mais divertida em estudar história da computação e conhecer esses caras “esquecidos” da grande maioria?
R: Descobrir que o Torvalds e o Stallman são dois cuzões! :D
@Agnaldo Timoteo
hehehe tá certo
Ainda bem que o meu ganha-pão não é programação. :)
Mas falando sério, qualquer linguagem tem seus pontos fortes, pontos fracos e outros pontos que nem dá para fazer comparações. Parece que o fato de ter a marca do Google incomoda alguns, que acabaram ficando de má-vontade. De uma certa forma há uma ecologia entre as várias linguagens, e assim como as espécies biológicas, elas vão surgindo, desenvolvem-se e extinguem-se. E nem sempre são as melhores (se é que dá para medir isso…) que sobrevivem. As baratas que o digam, elas passaram pelos dinossauros e, se bobear, vai dar um baile nos mamíferos.
Ninguém falou ainda na linguagem , que parece até um “superset” da Go. Ela já existe há mais de cinco anos, embora não seja divulgada. Pena que só tem compilador para .Net e Mono, mas eu digo a linguagem mesmo. Leiam o “Language Report” e verão que maravilha.
Foi mal; nunca tinha usado tags HTML aqui e formatei o texto errado. Segue novamente o comentário:
Ninguém falou ainda na linguagem Zonnon – http://www.zonnon.ethz.ch -, que parece até um “superset” da Go. Ela já existe há mais de cinco anos, embora não seja divulgada. Pena que só tem compilador para .Net e Mono, mas estou elogiando a *linguagem*, não o compilador. Leiam o “Language Report” e verão que maravilha.
OBS.: Quando disse “superset” é pelo número de recursos; sei que são linguagens de famílias diferentes.
Mais uma linguagem para se criar paixões e torcida de futebol, seriam tão simples apenas usar a tecnologia e curti o que tem de melhor.
O interessante é que não entende nada, são os que mais dão opiniões.
Bando de ridiculos.
@Profeta do Caos
Já programou alguma coisa na vida?
É um usuário pesado de compiladores?
No mesmo dia que li sobre essa linguagem do Google vi uma notícia sobre um (novo) protocolo, para a web, que eles também estão desenvolvendo. Pensem um pouco, o Google quer espaço em todos os mercados de TI.
E se realmente forem produtos bons, qual o problema?
Só porque o Google lançou a turma desce a lenha pra falar que é “um monte de nada” e que deveriam contrinuir para outras linguagens e não criar uma nova.
Esqueceram do “case” Firefox X Chrome? O Google apoiava (e acho que ainda apóia) a Mozilla, mas isso não impediu de lançarem seu próprio navegador.
O mesmo aconteceu com o Python (me corrijam se eu estiver enganado).
Não entendo essas discussões sem fim sobre a linguagem X e a linguagem Y. Cada um usa a linguagem que achar melhor.