1 / 21

Lenguaje de Programación GO

Lenguaje de Programación GO. Agenda. Historia Características Mecanismos de concurrencia Ejemplos Desventajas Accesibilidad Conclusiones Bibliografía. Historia. Características. Lenguaje Compilado Desempeño Velocidad Seguridad Velocidad de desarrollo

milt
Download Presentation

Lenguaje de Programación GO

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Lenguaje de Programación GO

  2. Agenda Historia Características Mecanismos de concurrencia Ejemplos Desventajas Accesibilidad Conclusiones Bibliografía

  3. Historia

  4. Características Lenguaje Compilado Desempeño Velocidad Seguridad Velocidad de desarrollo Elimina dependencias innecesarias Minimiza el árbol de dependencias Velocidad de compilación

  5. Características Sintaxis Similar a C o C++ Diferencias: Declaración de las variables For es la única instrucción para ciclos Punto y coma innecesario a final de instrucciones If y For no usan paréntesis para encerrar condición No maneja clases; sino structs con métodos

  6. Características package main import "fmt“ var a,b int = 1,2 func main() { a := 0 for i := 0; i < 10; i++ { a += i } fmt.Println(a) }

  7. Características Lenguaje Orientado a Objetos? Lenguaje orientado a objetos donde no existen objetos Cubetas que implementan cosas Recolector de basura Open Source Lenguaje Multipropósito Programación Mobil Programación Web Programación Sistemas

  8. Métodos de Concurrencia

  9. Métodos de Concurrencia Do not communicate by sharing memory; instead, share memory by communicating.

  10. Goroutines Elemento básico de concurrencia Ejecución en paralelo Misma dirección de memoria Livianos Multiplexados en muchos hilos del S.O go list.Sort()

  11. Ejemplos package main import "fmt" func sum(a []int, c chan int) { sum := 0 for _, v := range a { sum += v } c <- sum // send sum to c } func main() { a := []int{7, 2, 8, -9, 4, 0} c := make(chan int) go sum(a[:len(a)/2], c) go sum(a[len(a)/2:], c) x, y := <-c, <-c // receive from c fmt.Println(x, y, x + y) }

  12. Canales Combinan comunicación con sincronización Buffered o unbuffered Envío y recepción de mensajes con operador -> Bloquean hasta que ambos lados del canal esten listos. canal <- 4 <- canal

  13. Ejemplos package main import "fmt" func main() { c := make(chan int, 2) c <- 1 c <- 2 fmt.Println(<-c) fmt.Println(<-c) }

  14. Paralelización Uso de múltiples núcleos Cálculos complejos divididos Canal recibe resultados

  15. Ejemplos const NCPU = 4 // number of CPU cores func (v Vector) DoAll(u Vector) { c := make(chan int, NCPU) // Buffering optional but sensible. for i := 0; i < NCPU; i++ { go v.DoSome(x,y) } // Drain the channel. for i := 0; i < NCPU; i++ { <-c // wait for one task to complete } // All done. }

  16. Desventajas Lenguaje experimental Compilador no funciona en Windows No tiene manejo de excepciones

  17. Accesibilidad Tour Compilación y ejecución en línea Ejercicios Prácticas de programación Código fuente Instrucciones de instalación Documentación Especificación

  18. Conclusiones Go es un potente lenguaje de programación que mezcla las ventajas de lenguajes compilados con las de los lenguajes dinámicos. Semántica similar a lenguajes de programación básicos. Aumenta velocidad de desarrollo y por ende el desempeño de los trabajadores. Brinda mecanismos de concurrencia muy prácticos y de uso sencillo.

  19. Bibliografía www.golang.org http://blog.golang.org/2010/09/go-concurrency-patterns-timing-out-and.html http://www.genbetadev.com/herramientas/introduccion-al-lenguaje-de-programacion-go http://www.eweek.com/c/a/Application-Development/12-Things-to-Know-About-Googles-Go-Programming-Language-859839/ http://golang.org/doc/effective_go.html#concurrency http://www.eweek.com/c/a/Application-Development/12-Things-to-Know-About-Googles-Go-Programming-Language-859839/1/

More Related