Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Golang vs Python

Par Med Amine REZGUI Publié le 12/02/2018 à 23:21:40 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

Source photo: techworm

Introduction

Dans l'article précedent, "https://www.supinfo.com/articles/single/6684-go-programming-language", on a pu voir les bases de Golang. Aujourd'hui, On va Comparer Go Programming language avec le fameux Python.

Les buts de Golang

  • Compilation et exécution plus rapide

  • Statiquement typé

  • Simple

  • Inspiré du langage C

Golang: Définition

Un langage compilé, léger et simple, avec des fonctionnalités modernes

" it's not about scientific design research, it's about to make programmer's life easier, get things done.

Go:

  • Compilé

  • Statiquement typé

    package main
    
    import "fmt"
    
    func main() {
    fmt.Println("Hello, Golang!")
    }

Golang: Workspace

  • Les développeurs Go utilisent généralement un seul workspace

  • Posibilité d'intégrer un logiciel de gestion de versions (Exemple: Git, SVN)

  • Chaque répertoire contient un ou plusieurs packages

  • Un package peut contenir un ou plusieurs fichiers sources Go ( Dans un seul répertoire)

Déploiement de GO

go install <pkg>

go build

Python vs GO

Table 1. hello world

Python Go
print "hello, go" package main
  import "fmt"
  func main() {
  fmt.pritln("hello, go!");
  }
   

Table 2. les boucles

Python Go
#les boucles func main () {
i=1 //boucle
while i<= 10: for i:= 1; i <=10; i++
print i //Affichage de l'entier
i+=1 fmt.println(i)
   
  }
  }

- Go ne supporte pas les Exceptions, à la place, il y a a le Defer, Panic and Recover principe.

package main

import "fmt"

func main() {
    f()
    fmt.Println("Retourné normalement de f.")
}

func f() {
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Récupéré en f", r)
        }
    }()
    fmt.Println("Appel g.")
    g(0)
    fmt.Println("Retourné normalement de g.")
}

func g(i int) {
    if i > 3 {
        fmt.Println("Paniquer!")
        panic(fmt.Sprintf("%v", i))
    }
    defer fmt.Println("Reporter dans g", i)
    fmt.Println("Affichage dans g", i)
    g(i + 1)
}

le resultat de ce script:

Appel g.
Affichage dans g 0
Affichage dans g 1
Affichage dans g 2
Affichage dans g 3
Paniquer!
Reporter dans g 3
Reporter dans g 2
Reporter dans  g 1
Reporter dans  g 0
Récupéré dans f 4
Retourné normalement depuis f. 

Programmation orientée objet

  • Pas d'équivalent à la programmation orientée objet dans Go

  • Pas de "This", pas de "self"

  • Pas d'héritage

  • Pas de hiérarchie des types

  • Pas de relation spécifique avec 'data' et 'interfaces'

  • Pas de chargement des méthodes

Go n'a pas le concept des "object" et "class", mais elle a "structs" avec la meme logique des objets.

package "main"
import "fmt" 

type Entree struc {
     Topic string
     Personne Personne 
}
type Personne struct {
     Nom string
     Email string
     Ecole string
}

func (a Entree) Bonjour(){
     fmt.printf("Bonjour, je m'appelle %s et aujourd'hui c'est $s!\n",
a.Personne.Nom, a.Topic)

}
func (a ENtree info() {
     fmt.printf("J'habite à %s et je fais mes études à %s by the way.\n",
a.Personne.Adresse, a.Person.Ecole)

} 
fun main() {
   eleve := Entree{
       Topic: "\"Présentation de classe\"",
       Personne: Personne{
          Nom: "Jean Pierre",
          City:  "Lyon",
          Ecole:"Supinfo",
    },
   }
    eleve.bonjour()
    eleve.info()
}

Conclusion

Les deux syntaxe de Python et de Golang sont trop proche, ce qui permet aux developpeur Python de passer facilement a Golang; ou permet peut-être de mixer les deux?

A propos de SUPINFO | Contacts & adresses | Enseigner à SUPINFO | Presse | Conditions d'utilisation & Copyright | Respect de la vie privée | Investir
Logo de la société Cisco, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société IBM, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sun-Oracle, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Apple, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Sybase, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Novell, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Intel, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Accenture, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société SAP, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Prometric, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo de la société Toeic, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management Logo du IT Academy Program par Microsoft, partenaire pédagogique de SUPINFO, la Grande École de l'informatique, du numérique et du management

SUPINFO International University
Ecole d'Informatique - IT School
École Supérieure d'Informatique de Paris, leader en France
La Grande Ecole de l'informatique, du numérique et du management
Fondée en 1965, reconnue par l'État. Titre Bac+5 certifié au niveau I.
SUPINFO International University is globally operated by EDUCINVEST Belgium - Avenue Louise, 534 - 1050 Brussels