SlideShare une entreprise Scribd logo
1  sur  83
Télécharger pour lire hors ligne
Jeferson Belgamazzi
Engenheiro de Software - UOL Boacompra PagSeguro
Bacharel em Ciências da Computação
Especialista em Arquitetura de Aplicações C#
GOLANG WORKSHOP
OVERVIEW x HANDS-ON
OVERVIEW
● ORIGEM
● RECURSOS
● QUEM USA?
● ASCENSÃO
● ONDE GO?
OVERVIEW
● ORIGEM
● RECURSOS
● QUEM USA?
● ASCENSÃO
● ONDE GO?
HANDS-ON
● INTRODUÇÃO
● EXEMPLOS
● IMPLEMENTAÇÃO FINAL
OVERVIEW
● ORIGEM
● RECURSOS
● QUEM USA?
● ASCENSÃO
● ONDE GO?
HANDS-ON
● INTRODUÇÃO
● EXEMPLOS
● IMPLEMENTAÇÃO FINAL
NÃO NECESSARIAMENTE NESTA ORDEM :)
ORIGEM
Google (2007/2009)
Rob Pike
UNIX & Plan 9
Limbo Language
UTF-8
Ken Thompson
UNIX & Plan 9
B & C Language
UTF-8
Robert Griesemer
V8 JavaScript engine
Java HotSpot VM
DESEMPENHO
ESCALABILIDADE
MANUTENÇÃO
O foco principal da linguagem
é tornar o desenvolvimento de aplicações
web altamente disponíveis e escalonáveis
de forma simples e fácil.
DIRETRIZES DA LINGUAGEM
DESEMPENHO
Baseado em C altamente otimizado
COMPILADO
O código fonte é compilado para binário nativo
dispensando o uso de interpretadores
COMPILADOR COM SUPORTE A
VINCULAÇÃO ESTÁTICA
Todo código pode ser vinculado de forma estática
em um único arquivo binário que pode ser
implantado sem se preocupar com dependências.
GARBAGE COLLECTOR
Nativo
CONCORRÊNCIA E PARALELISMO
De forma nativa sem o uso de bibliotecas externas
MEMORY SAFE
Gestão transparente de Memória e Threads
OPEN SOURCE
+950 Colaboradores
github.com/golang
ESPECIFICAÇÃO SIMPLES
Você pode usá-la para construir seu próprio compilador
https://golang.org/ref/spec
SIMPLISTA AO EXTREMO
SIMPLISTA AO EXTREMO
Classes - Heranças - Overloads de Métodos
SIMPLISTA AO EXTREMO
Classes - Heranças - Overloads de Métodos
SIMPLISTA AO EXTREMO
Classes - Heranças - Overloads de Métodos
Ternários
SIMPLISTA AO EXTREMO
Classes - Heranças - Overloads de Métodos
Ternários
SIMPLISTA AO EXTREMO
Classes - Heranças - Overloads de Métodos
Ternários
Try/Catch
SIMPLISTA AO EXTREMO
Classes - Heranças - Overloads de Métodos
Ternários
Try/Catch
[ . . . ]
MULTIPLATAFORMA
Linux - Windows - Mac OS - FreeBSD - Mobile
Aplicativos (não GO) executam 15% mais rápidos
QUEM USA?
ASCENSÃO
POR ONDE COMEÇAR?
tour.golang.org
INSTALAÇÃO
Mac, Windows, Linux e FreeBSD
https://golang.org/dl/
INSTALAÇÃO : : WINDOWS
C:go C:gobin
INSTALAÇÃO : : LINUX
$ sudo tar -xvf go1.****.tar.gz
$ sudo mv go /usr/local
$ sudo vim ~/.profile
export PATH=$PATH:/usr/local/go/bin
export GOROOT=$HOME/go
export PATH=$PATH/$GOROOT/bin
$ source ~/.profile
WORKSPACE
C:UsersYourUserNamego
$HOME/go
WORKSPACE
+ go
+ --- src
+ --- ---- hello
+ --- ---- ------ helloworld.go
FORMAS DE EXECUÇÃO
go run {WorkSpace}/src/hello/helloworld.go
FORMAS DE EXECUÇÃO
go install hello
WORKSPACE
+ go
+ --- bin
+ --- ---- hello.exe
+ --- src
+ --- ---- hello
+ --- ---- ------ helloworld.go
VARIÁVEIS
TIPOS
CONSTANTES
FUNÇÕES
CONCORRÊNCIA
Go é uma linguagem concorrente e não paralela
O QUE É ?
E PARALELISMO?
Qual a diferença?
CONCORRÊNCIA vs PARALELISMO
De um ponto de vista técnico
Download
Download
Renderização
DOWNLOADING DOWNLOADINGRENDERIZAÇÃO RENDERIZAÇÃO
SINGLE CORE PROCESSOR
CONCORRÊNCIA
DOWNLOADING
RENDERIZAÇÃO
CORE 1
PARALELISMO
CORE 2
DOWNLOAD CONCLUÍDO
Baixa sobrecarga de comunicação em sistemas concorrentes
CONCORRÊNCIA EM GO
GOROUTINE
go bar( )
Em Go não criamos threads, mas rotinas, que funcionam
como funções multi-threads mas o Go quem gerencia o uso
real das threads no nível do sistema operacional.
1 2 3 4 5
A B C D E
1 2 3 4 5A B C D E main terminated
main terminated
0 ms 250 ms 500 ms 750 ms 1000 ms 1250 ms
0 ms 400 ms 800 ms 1200 ms 1600 ms 2000 ms
0 ms 3000 ms
GOROUTINE
Benefícios
PILHAS SEGMENTADAS E CRESCENTES
Utilizará mais memória apenas quando necessário
TEMPO DE INICIALIZAÇÃO
Mais rápido que as threads
NÃO TEM MAPEAMENTO 1:1 COM AS THREADS
Um único segmento de programa pode conter milhares de goroutines
COMUNICAÇÃO SEGURA ENTRE GOROUTINES
Channels
VAMOS CODAR?
Jeferson Belgamazzi
jefersonbelgamazzi@gmail.com
linkedin.com/in/jefersonbelgamazzi

Contenu connexe

Similaire à overview e introdução ao Golang

Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxJorge Pereira
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapMayron Cachina
 
Class 01 - Android Study Jams: Android Development for Beginners
Class 01 - Android Study Jams: Android Development for BeginnersClass 01 - Android Study Jams: Android Development for Beginners
Class 01 - Android Study Jams: Android Development for BeginnersJordan Silva
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017Vitor Mattos
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2018SP | Trilha iOS - Criando apps iOS escalaveis
TDC2018SP | Trilha iOS - Criando apps iOS escalaveisTDC2018SP | Trilha iOS - Criando apps iOS escalaveis
TDC2018SP | Trilha iOS - Criando apps iOS escalaveistdc-globalcode
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizadosThiago Rodrigues
 
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Edison Costa
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoArtur Felipe Sousa
 
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...Evandro da Silva Amparo
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSThiago Rodrigues
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerWellington Silva
 
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyPython Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyJulio Cesar Eiras Melanda
 
Automação de Teste em UI para Android
Automação de Teste em UI para AndroidAutomação de Teste em UI para Android
Automação de Teste em UI para AndroidElias Nogueira
 

Similaire à overview e introdução ao Golang (20)

Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no Linux
 
Desenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGapDesenvolvendo para Android com PhoneGap
Desenvolvendo para Android com PhoneGap
 
Conhecendo Go
Conhecendo GoConhecendo Go
Conhecendo Go
 
Phonegap 120118153629-phpapp01
Phonegap 120118153629-phpapp01Phonegap 120118153629-phpapp01
Phonegap 120118153629-phpapp01
 
Class 01 - Android Study Jams: Android Development for Beginners
Class 01 - Android Study Jams: Android Development for BeginnersClass 01 - Android Study Jams: Android Development for Beginners
Class 01 - Android Study Jams: Android Development for Beginners
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
JavaScript além do browser
JavaScript além do browserJavaScript além do browser
JavaScript além do browser
 
TDC2018SP | Trilha iOS - Criando apps iOS escalaveis
TDC2018SP | Trilha iOS - Criando apps iOS escalaveisTDC2018SP | Trilha iOS - Criando apps iOS escalaveis
TDC2018SP | Trilha iOS - Criando apps iOS escalaveis
 
Construção e provisionamento de ambientes de desenvolvimento virtualizados
Construção e provisionamento de ambientes  de desenvolvimento virtualizadosConstrução e provisionamento de ambientes  de desenvolvimento virtualizados
Construção e provisionamento de ambientes de desenvolvimento virtualizados
 
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
Ambiente de desenvolvimento para aplicações em WordPress com Vagrant, Compose...
 
Django deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produçãoDjango deploy - Como servir aplicações Django em produção
Django deploy - Como servir aplicações Django em produção
 
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
 
Depurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSSDepurando aplicações PHP like a BOSS
Depurando aplicações PHP like a BOSS
 
Aplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com DockerAplicações 12 fatores, melhor com Docker
Aplicações 12 fatores, melhor com Docker
 
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - KivyPython Nordeste 2016 - Aplicações multiplataforma - Kivy
Python Nordeste 2016 - Aplicações multiplataforma - Kivy
 
PHP Tools for Fast coding
PHP Tools for Fast codingPHP Tools for Fast coding
PHP Tools for Fast coding
 
Automação de Teste em UI para Android
Automação de Teste em UI para AndroidAutomação de Teste em UI para Android
Automação de Teste em UI para Android
 
Phonegap
PhonegapPhonegap
Phonegap
 

overview e introdução ao Golang