15
Be ready to ! Julien Bordellier @jstoja #golang #humantalks

Soyez Ready to Go - HumanTalks Montpellier 02/2013

Embed Size (px)

DESCRIPTION

Un rapide tour d'horizon de **Golang** le language issue des fin fonds de chez Google et qui intrigue tant de personnes. Nous verront pourquoi il est interessant, pourquoi il a été développé et quels sont les concepts qui font sa force. Nous aborderont sa syntaxe, son système d'objets et son système de concurrence. Si le sujet plait, pourquoi pas creuser certaines parties. Merci à @campoy83 pour les conseils et la correction technique ;) http://humantalks.com/talks/96-soyez-ready-to-go

Citation preview

Page 1: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Be ready to !

Julien Bordellier

@jstoja

#golang

#humantalks

Page 2: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Mots clefs

Concurrent

Orienté objet

C-like + cgo

Open Source (BSD)

Garbage collector

Typage fort

Compilé (so faaaaast)

Page 3: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Orienté Objet ?

Objets simples

type myType struct {value []bytesize uint64

}

(oui le type est après le nom de la variable)

Page 4: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Orienté Objet ?

Système de packages

Nom du package en début de fichier :package webapp

Import du package dans un autre package :import «webapp»

Page 5: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Orienté Objet ?

Export de fonctions clair et simple

func MyFunction() {// Lines of code

}

func myFunction() {// Lines of code

}

exportée

exportéenon-

Page 6: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Orienté Objet ?

Méthodes claires

func (myObj myType) MethodName() (myRetVar uint64) {// Lines of code

}

Page 7: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Orienté Objet ?

Héritage Composition

Interfaces = ensemble de méthodes

Pas d’implémentation de classes

Satisfaction implicite de l’interface

Page 8: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Concurrent

Un seul

Gopher

Request

MyApp

Page 9: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Concurrent

MyApp

Request

Travail en

concurence

Attention:Concurrent != Parallèle

Page 10: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Concurrent

Lancer une méthode en concurrence

func main() {myFunction() //Lancée normalementgo myFunction() //Lancée dans une goroutine

}

Une goroutine s’exécute en fond, le programmen’attend pas le retour de la fonction.

Page 11: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Concurrent

Communiquer en partageant

c’est

MAUVAIS

Page 12: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Concurrent

Partager encommuniquant

c’est

LE BIEN

Page 13: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Les channels

Même fonctionnement que les pipes unix.Des données en entrée vont vers la sortie,

bloquant ou non.

C’est LE moyen de communicationentre les goroutines !!!

Page 14: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Du Code?

Si le sujet plait,la prochaine fois on codera !

Page 15: Soyez Ready to Go - HumanTalks Montpellier 02/2013

Richesse

Apprennez en plus !

golang.org => tour.golang.org

talks.golang.org

vimeo.com/53221560 - «Code that grows with grace»