Buscar

Linguagem de programação GO

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 7 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Linguagem de Programação Go 
 
1​Instituto Federal de Minas Gerais – Campus Bambuí 
Bambuí – MG – Brasil 
1​Departamento de Engenharia de Computação 
 
 
 
Abstract. In response to some computing problems in infrastructure 
development such as the insertion of multiple processors, distributed systems, 
web computing model and mass computing, Google has developed a language 
that encompasses the best features of programming languages to meet the 
need for a clean code, fast and runs on multiple platforms without any 
problem, to Golang (Go). 
Resumo. Em resposta à alguns problemas da computação no desenvolvimento 
de infraestrutura, como a inserção de múltiplos processadores, sistemas 
distribuídos, modelo de computação na web e computação massiva, a Google 
desenvolveu uma linguagem que engloba as melhores características de 
linguagens de programação para suprir a necessidade de um código limpo, 
rápido e que executa em múltiplas plataformas sem nenhum problema, a 
Golang(Go). 
1. Introdução 
Go é uma ​linguagem de programação criada pela ​Google e lançada em ​código livre em 
novembro de 2009. O projeto inicial da linguagem foi feito em setembro de 2007 por 
Robert Griesemer​, ​Rob Pike e ​Ken Thompson como um projeto interno no escritório da 
Google. Foi lançada em 2009, porém ficou em fase de testes até 2011, na chamada Fase 
Pré-Go. 
Atualmente, há implementações para ​Windows​, ​Linux​, Mac OS X e FreeBSD. ​“Go é 
expressivo, conciso, limpo e eficiente. Seus mecanismos de concorrência tornam mais fácil escrever 
programas que tirarão o máximo proveito de vários núcleos e máquinas em rede, enquanto o seu novo 
sistema de tipos permite a construção flexível e modular do programa. Go compila rapidamente para 
código de máquina ainda tem a conveniência de garbage collection e o poder de reflexão em tempo de 
execução. É uma linguagem compilada rápida, de tipagem estática, que parece uma linguagem 
interpretada digitada de forma dinâmica.” (Golang Brasil, 2017). 
Go veio para sanar a necessidade de uma linguagem de programação que 
resolva as dificuldades de linguagens que demoram um bom tempo para compilar e 
escalar o desenvolvimento de grandes aplicações. A linguagem tornou o 
desenvolvimento dos servidores da Google em algo mais eficiente e bastante 
 
 
 
produtivo, utilizando um controle rigoroso e inteligente de suas dependências. 
2. Características da linguagem 
A linguagem de programação Go é uma linguagem compilada, tem seu próprio Go 
Runtime(característica parecida com Java), é uma linguagem multiplataforma de 
sintaxe simples e orientada a objetos, apesar de não haver herança. 
Estaticamente e fortemente tipada, é uma linguagem de forma concorrente, 
aproveitando o máximo possível de sistemas multi threads, com funções de múltiplos 
retornos e ponteiros, porém não oferece aritmética de ponteiros. Não faz parte desta 
linguagem tratamento de erros e sobrecarga de métodos. A linguagem Go, foi 
inspirada na linguagem C, mas além disso ela possui características que fazem a 
diferença, como por exemplo a abstração para estruturas de dados e ​Garbage 
Collection​ (Evita o acúmulo de lixo na memória durante a execução do programa). 
Os paradigmas desta linguagem são: 
● Compilada: Utiliza o compilador Gc ou GccGO. 
● Concorrente: Executa várias tarefas de modo concorrente utilizando 
programas separados ou várias threads para compilar um único programa. 
● Imperativa: O computador executa as instruções do código. 
● Estruturada: Para criação de estruturas simples são utilizadas su-rotinas e 
funções. 
Outra característica que difere a linguagem Go para C, é a ausência de parênteses nas 
estruturas IF e FOR... 
3. Vantagens/Desvantagens 
A linguagem de programação Go como todas as outras linguagens tem suas vantagens e 
desvantagens. As suas principais vantagens atribuem-se principalmente o desempenho, 
como a linguagem é baseada em C ela é altamente otimizada, outro ponto forte da 
linguagem é a simplicidade, a linguagem Go tem como foco principal a velocidade, 
foram removidos alguns recursos de linguagem de alto nível para que tal foco fosse 
alcançado. São inúmeras as vantagens de se utilizar a linguagem, compilação muito 
rápida, linguagem fortemente tipada, concorrência é também um ponto 
forte(IMASTERS). 
Para que a linguagem seja tão rápida quanto o esperado foram removidos alguns 
recursos, tais como tratamento de exceção, herança, programação genética e sobrecarga, 
embora tenham sido removidos para otimizar o desempenho da linguagem alguns 
programadores vêm isso como desvantagem(IMASTERS). 
4. Estrutura da linguagem 
A linguagem Go tem uma sintaxe semelhante a linguagem C, porém com várias 
diferenças nas declarações, no uso de funções, na criação de estruturas de dados, na 
 
 
 
forma como trata entrada e saída de dados, entre outras variações. 
A linguagem Go não dá suporte para classes, como em java ou C++, porém, ela 
permite que o programador desenvolva estruturas de dados, também presentes em C++ 
e em outras linguagens orientadas a objeto. A estrutura de dados em Go, guarda um 
estado,não tendo comportamento(TUTSPLUS). O exemplo abaixo mostra uma estrutura 
Carro com um atributo para a cor e outro para o tipo de combustível utilizado. 
1. type Carro struct { 
2. Cor string 
3. Tipo_Combustivel string 
4. } 
 
Métodos em Golang são como funções, só que operam apenas para 
determinados objetos, sendo que, na declaração do método(assinatura), é explícito o tipo 
do objeto ao qual o método opera. Abaixo, um exemplo de um método que opera com o 
objeto do tipo Carro, onde imprime a cor e o tipo de combustível do veículo. 
 
1. func (c Carro) mostra_informacao{ 
2. fmt.Printf(“Este carro é da cor %s e utiliza %s para se mover”, c.Cor, 
c.Tipo_Combutivel) 
3. } 
 
Outro importante tipo de dados de Golang são as interfaces. Elas são conjuntos 
de métodos, que podem ser utilizados por objetos de que implementam estes métodos, 
da mesma forma como funcionam interfaces em outras linguagens orientadas a objetos. 
Abaixo está um exemplo simples de uma interface em Golang. 
1. type Cores interface{ 
2. verde() 
3. vermelho() 
4. amarelo() 
5. } 
6. 
7. type Semaforo struct{ 
8. } 
9. 
10. func (s Semaforo) verde{ 
11. fmt.Printf(“VERDE”) 
12. } 
13. func (s Semaforo) vermelho{ 
14. fmt.Printf(“VERMELHO”) 
15. } 
16. fun (s Semaforo) amarelo{ 
17. fmt.Printf(“AMARELO”) 
18. } 
 
 
 
 
Golang possui uma quantidade significativa de bibliotecas, abaixo está uma 
tabela com algumas dessas bibliotecas e suas funcionalidades: 
 
ARCHIVE biblioteca usada para trabalhar com 
arquivos, como extensão para .tar e .zip 
BUFIO Implementa E/S com buffer. Possui o 
objeto io.Reader ou io.Writer, que 
também implementa a interface, mas que 
fornece ajuda com E/S textual. 
CONTAINER Pacote com suporte para pilhas e listas, 
onde o pacote para lista, implementa uma 
lista duplamente encadeada. 
SQL O pacote Sql oferece uma interface 
genérica em torno de bancos de dados 
SQL. 
ELF Implementa o acesso a arquivos de objeto 
ELF 
XML O pacote Xmlimplementa um analisador 
XML 1.0 simples, que compreende 
espaços de nome XML. 
FMT Implementa E/S formatada com funções 
análogas ao Printf e Scanf presentes em 
C. 
 
Go também suporta funções recursivas. Abaixo, mostramos o uso de uma função 
recursiva para o problema fatorial(GOLANGBR): 
1. import “fmt” 
2. func fact(n int) int{ 
3. if n == 0 { 
4. return 1 
5. } 
6. return n* fact(n-1) 
7. } 
8. 
9. func main(){ 
10. fmt.Println(fact(7)) 
11. } 
 
 
 
Para a entrada de dados, utiliza-se Scanln, método da biblioteca fmt, que se 
assemelha a função Scanf de C. Do mesmo modo, para saída de dados, utiliza-se o 
método Println, que se assemelha ao Printf de C. 
 
5.Ortogonalidade Portabilidade e Tipos de dados 
Quando um conjunto relativamente pequeno de construções primitivas é 
combinado a um número relativamente pequeno de formas se tem a 
ortogonalidade, essa técnica é usada com o intuito de possibilitar um grande 
número de estrutura de dados​. 
A Ortogonalidade e fortemente ligada a simplicidade, quanto mais 
ortogonal o projeto de uma linguagem, menor o número necessário de exceções 
às regras da linguagem. 
 
 
Retirado de :​https://golang.org/ 
 
A portabilidade consiste na facilidade com que os programas podem ser 
movidos de uma implementação para outra, a portabilidade na maioria das vezes 
é fortemente influenciada pelo grau de padronização da linguagem, algumas 
linguagens, como o BASIC, não sao padronizadas, fazendo os programas que 
são escritos nessas linguagens serem difíceis de mover de uma implementação 
para outra(SEBESTA). 
Quanto aos tipos de dados, a linguagem go trabalha com os tipos, boolean, 
numérico e string, esses são os tipos de dados primitivos usados pela linguagem, 
quanto aos tipos compostos, são eles, struct, ponteiros, arrays, slices e funções. 
 
 
6. Outro Pontos Importantes 
Golang é distribuído sob a licença BSD, o que significa que tal projeto pode ser 
incorporado a qualquer produto proprietário, assim como trabalhos podem ser liberados 
com licença de proprietário. 
Golang tem como raízes o C, que é uma linguagem compilada para propósitos 
gerais, que compõem o paradigma imperativo, com características estruturais, 
 
 
 
procedurais e padronizadas. Desta forma, Golang também tem como paradigma o 
imperativo, que segue a idéia de que os programas são como ações e comandos que 
mudam os estados de um programa, assim como o paradigma de programação 
estruturado, que definas as três estruturas básicas de qualquer 
programa(sequências,decisões e iterações). Golang também possui o paradigma de 
programação procedural, que prediz o funcionamento do programa por chamadas a 
procedimentos, como rotinas e subrotinas, assim como, Golang possui o paradigma de 
programação orientado a objetos, apesar de que, não existam classes em Go, ela dá 
suporte a estruturas, interfaces, encapsulamentos e polimorfismos(SEBESTA,2003). 
A versão do projeto de Golang é a Go 1, que está atualmente na versão 1.2. Na 
descrição do projeto do Go 1, eles diziam que um código gerado naquela versão rodaria 
a vida toda, mesmo havendo novas mudanças em futuras versões da linguagem. Porém, 
para a nova versão, eles acusam o conhecimento de que certas mudanças ocasionaram 
em mal funcionamentos de programas feitos em versões anteriores, mas o projeto irá dar 
suporte a qualquer problema relacionado a compatibilidade de versões. 
7. Conclusão 
Quando a Google reuniu grandes nomes da computação atual para desenvolver um 
projeto de uma nova linguagem de programação, tinham a proposta de fornecerem uma 
linguagem fácil e funcional, com suporte a grandes recursos de outras linguagens, tanto 
como a correção de erros e a remoção de funcionalidades presentes em antigas 
linguagens de programação, fazendo assim com que Go se tornasse rápida e poderosa. 
Sendo uma genuína linguagem orientada a objetos, Golang dá suporte ao 
programador para modelar suas situações e prover boas implementações, utilizando de 
interfaces ao invés de tipos concretos(TUTSPLUS). 
A finalidade de Go sempre foi ser uma linguagem desenvolvida do zero, 
economicamente viável, que desse suporte ao que importa, assim levando a google a 
definir diretrizes para a linguagem como programação concorrente, alto desempenho, 
sendo otimizada, multiplataforma, permitindo a escalabilidade ser feita de maneira 
simples,com o foco na velocidade e simplicidade(IMASTERS). 
Com um projeto complexo e bem definido, Golang está no conceito de 
linguagens de alto nível, com melhorias significativas em relação a outras linguagens de 
mesmo conceito, com otimizações na gerência de memória e no processamento. Um 
bom exemplo disso são as recursividades em Go, muito utilizadas e que compõem 
grande parte das soluções matemáticas desenvolvidas, é de grande capacidade de 
processamento e velocidade de computação. 
 
 
 
 
8. Referências 
IMASTERS; ​Trabalhando com go(golang a linguagem do google)​; Disponível em: 
<https://imasters.com.br/linguagens/trabalhando-com-go-golang-a-linguagem-do-googl
e/?trace=1519021197>. Acesso em: Março de 2017. 
GOLANG; ​A Linguagem de Programação Go​; Disponível em: 
<http://www.golangbr.org/projeto/>. Acesso em: Março de 2017. 
TUTSPLUS. ​Vamos lá: Programação orientada a objetos em Golang. ​Disponível 
em:https://code.tutsplus.com/pt/tutorials/lets-go-object-oriented-programming-in-golang
--cms-26540. Acesso em: Março de 2017. 
SEBESTA, R.W. (2003). ​Conceitos de Linguagens de Programação​. Editora 
BOOKMAN. 9ª edição.

Continue navegando