L’alternative en Python ?

Par :
adrien.rigny
ven, 20/01/2017 - 12:03
Niveau :
Facile

Le langage interactif Python est un outil puissant qui octroie des synthèses claires. Il dispose de nombreuses interfaces pour les appels systèmes et les bibliothèques sont très fournies. De plus, Python étant portable, il est donc présent sur les différentes variantes d’UNIX, mais aussi sur les OS propriétaires : type Windows et autres.

Les origines 

C’est à la fin des années 80 que Guido Van Rossum, originaire des Pays Bas, a créé le langage Python. Ce dernier rejoint l’institut national de recherches mathématiques et informatiques d’Amsterdam en 1983. Désireux d’établir un langage portable il collabore avec une équipe en charge du développement d’un langage ABC afin de l’aider à élaborer la conception de ce que nous connaissons aujourd’hui sous cette solution open-source du nom de Python.

Forces et Faiblesses

Python dispose donc de cette facilité à être transposable sous de nombreux OS. Un programme ne nécessite pas d’être pensé pour un OS particulier puisqu’il est par définition exécutable sur tous les OS. Il n’a donc pas à être réécrit.

Globalement, Python est un langage simple à assimiler avec la syntaxe, ce qui le rend facile à apprendre à l’inverse de certaines syntaxes dans d’autres langages. Ajoutons à cela que le langage est très tolérant puisqu’il nous considère et interprète des erreurs que d’autres langages ne considéreraient pas. Cet avantage facilite amplement l’apprentissage de la programmation, les syntaxes viennent instinctivement. Le souci du détail étant volontairement altérer, développer avec un IDE est d’une aisance rarement égalée, de plus le terminal retourne les erreurs avec des données précises.

Cependant, Python n’est pas absent aux inconvénients, on notera tout de même des vitesses amoindries comparées au C, par exemple. De plus, il est impossible de modifier toutes les racines de langage type « int », « bool » et autres.

Par défaut, de nombreuses bibliothèques sont fournies dès l’installation allant de la programmation système au développement web et ce jusqu’à la programmation d’interfaces graphiques. 

Entre héritage et avenir

La publication originelle de Python3 date de 2008, cependant, la version 2 fût mise à jour jusqu’en 2010 avec la mouture 2.7. 

D’ailleurs, le suivit de la version 2 va bientôt prendre fin, ce qui implique que la branche 2.x ne verra plus de nouvelles versions majeures par la suite. La troisième version est en cours de développement et a déjà vu plus de cinq ans de versions stables, y compris la version 3.3 en 2012, 3,4 en 2014, 3,5 en 2015 et enfin 3,6 en 2016. Le suivi est rigoureux et régulier.

De nombreux utilisateurs se demandent avec quelle version débuter. Le plus simple étant de démarrer avec un tutoriel complet, il en existe autant avec la version 2 que 3. Ainsi, il n’y a pas d’ordre spécifique mais plutôt un ensemble de versions permettant de s’initier en fonction de la logique du programmeur.

Quelle version choisir si l’on commence un nouveau projet ? Le choix doit s’opérer en fonction des bibliothèques que l’on projette d’utiliser.

L’on peut conclure en prétextant qu’il est impératif de différencier les caractéristiques de chaque version de Python. Ceci permettant d’éviter des écueils communs en écrivant le code pour l’un d'entre eux, ou pour si vous projetez de transporter votre projet.

La plus grande différence entre Python 2 et 3 est les bibliothèques que vous utilisez. Si vous faites du développement web et utilisez un grand nombre de bibliothèques qui ne prennent en charge Python 2.x et n'ont pas encore été portées vers Python 3.x, vous pourriez ne pas avoir la même expérience qui rend Python si grand.

Python 3.x a introduit quelques mots-clés et fonctionnalités incompatibles avec Python 2 qui peuvent être importés via le module __future__ intégré en Python 2. Il est recommandé d'utiliser __future__ pour l'importer si vous prévoyez la prise en charge de Python 3.x pour votre code. Par exemple, si nous voulons le comportement de division entière de Python 3.x en Python 2, nous pouvons l'importer via :

From __future__ import division

En conclusion, les débutants ne devraient pas avoir de problème de passer à Python 3, mais si vous êtes un débutant qui dépend de beaucoup de bibliothèques qui sont 2.x seulement, alors peut-être ce n'est pas une excellente idée.

Des bases innovantes

Ainsi, il y a 3 points importants à savoir pour pouvoir apprendre les bases en python :

-        En Python tout est objet : Effectivement chaque langage de programmation à sa propre définition de l’objet. En python, chaque type est une classe qui est l’héritière de la classe « object » de base. Il n’est pas nécessaire de spécifier cet héritage.  Les objets n’ont pas besoin de posséder d’attribut ni de méthodes. Les listes, les fonctions, les modules sont considérés comme étant des objets en python.

-        En Python tout est public : Tous les attributs et les méthodes sont accessibles. Il n’existe pas de « private » ou de « protected » comme par exemple en C++.

-        En Python toute méthode est virtuelle : Il est possible de surcharger.

Nous allons maintenant montrer un exemple de transtypage en python. La notion de transtypage se définit par le fait de convertir un type en un autre. Il faut tout le même faire attention car il peut y avoir quelques modifications. Par exemple nous allons affecter un nombre flottant à une variable et passer celle-ci en nombre entier :

On peut voir que la valeur n’a même pas été arrondie, mais que celle-ci a été tronquée.

Les chaînes de caractères en python (str) sont des objets immuables, c’est-à-dire qu’il est impossible de les modifier. Str est une séquence ordonnée de caractère Unicode d’un à quatre octets chacun. On retrouve également en python des caractères spéciaux comme l’antislash « / » qui est un caractère d’échappement. On retrouve également « \n » pour faire un retour à la ligne.  On peut concaténer 2 chaînes de caractères avec l’opérateur « + » :

On peut également répéter une chaîne de caractère avec l’opérateur « * ».

La notion de séquence en python est importante. Celle-ci regroupe plusieurs types d’objet tel que les chaînes de caractères (str), les listes (list) par exemple. Celle-ci permette notamment de travailler sur deux notions importantes en python qui sont l’indexation et le sciling. L’indexation permet d’accéder à un élément précis en utilisant un indice qui correspond à la position de l’élément dans la séquence.

L’accès à l’élément que l’on souhaite extraire se fait en notant le nom de la séquence suivit d’entre crochet de l’indice :

Il est important de souligner que le premier caractère d’une séquence est en position 0.

La notion de sciling (tranchage) permet d’extraire une petite chaîne hors d’une chaîne plus longue. Il est nécessaire d’indiquer l’indice de début (indice qui sera inclut) et l’indice de fin (indice qui sera exclu) et de les séparer par deux points :

Les listes (list) sont également des objets régulièrement utilisés en Python. Une liste est une séquence ordonnée contenant n’importe quel objet. Une liste est un objet muable, c’est-à-dire qu’il est possible de la modifiée.  Celle-ci s’écrit entre crochet et les termes sont séparés par des virgules. Comme toutes les séquences en python, il est possible d’utiliser l’indexation, la concaténation. Comme tout est objet en python, les listes possèdent donc des méthodes :

La méthode « append » permet d’ajouter un élément à la liste qui lui est noté entre parenthèse et la méthode remove permet de supprimer un élément de la liste.

Nous allons maintenant parler des dictionnaires (dict). Ce sont des objets très puissants en python. Cependant, ce ne sont pas des objets catégorisés comme des séquences. Cet objet est constitué d’une clef et d’une valeur. Contrairement aux séquences ou il faut un indice pour accéder aux éléments, avec un dictionnaire l’accès se fait en utilisant une clef. Les dictionnaires s’écrivent entre accolades, les clefs et les valeurs sont séparées par deux points et les éléments sont séparés par des virgules.

Après vous avoir présenté les objets en python, nous allons maintenant parler des structures conditionnelles représenté par les trois mots clef : « if », « elif » et « else ». Nous pouvons associer à ses mots clef  les opérateurs de comparaison et les opérateurs logiques.

En python, on retrouve 2 boucles : la boucle for et la boucle while. La boucle for est une boucle qui permet de parcourir une séquence. Elle s’écrit toujours avec le mot clef « in » et se termine toujours par deux points. La variable prendra à chaque itération les valeurs de la séquence.

La fonction « enumerate » va retourner l’indice et la valeur du caractère.

Enfin, la boucle while (tant que) doit s’écrire avec deux points à la fin : « while : ». Cette condition se répète tant qu’elle est vrai.

Nous allons maintenant parler d’un autre élément important en python : les fonctions. Une fonction est un ensemble d’instruction permettant de réaliser une tâche.

Dans cet exemple, la première fonction permet d’afficher un menu. La deuxième fonction va permettre de vérifier le nombre choisi par l’utilisateur. Tant que le joueur n’aura pas entré un nombre, le programme lui demandera de nouveau de saisir une valeur valide. Le mot clef « return » permet de renvoyer la valeur de sortie : c’est-à-dire le résultat de la fonction. Ce résultat pourra être réutilisé dans d’autre fonction pour traiter une autre tâche.

Utilisation en entreprise

Les avis d’une utilisation professionnelle de Python divergent. Par convention, il semble que le recours à notre langage favori soit amené sur des créations de Cahiers des Charges. Son utilisation permet de présenter rapidement des ébauches et maquettes. L’inconvénient étant que, dès la phase de production, il semble que son recours soit minime.

De nombreuses compagnies s’aventures sur la voie de ce langage. C’est le cas du jeu EVE Online qui exploite Python pour déterminer en temps réel les actions du joueur. Cette utilisation octroie une facilité de calculs en lien avec les serveurs du jeu. Le recours est pratique, surtout pour un jeu qui compte en moyenne 50,000 connections par serveurs.

La nécessité d’utiliser Python est sujette à de nombreuses discussions. Encore une fois, les avis divergent, il n’est pas rare de trouver sur les forums des voies s’élever pour affirmer que le langage est capable de répondre à un besoin conséquent. Son utilité en production n’est pas anecdotique puisque les besoins utilisateurs sont compatibles avec du Python, encore faut-il convaincre les développeurs.

Pour illustrer, notez que Python est utilisé au sein de Industrial Light and Magic pour toute application de rendu. Son exploitation permet de renforcer le traitement des polygones pour un rendu plus lisse de l’image. Il est donc utilisé comme une couche supplémentaire à la première application de traitement et rendu de l’image. Sa première exploitation par le studio remonte à 2001 pour la réalisation de certains effets numériques de l’Attaque des Clones.

Des retours d’utilisation professionnelle, on remarquera des avantages non négligeables tels qu’une écriture du code rapide, une grande lisibilité ou encore les bibliothèques complètes. De plus, le langage permet de générer du code source pour d’autres langages.

D’ailleurs, beaucoup de gens pensent maîtriser correctement le langage après quelques cours, et heures de pratique. Cette sensation vient de la simplicité apparente de python pour un débutant. Programmer en python n’est pas dédié qu’à la simplicité. Ainsi, de nombreuses fonctions permettent de complexifier le tout.

D’une utilisation avancée l’on appréciera les coroutines qui sont des fonctions utilisant les générateurs, elles permettent de structurer et tempérer des actions. L’intérêt est de pouvoir mettre en pause leur exécution en renvoyant une valeur. Durant cette pause, elles peuvent également recevoir une valeur leur indiquant comment continuer leur exécution.

Aussi, les threads permettent l’exécution de plusieurs processus légers au même instant-T. Leur utilisation peut dépendre, par exemple des coroutines. Plus précisément, l’on retrouve ce cas avec l’interaction d’un serveur web ou de la fonction sleep.

Concernant les générateurs, il s’agit d’objets que l'on crée en appelant une fonction que l'on crée soi-même et qui possède dans son code l'instruction yield. Cette fonction ne doit retourner aucune valeur.

Un besoin assez courant quand on manipule une liste ou tout autre objet itérable est de récupérer en même temps l'élément et son indice à chaque itération. La fonction enumerate permet de récupérer une liste de tuples en fonction du contenu de la liste, et d'une manière très pratique.

L’avantage est que l’on itère directement sur les valeurs à la sortie d'un générateur, au lieu d'utiliser un indice. On peut donc l’utiliser pour numéroter les lignes d’un texte, pratique.

On notera que son l’utilisation du langage est très appréciée des administrateurs pour automatiser des petites tâches du quotidien des utilisateurs.

Pourquoi ce langage ?

En soit, python est avant tout un langage qui favorise l’apprentissage, grâce aux syntaxes claires. D’ailleurs, ce langage est une solution pour éviter de rebuter l’initiation aux novices. Ses notions étant simples, il octroie un apprentissage clair et solide. Python est simple mais pas assez rigoureux pour les débutants. Cependant le typage dynamique bloque globalement l’aide contextuelles.

La syntaxe de Python est très légère et l’indentation permet à l'interpréteur de comprendre la structure du code.

Son emploi n'empêche nullement l'utilisation d’autres langages, bien au contraire, Python est bien une solution complémentaire ! Aujourd’hui en version3, l’on ne peut que constater sa force tant en utilisation native qu’en surcouche applicative. Il ne fait nul doute qu’il continuera d’être requis et apprécié dans de nombreux cas.

Les tableaux suivant démontrent bien que le langage est fortement utilisé pour les site et applications web, aussi bien que demandé par les employeurs.

Source tableaux : http://www.developpez.com/actu/87863/Meilleurs-langages-de-programmation-en-2015-decouvrez-les-langages-en-forte-croissance-et-les-plus-demandes-par-les-employeurs-selon-l-IEEE/

Pour finir, nous retiendrons que la dernière version de Python permet l'enseignement de concepts de programmation applicables avec une grande aisance. Tous les éléments sont réunis pour que cet outil open-source continue à pérenniser.

Adrien Rigny
Loïc Demaison
Yassin Fraihi 

Ecole supérieure Esaip de Dijon