Plan du site  
pixel
pixel

Articles - Étudiants SUPINFO

Pourquoi utiliser le langage Golang

Par Fayçal SIDI ALI MEBAREK Publié le 22/08/2019 à 16:06:59 Noter cet article:
(0 votes)
Avis favorable du comité de lecture

En 2009, le langage de programmation Golang est né. Rien de tel pour un developpeur qu'apprendre encore une fois un nouveau langage de programmation. Cependant, ici nous verrons pourquoi ce ne sera pas en vain et que cela en vaut encore une fois la chandelle.

Je vais passer en revu l'état actuel des logiciels et materiels informatique, pour comprendre du coup la nécessité du langage go aujourd'hui.

Apports de la loi de Moore, et ses limites [1]

Gordon Moore, cofondateur du fabriquant de processeur, constate que le nombre de transistors sur un processeur double chaque année, alors que les coùts sont deux fois moins importants. La loi Moore stipule que celle continuera ainsi dans l'avenir.

Aujourd'hui déjà, la tendance à ralenti concernant cette loi; le nombre ne double plus chaque année, mais tout les 18 mois.

Selon le loi de Moore, la croissance devrai être exponentielle mais que cela soit en vigueur pour les deux prochaines dénennies. Beaucoup estiment que la Loi de Moore à atteint sa limite en 2017 et que cela continuera de ralentir.

Les composants materiels des ordinateurs sont de plus en plus petits, mais plus rapides; Cela est dù à l'efficacité accrue des transistors sur les circuits intégrés.

Aujourd'hui encore, nous constatons les bénéfices de la loi de Moore dans la vie de tout les jours dans les domaines : du transport, de la production, l'industrie...

Du fait des nanotechnologies, les transistors sont donc de plus en plus petits, certains plus petits qu'un virus. Cependant, pour des raisons de temperatures entre autre, les experts stipulent que les ordunateurs devrai atteindre leurs limites physiques dans la décenie à venir.

Ainsi donc, le cloud computing par exemple, ou encore la physique quantique pourront très certainement jouer un rôle dans les innovation technologique à venir.

Limitations technologiques

Afin d'appuyer les propos précédent, il est à noter que, depuis 2004, ou le premier processeur Intel Pentium 4 avec une fréquence 3.0 GHz à vu le jour, la puissance des processeurs (ou du moins leurs fréquence) n'ont pas considérablement augmenté. C'est donc depuis 14 ans à ce jour, les performances sur un seul thread ainsi que la fréquence des processeurs n'ont pas évolués de manière suffisamments significatives. Et vous auriez tord de penser que l'ajout de transistors serait la solution à un tel problème, tout d'abord pour des raisons technologiques pour des raisons financières (cela coute effectivement beaucoup plus et que cela n'avantage ducoup en rien les fabriquants de processeurs; mais c'est un autre sujet).

Ils tentent alors de compenser ce problème comme suit :

  • L'ajout de plus de coeurs aux processeurs. Il existe à ce jour des processeurs quad-core ainsi que des processeurs octa-core disponible à la vente (et même plus quand il s'agit d'entreprise ayant besoin de processeurs doté d'une grande puissance ou autres prototypes pas encore commercialisés)

  • Il y a aussi l'hyper-threading

  • Et enfin l'ajout de plus de cache aux processeurs afin d'y augmenter leurs performances

Il y a cependant aussi des limites à ces solutions :

  • Le cache aussi à des limitations physiques, il est impossible de l'augmenter au delà d'une certaine limite car plus le cache est grand, plus celui-ci est lent.

  • Il est aussi coûteux d'augmenter le nombre de coeurs au processeur.

C'est pourquoi il est difficile de compter uniquement sur l'évolution technologique materielle. C'est pourquoi l'utilisation de logiciel et de nouveaux langages de programmation plus efficace serait la seule solution à ce jour afin d'aumenter les performances.

Langages de programmation modernes

Les langages de programmation modernes tel que Java, Python par exemple, fonctionne selon l'environnement à thread unique dont le concepte date d'il y'a au moins 20 ans. Même s'il est vrai qu'il supportent le multi-threading, il est vrai aussi qu'il est difficile de créer une application multi-thread à l'aide de ces langages.

En Java par exemple, il est très difficile de communiquer entre plusieurs tread; et qui plus est, il n'est pas efficace de créer un nouveau thread en termes de mémoire. La preuve en est que chaque thread consomme plus ou moins 1 Mo de la mémoire; Le manque de mémoire ce ferra alors rapidement resentir lors de l'utilisation de milliers de threads simultanément : cela aura pour effet, le crash de votre programme.

Le langage Go, quant à lui, a été introduit en 2009, alors que les processeurs multi-cœurs existaient déjà. C'est pourquoi Go est conçu pour résoudre ces problèmes, et c'est exactement ce que nous voulions faire.

Le Golang utilise ce qu'on appelle des goroutines au lieu des threads. Au lieu de consommer 1 Mo de memoire, ces derniers consomment environ 2 Ko de mémoire. Nous pouvons donc faire fonctionner des millions de goroutines en même temps.

Les goroutines

  • Les goroutines utiliseront la mémoire uniquement en cas de besoin.

  • Le temps de démarrage des goroutines est plus rapide que celui des threads.

  • Les canaux des goroutines permettent des communications sécurisées entre elles.

Ce sont entre autres ces qualités qui font de Golang un langage très puissant.

Langage Go et avantage d'un langage bas niveau

Les langages de programmation comme C/C++ possèdent des avantages importants par rapports à certains langages modernes comme Python ou Java. Effectivement, le fait qu'ils soient compilés et non interprétés leurs offrent de meilleurs performances.

Dans l'exemple de Java, lorsque le projet est compilé, il transforme le code clair connu en octets; pour ensuite les convertir en binaire, compréhensible par les processeurs.

Alors que pour les langages tel que C/C++, le code clair est directement compilé en binaires; ce qui à pour effet de grandement améliorer les performances du programme.

Le Go est donc un langage compilé comme les langages de bas niveau, mais possède aussi le concepte de suppression et allocation d'objet.

Facilité à maintenir le code

La syntaxe du Go est très soignée et propre. C'est exactement l'objetif recherché par Google (créateurs du Go). La simplicité du code devait être au rendez-vous pour les autres développeurs pour que le code soit facilement modifiable et maintenable; Le langage go fonctionne différement des autres langages de programmation orienté objet :

  • Pas de classes : Go utilise des structures.

  • Pas d'héritage afin de faciliter la modification du code.

  • Pas d'annotations.

  • Pas "d'exception".

  • Pas de constructeurs.

Cela pourrai en faire frémir plus d'un; cependant dites-vous que la gain en propreté et en clareté du code en sera l'effet positif.

Le Go est donc quasiment aussi efficace que les langages C/C++, mais possède une syntaxe du code intuitive comme pour python par exemple pour ne citer que lui. Autre aspect avantageux, la syntaxe du Go n'a pas changé depuis la version 1.0 de 2012.

Golang conçu pour régler les problèmes de Google

En effet, Go est la création de Google. Dans le monde, c'est l'une des grande infrastructures cloud; Si ce langage existe, c'est avant tout pour Google de palier au problème d'efficacité et d'évolutivité.

Si cela peut être gage de qualité, il est à noter que beaucoup des plus grandes compagnies du monde utilise le Go : c'est le cas par exemple de Github, Gitlab, Intel ou encore Heetch en France (pour ne citer qu'eux).

Conclusion

Voila que nous avons fait le tour du langage Golang, nous avons passé en revu une partie de son historique depuis sa création, ses qualités et avantages.

Une conclusion qui pourrai faire rougir plus d'un langage de programmation, car comme vous pouvez le voir, le Go est pétrit de qualités.

Si vous ne voulez pas vous mêttre au Golang après cette lecture, c'est que vous êtes ce qu'on appelle, un "hipster developper"... mais ça aussi, c'est quand même la classe !

Bibliographie

  1. https://www.investopedia.com/terms/m/mooreslaw.asp [1]

  2. https://medium.com/@kevalpatel2106/why-should-you-learn-go-f607681fad65

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