Uploaded on

Presentación para las reuniones del AQPGLUG

Presentación para las reuniones del AQPGLUG

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
434
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Introducción a GO Carlos Zúñiga
  • 2. ¿Porqué Go?
    • Frustración con lenguajes de sistemas actuales
      • Elegir entre compilación eficiente, ejecución eficiente o facilidad de programación
    • Compiladores lentos
    • 3. Aprovechar procesadores multinúcleo
    • 4. Mejorar el soporte de concurrencia
  • 5. Características
    • Compilación rápida
    • 6. Se siente como un lenguaje dinámico
    • 7. Colector de basura y concurrencia
    • 8. No es un lenguaje orientado a objetos convencional
  • 9. Instalación
    • hg clone -u release https://go.googlecode.com/hg/ go
    • 10. cd go/src
    • 11. ./all.bash
    • Añadir go/bin al $PATH
    • apt-get install golang
  • 12. Ejecución
    • Compilador gc
      • 6g para amd64, 8g para 386
        • 6g programa.go
        • 13. 6l -o programa programa.6
        • 14. ./programa
      • Rápido, genera código OK.
    • Compilador gccgo
        • gccgo -o programa programa.go
      • Código bueno pero no tan rápido.
  • 15. Hello World
      package main import "fmt" func main() { world := " 世界 " fmt.Println("Hello,", world) }
  • 16. Lenguaje
    • Tipos básicos
      • bool
      • 17. string
      • 18. int int8 int16 int32 int64
      • 19. uint uint8(byte) uint16 uint32 uint64 uintptr
      • 20. float32 float64
      • 21. complex64 complex128
  • 22. Lenguaje
    • Variables y tipo a la inversa de C (int a;)
  • 30. Lenguaje
  • 34. Lenguaje
    • If
      • No lleva paréntesis, pero las llaves son obligatorias
      • 35. if a := algo() ; a == b {
      • 36. return true
      • 37. } else {
      • 38. return false
      • 39. }
  • 40. Lenguaje
  • 47. Lenguaje
  • 56. Lenguaje
    • Slices
      • p := []int{2, 3, 5, 7, 11, 13}
      • 57. q := p[ 1:4 ] // {3, 5, 7}
      • 58. for i := 0; i < len(p); i++ {
      • 59. fmt.Printf(&quot;p[%d] == %dn&quot;, i, p[i])
      • 60. }
      • 61. for i, v := range p {
      • 62. fmt.Printf(&quot;p[%d] == %dn&quot;, i, v)
      • 63. }
  • 64. Lenguaje
    • Funciones
  • 70. Lenguaje
    • Interfaces
      • import &quot;math&quot;
      • 71. type Vertex struct {
      • 72. X, Y float64
      • 73. }
      • 74. func (p *Vertex) Abs() float64 {
      • 75. return math.Sqrt(p.X*p.X + p.Y*p.Y)
      • 76. }
  • 77. Lenguaje
    • Interfaces
      • type Writer interface {
      • 78. Write(p []byte) (n int, err os.Error)
      • 79. }
      • 80. var w Writer
      • 81. w = os.Stdout // Stdout implementa Writer
      • 82. fmt.Fprintf(w, &quot;hello, writern&quot;)
  • 83. Lenguaje
    • Manejo de errores
    • 84. func Read(file string) (string, os.Error) {
    • 85. f, err := os.Open(file)
    • 86. if err != nil {
    • 87. return &quot;&quot;, err
    • 88. }
    • 89. defer f.Close() // se llama al acabar
    • 90. // ...implementación
    • 91. return result, nil
    • 92. }
  • 93. Lenguaje
    • Concurrencia: Goroutines
  • 100. Lenguaje
    • Channels
  • 106. Paquetes
  • 114. Herramientas
    • gofix: reescribe programas usando las apis antiguas
    • 115. godoc: extrae documentación del código fuente
    • 116. gofmt: formatea el código fuente
  • 117. Proyectos
    • web.go: framework web
    • 118. go-gtk: bindings para GTK
    • 119. mgo: drivers para MongoDB
    • 120. mustache.go: lenguaje de templates
    • 121. appengine-go: SDK para App Engine
    • 122. Paquetes más populares: http://godashboard.appspot.com/package
  • 123. Benchmarks
      Fuente: Computer Language Benchmarks Game
  • 124. Benchmarks
      Fuente: Computer Language Benchmarks Game