Francisco Souza                    @franciscosouzaSunday, May 6, 12
Por que Go?Sunday, May 6, 12
Linguagens estáticas são                     rápidas, mas...Sunday, May 6, 12
Linguagens estáticas são                     rápidas, mas... public static <I, O> ListenableFuture <O> chain(ListenableFut...
Python e Ruby são                      dinâmicos! :DSunday, May 6, 12
Linguagens dinâmicas                    são divertidas, mas...Sunday, May 6, 12
Linguagens dinâmicas                     são divertidas, mas...                    • Pecam no desempenho :(Sunday, May 6, 12
“Speed, reliability, or simplicity: pick two.” (sometimes just one)Sunday, May 6, 12
“Speed, reliability, or simplicity: pick two.” (sometimes just one)                    Can’t we do better?Sunday, May 6, 12
Compilada                    % 6g duck.go                    % 6l duck.6Sunday, May 6, 12
Tipagem estática...                    var numero intSunday, May 6, 12
mas com inferência de                           tipo...                    var numero = 0                    numero := 0Su...
mas com inferência de                           tipo...                    var numero = 0                    numero := 0Su...
Tipagem simples          Java          C++          GoSunday, May 6, 12
Tipagem simples          Java                    Integer i = new Integer(10);          C++          GoSunday, May 6, 12
Tipagem simples          Java                    Integer i = new Integer(10);          C++                    int i = 10; ...
Tipagem simples          Java                    Integer i = new Integer(10);          C++                    int i = 10; ...
Definição de tipos                    type MyInt intSunday, May 6, 12
Métodos                    type Conta struct {                        saldo float64                        limite float64 ...
Interfaces                         “Duck typing”                    type Duck interface {                    ! Quak()     ...
Usando a interface                    func DuckDance(duck Duck) {                    ! duck.Quak()                    ! du...
type Chicken struct { }                    func (a *Chicken) Quak() {                    ! fmt.Println("Quak")            ...
Funções anônimas        func () {            fmt.Println("Oi pessoal!")        }Sunday, May 6, 12
Concorrência                    func DoSomething() {                        // doing something                    }       ...
Comunicação/                    sincronização      “Don’t communicate by sharing memory, share memory by                  ...
Channels                    var ch chan int                    var age int                    ch = make(chan int)         ...
Channels                    var ch chan int                    var age int                    ch = make(chan int)         ...
Channels                    var ch chan int                    var age int                    ch = make(chan int)         ...
Sunday, May 6, 12
Upcoming SlideShare
Loading in …5
×

A Linguagem de Programação Go

1,965 views

Published on

Lighting talk apresentada no Dev in Cachu 2012.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,965
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
28
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

A Linguagem de Programação Go

  1. 1. Francisco Souza @franciscosouzaSunday, May 6, 12
  2. 2. Por que Go?Sunday, May 6, 12
  3. 3. Linguagens estáticas são rápidas, mas...Sunday, May 6, 12
  4. 4. Linguagens estáticas são rápidas, mas... public static <I, O> ListenableFuture <O> chain(ListenableFuture<I> input, Function<? super I, ? extends ListenableFuture<? extends O>> function)Sunday, May 6, 12
  5. 5. Python e Ruby são dinâmicos! :DSunday, May 6, 12
  6. 6. Linguagens dinâmicas são divertidas, mas...Sunday, May 6, 12
  7. 7. Linguagens dinâmicas são divertidas, mas... • Pecam no desempenho :(Sunday, May 6, 12
  8. 8. “Speed, reliability, or simplicity: pick two.” (sometimes just one)Sunday, May 6, 12
  9. 9. “Speed, reliability, or simplicity: pick two.” (sometimes just one) Can’t we do better?Sunday, May 6, 12
  10. 10. Compilada % 6g duck.go % 6l duck.6Sunday, May 6, 12
  11. 11. Tipagem estática... var numero intSunday, May 6, 12
  12. 12. mas com inferência de tipo... var numero = 0 numero := 0Sunday, May 6, 12
  13. 13. mas com inferência de tipo... var numero = 0 numero := 0Sunday, May 6, 12
  14. 14. Tipagem simples Java C++ GoSunday, May 6, 12
  15. 15. Tipagem simples Java Integer i = new Integer(10); C++ GoSunday, May 6, 12
  16. 16. Tipagem simples Java Integer i = new Integer(10); C++ int i = 10; GoSunday, May 6, 12
  17. 17. Tipagem simples Java Integer i = new Integer(10); C++ int i = 10; Go i := 10Sunday, May 6, 12
  18. 18. Definição de tipos type MyInt intSunday, May 6, 12
  19. 19. Métodos type Conta struct { saldo float64 limite float64 } func (c *C) Sacar(valor float64) { if c.valor <= c.limite { c.saldo -= valor } }Sunday, May 6, 12
  20. 20. Interfaces “Duck typing” type Duck interface { ! Quak() ! Walk() }Sunday, May 6, 12
  21. 21. Usando a interface func DuckDance(duck Duck) { ! duck.Quak() ! duck.Walk() ! duck.Quak() ! duck.Walk() ! duck.Quak() ! duck.Walk() }Sunday, May 6, 12
  22. 22. type Chicken struct { } func (a *Chicken) Quak() { ! fmt.Println("Quak") } func (a *Chicken) Walk() { ! fmt.Println("Walking") }Sunday, May 6, 12
  23. 23. Funções anônimas func () { fmt.Println("Oi pessoal!") }Sunday, May 6, 12
  24. 24. Concorrência func DoSomething() { // doing something } go DoSomething()Sunday, May 6, 12
  25. 25. Comunicação/ sincronização “Don’t communicate by sharing memory, share memory by communicating”Sunday, May 6, 12
  26. 26. Channels var ch chan int var age int ch = make(chan int) go func() { ch <- 1 }() age = <-chSunday, May 6, 12
  27. 27. Channels var ch chan int var age int ch = make(chan int) go func() { ch <- 1 }() age = <-chSunday, May 6, 12
  28. 28. Channels var ch chan int var age int ch = make(chan int) go func() { ch <- 1 }() age = <-chSunday, May 6, 12
  29. 29. Sunday, May 6, 12

×