La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

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

Presentaciones similares


Presentación del tema: "Agenda  Historia  Características  Mecanismos de concurrencia  Ejemplos  Desventajas  Accesibilidad  Conclusiones  Bibliografía."— Transcripción de la presentación:

1

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

3

4 Historia

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

6 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

7 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) }

8 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

9 Métodos de Concurrencia

10 Do not communicate by sharing memory; instead, share memory by communicating.

11 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()

12 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) }

13 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

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

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

16 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. }

17 Desventajas  Lenguaje experimental  Compilador no funciona en Windows  No tiene manejo de excepciones

18 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

19 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.

20 Bibliografía  www.golang.org www.golang.org  http://blog.golang.org/2010/09/go-concurrency-patterns-timing-out- and.html 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.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://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://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/ http://www.eweek.com/c/a/Application-Development/12-Things-to- Know-About-Googles-Go-Programming-Language-859839/1/

21


Descargar ppt "Agenda  Historia  Características  Mecanismos de concurrencia  Ejemplos  Desventajas  Accesibilidad  Conclusiones  Bibliografía."

Presentaciones similares


Anuncios Google