SlideShare une entreprise Scribd logo
1  sur  24
Université Badji Mokhtar Annaba
Faculté des sciences de l’ingéniorat
Département de l’informatique
Spécialité: ILC
Sujet de l’exposé:
Préparé par:
Mamadji Rostom
Année: 2018-2019
GO Language
Plan du travail :
 Historique
 Pourquoi GO!
 Installation
 Spécificités
 Programmation avec GO
 Projets utilisant go
 Conclusion
Historique
 Projet interne Google à partir de 2007
 inventé par Rob Pike et Ken Thompson
 Open source depuis 2009
 Aujourd’hui, version 1.12.6
Pourquoi GO!
 Souplesse d’un langage interprété
 combine le meilleur du langage statique et
du langage dynamique.
 Efficacité et sécurité d’un langage
compilé
 Moderne : réseau et multi-processeurs
 Rapide : compilation et exécution
 Portable : FreeBSD (v8 et sup.)
Linux(noyau 2.6.23 et sup.),
Mac OS X (v10.6 et sup.)
Windows (XP et sup.)
installation
Ubuntu :
Tappez :
1- sudo apt-get update
2 -sudo apt-get -y upgrade.
3 -sudo apt-get install golang
Windows :
Telecharger GO depuis le site officiel
https://golang.org/dl/
spécificités
 Langage multi paradigmes:
programmation concurrente , impérative
et structurée.
 Compatible avec la programmation
système et application.
 Pas d’exceptions (try …catch )
 L’Absence de la notion de classes (GO est un
langage procédural).
 Pas d’heritage ni de surcharge .
 Garabage Collected (ramasse-miettes)
 Valeurs de retour multiples Go supporte de base
les valeurs de retour multiples. On s'en sert
souvent en Go, par exemple pour renvoyer le
résultat et la valeur d'erreur d'une fonction.
Programmation avec
GO
commandes
 Condition : if {……} else{…….}
 Boucle : for (uniquement)
func main() {
for i:=0; i < 10; i++
{ fmt.Print(i, " ") }}
Nous n'avons pas de boucle While séparée en Go. Nous
pouvons simplement utiliser la variation pour obtenir
le même résultat.
func main() {
i := 0
for i < 10 { fmt.Print(i, " ") i++ } }
Types
 Float64.
 String
 Array ,ex: [5]byte,
 Slice ,ex: make([]int, 50, 100),
 Map ,ex: map[string]int
 Pointer - *
 Channel - chan
Mots cles
 Const : constantes
 Default :valeur par defaut
 func : declarer une fonction
 interface:des collections nommées de
signatures de méthodes.
 Struct : collection de champs typés
 defer :pour liberer les ressources
Exécution
Pour exécuter le programme, mettez le
code dans un fichier ″hello-world.go″ et
lancez go run:
$ go run hello-world.go hello world
 Parfois on veut compiler pour obtenir un
exécutable. Nous pouvons faire cela
avec go build:
$ go build hello-world.go
$ ls hello-world hello-world.go
Exécutions dans Main
package main
import "fmt"
func main()
//comment
{ fmt.Println("hello world") }
Variables
 En Go, les variables sont déclarées
explicitement et utilisées par le compilateur.
 var déclare une ou plusieurs variables:
var a string = "initial"
fmt.Println(a)
Fonctions
func plusPlus(a, b, c int) int
{ return a + b + c } //declaration
 func main() {
res = plusPlus(1, 2, 3)
fmt.Println("1+2+3=",res) } //appel
 $ go run functions.go 1+2+3 =6
Méthodes
 Go supporte des méthodes définies dans les
structures.
 Les méthodes peuvent être définies soit pour un
pointeur, soit pour une valeur de type receveur.
Voici un exemple avec une valeur:
func (r rect) perim() int { return 2*r.width
+ 2*r.height }
func main() { r := rect{width: 10, height: 5}
fmt.Println("perim:", r.perim()
interface
 type Chien struct {}
func (c Chien) Parle() string { return "Wouf !" }
type Chat struct {}
func (c Chat) Parle() string { return "Miaou !" }
func main() {
animaux := []Animal{Chien{}, Chat{}}
for _, animal := range animaux { fmt.Println(animal.Parle()) }
}
% go build interface.go // COMPILATION OK
% ./interface
Wouf !
Miaou !
Bibliothèque
 Comme le C, Go exige d'indiquer quelles
bibliothèques on utilisera.
 À la différence du C, il considère la
compilation en erreur si cette bibliothèque
n'est pas utilisée.
 Le compilateur Go ne contient en effet pas
de messages d'avertissements par choix
des concepteurs : « Il n'est pas
indispensable de signaler ce qu'il ne serait
pas indispensable de corriger »
Principales bibliothèques :
 fmt fournit 19 fonctions de mise en forme des
entrées-sorties dont Println, Print et Printf
 io fournit des procédures d'entrées-sorties elles-
mêmes, dont ReadFull, Seek, WriteString...
 os interface le système, par exemple pour ouvrir et
fermer des fichiers, dont OpenFile, ReadAt...
 strings fournit environ 50 fonctions traitant des
chaînes de caractères
 time fournit des outils de mesure des temps
d'exécution, dont time.Now et time.Since()
Projets utilisant GO
Conclusion
 Un objectif de Go est donné par Rob Pike,
l'un de ses trois créateurs, qui dit à propos
des développeurs inexpérimentés:
« Ils ne sont pas capables de comprendre un
langage brillant, mais nous voulons les
amener à réaliser de bons programmes.
Ainsi, le langage que nous leur donnons
doit être facile à comprendre et facile à
adopter »

Contenu connexe

Tendances

09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreducePatrick Bury
 
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Mathieu Saby
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniShellmates
 
Enib cours c.a.i. web - séance #5 - groovy
Enib   cours c.a.i. web - séance #5 - groovyEnib   cours c.a.i. web - séance #5 - groovy
Enib cours c.a.i. web - séance #5 - groovyHoracio Gonzalez
 

Tendances (9)

09 big data mapreduce
09 big data mapreduce09 big data mapreduce
09 big data mapreduce
 
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
Découvrez OpenRefine: un outil gratuit pour nettoyer, préparer et enrichir vo...
 
Introduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El HassaniIntroduction à Python - Achraf Kacimi El Hassani
Introduction à Python - Achraf Kacimi El Hassani
 
Tuto crontab
Tuto crontabTuto crontab
Tuto crontab
 
Intro c++
Intro c++Intro c++
Intro c++
 
Python avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiersPython avancé : Lecture et écriture de fichiers
Python avancé : Lecture et écriture de fichiers
 
Theme 8
Theme 8Theme 8
Theme 8
 
Linux Administrateur
Linux AdministrateurLinux Administrateur
Linux Administrateur
 
Enib cours c.a.i. web - séance #5 - groovy
Enib   cours c.a.i. web - séance #5 - groovyEnib   cours c.a.i. web - séance #5 - groovy
Enib cours c.a.i. web - séance #5 - groovy
 

Similaire à Go

Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015Stéphane Legrand
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage GoSylvain Wallez
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBruno Bonnin
 
Interface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewInterface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewOSInet
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxbpmana
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxLuneSabsPericolo1
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxOlyvierNzighou1
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxOlyvierNzighou1
 
Code Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec pythonCode Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec pythonbbourgois
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2MEZied
 
Formation python
Formation pythonFormation python
Formation pythonj_lipaz
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)ISIG
 

Similaire à Go (20)

Presentation langage go_19022015
Presentation langage go_19022015Presentation langage go_19022015
Presentation langage go_19022015
 
Introduction au langage Go
Introduction au langage GoIntroduction au langage Go
Introduction au langage Go
 
introduction au CPP
introduction au CPPintroduction au CPP
introduction au CPP
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
Interface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TViewInterface texte plein écran en Go avec TView
Interface texte plein écran en Go avec TView
 
Support Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptxSupport Formation Samsung - Python - Session 1 - 2022.pptx
Support Formation Samsung - Python - Session 1 - 2022.pptx
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Langage C++
Langage C++Langage C++
Langage C++
 
Microsoft07coursbaptiste
Microsoft07coursbaptisteMicrosoft07coursbaptiste
Microsoft07coursbaptiste
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Code Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec pythonCode Week 2014 - atelier d'initiation à la programmation avec python
Code Week 2014 - atelier d'initiation à la programmation avec python
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
Td pascal tdD
Td pascal tdDTd pascal tdD
Td pascal tdD
 
log file sous Netbeans et J2ME
log file sous Netbeans et J2MElog file sous Netbeans et J2ME
log file sous Netbeans et J2ME
 
Fascicule tp programmation c
Fascicule tp programmation cFascicule tp programmation c
Fascicule tp programmation c
 
Formation python
Formation pythonFormation python
Formation python
 
Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)Programmation événementielle avec VB (ISIG)
Programmation événementielle avec VB (ISIG)
 
Vim presentation
Vim presentationVim presentation
Vim presentation
 

Go

  • 1. Université Badji Mokhtar Annaba Faculté des sciences de l’ingéniorat Département de l’informatique Spécialité: ILC Sujet de l’exposé: Préparé par: Mamadji Rostom Année: 2018-2019 GO Language
  • 2. Plan du travail :  Historique  Pourquoi GO!  Installation  Spécificités  Programmation avec GO  Projets utilisant go  Conclusion
  • 3. Historique  Projet interne Google à partir de 2007  inventé par Rob Pike et Ken Thompson  Open source depuis 2009  Aujourd’hui, version 1.12.6
  • 5.  Souplesse d’un langage interprété  combine le meilleur du langage statique et du langage dynamique.  Efficacité et sécurité d’un langage compilé  Moderne : réseau et multi-processeurs
  • 6.  Rapide : compilation et exécution
  • 7.  Portable : FreeBSD (v8 et sup.) Linux(noyau 2.6.23 et sup.), Mac OS X (v10.6 et sup.) Windows (XP et sup.)
  • 8. installation Ubuntu : Tappez : 1- sudo apt-get update 2 -sudo apt-get -y upgrade. 3 -sudo apt-get install golang Windows : Telecharger GO depuis le site officiel https://golang.org/dl/
  • 9. spécificités  Langage multi paradigmes: programmation concurrente , impérative et structurée.  Compatible avec la programmation système et application.  Pas d’exceptions (try …catch )
  • 10.  L’Absence de la notion de classes (GO est un langage procédural).  Pas d’heritage ni de surcharge .  Garabage Collected (ramasse-miettes)  Valeurs de retour multiples Go supporte de base les valeurs de retour multiples. On s'en sert souvent en Go, par exemple pour renvoyer le résultat et la valeur d'erreur d'une fonction.
  • 12. commandes  Condition : if {……} else{…….}  Boucle : for (uniquement) func main() { for i:=0; i < 10; i++ { fmt.Print(i, " ") }} Nous n'avons pas de boucle While séparée en Go. Nous pouvons simplement utiliser la variation pour obtenir le même résultat. func main() { i := 0 for i < 10 { fmt.Print(i, " ") i++ } }
  • 13. Types  Float64.  String  Array ,ex: [5]byte,  Slice ,ex: make([]int, 50, 100),  Map ,ex: map[string]int  Pointer - *  Channel - chan
  • 14. Mots cles  Const : constantes  Default :valeur par defaut  func : declarer une fonction  interface:des collections nommées de signatures de méthodes.  Struct : collection de champs typés  defer :pour liberer les ressources
  • 15. Exécution Pour exécuter le programme, mettez le code dans un fichier ″hello-world.go″ et lancez go run: $ go run hello-world.go hello world  Parfois on veut compiler pour obtenir un exécutable. Nous pouvons faire cela avec go build: $ go build hello-world.go $ ls hello-world hello-world.go
  • 16. Exécutions dans Main package main import "fmt" func main() //comment { fmt.Println("hello world") }
  • 17. Variables  En Go, les variables sont déclarées explicitement et utilisées par le compilateur.  var déclare une ou plusieurs variables: var a string = "initial" fmt.Println(a)
  • 18. Fonctions func plusPlus(a, b, c int) int { return a + b + c } //declaration  func main() { res = plusPlus(1, 2, 3) fmt.Println("1+2+3=",res) } //appel  $ go run functions.go 1+2+3 =6
  • 19. Méthodes  Go supporte des méthodes définies dans les structures.  Les méthodes peuvent être définies soit pour un pointeur, soit pour une valeur de type receveur. Voici un exemple avec une valeur: func (r rect) perim() int { return 2*r.width + 2*r.height } func main() { r := rect{width: 10, height: 5} fmt.Println("perim:", r.perim()
  • 20. interface  type Chien struct {} func (c Chien) Parle() string { return "Wouf !" } type Chat struct {} func (c Chat) Parle() string { return "Miaou !" } func main() { animaux := []Animal{Chien{}, Chat{}} for _, animal := range animaux { fmt.Println(animal.Parle()) } } % go build interface.go // COMPILATION OK % ./interface Wouf ! Miaou !
  • 21. Bibliothèque  Comme le C, Go exige d'indiquer quelles bibliothèques on utilisera.  À la différence du C, il considère la compilation en erreur si cette bibliothèque n'est pas utilisée.  Le compilateur Go ne contient en effet pas de messages d'avertissements par choix des concepteurs : « Il n'est pas indispensable de signaler ce qu'il ne serait pas indispensable de corriger »
  • 22. Principales bibliothèques :  fmt fournit 19 fonctions de mise en forme des entrées-sorties dont Println, Print et Printf  io fournit des procédures d'entrées-sorties elles- mêmes, dont ReadFull, Seek, WriteString...  os interface le système, par exemple pour ouvrir et fermer des fichiers, dont OpenFile, ReadAt...  strings fournit environ 50 fonctions traitant des chaînes de caractères  time fournit des outils de mesure des temps d'exécution, dont time.Now et time.Since()
  • 24. Conclusion  Un objectif de Go est donné par Rob Pike, l'un de ses trois créateurs, qui dit à propos des développeurs inexpérimentés: « Ils ne sont pas capables de comprendre un langage brillant, mais nous voulons les amener à réaliser de bons programmes. Ainsi, le langage que nous leur donnons doit être facile à comprendre et facile à adopter »

Notes de l'éditeur

  1. Un ramasse-miettes, ou récupérateur de mémoire, ou glaneur de cellules est un sous-système informatique de gestion automatique de la mémoire. Il est responsable du recyclage de la mémoire préalablement allouée puis inutilisée.