| accessibilité internet: réduction taille du texte accessibilité internet: agrandissement taille du texte | impression du contenu principal de cette page web fermez

Pourquoi choisir Python en tant que langage de programmation

cours de programmation python, ateliers de formation python, cours individuels python

Choix d'un langage de programmation

Il existe un très grand nombre de langages de programmation, chacun avec ses avantages et ses inconvénients. Il faut bien en choisir un. Certains sont liés à des environnements de programmation, c'est à dire des logiciels propriétaires, tandis que d'autres n'offrent pas un ensemble de simplicité d'utilisation, de robustesse et de puissance. Le langage dominant est sans doute le C/C++. Ce langage s'impose comme une référence absolue, et tout informaticien doit s'y frotter tôt ou tard. Il est malheureusement très rébarbatif et compliqué, trop proche de la machine. Sa syntaxe est peu lisible et fort contraignante. La mise au point d'un gros logiciel écrit en C/C++ est longue et pénible. Les mêmes remarques valent aussi dans une certaine mesure pour le langage Java.

D'autre part, la pratique moderne de ce langage fait largement appel à des générateurs d'applications et autres outils d'assistance très élaborés tels que C++Builder, Kdevelop, etc. Ces environnements de programmation peuvent certainement se révéler très efficaces entre les mains de programmeurs expérimentés, mais ils sont basés sur beaucoup trop d'outils complexes; ils présupposent de la part de l'utilisateur des connaissances avancées qu'un débutant ne maîtrise évidemment pas.

Par ailleurs l'utilisation d'un langage de plus haut niveau, moins contraignant, à la syntaxe plus lisible parait un excellent choix pour une large palette des tâches de programmation. Parmi ces langages (Perl, Tcl/Tk, Ruby ..), Python est un langage très moderne à la popularité grandissante.

Présentation du langage Python

Python est un langage portable, dynamique, extensible, gratuit, qui permet sans l'imposer une approche modulaire et orientée objet de la programmation. Python est développé depuis 1989 en logiciel libre par Guido van Rossum et de nombreux informaticiens bénévoles.

Caractéristiques du langage

Détaillons les principales caractéristiques et atouts de Python, plus précisément du langage et de ses deux implémentations

  • Python est portable, non seulement sur les différentes variantes d'unix, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, MS-DOS .. et les différentes variantes de Windows.
  • Python est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
  • Python convient aussi bien à des scripts d'une dizaine de lignes de code qu'à des projets complexes de plusieurs dizaines de milliers de lignes.
  • Python est portable, non seulement sur les différentes variantes d'unix, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, MS-DOS .. et les différentes variantes de Windows.
  • Python est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
  • Python convient aussi bien à des scripts d'une dizaine de lignes de code qu'à des projets complexes de plusieurs dizaines de milliers de lignes.
  • La syntaxe de Python est très simple et, combinée à des types de données évolués (listes, dictionnaires ..), conduit à des programmes à la fois très compacts et très lisibles. A fonctionnalités égales, un programme Python complet de commentaires est souvent de 3 à 5 fois plus court qu'un programme C ou C++, ou même Java équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
  • Python gère ses ressources (mémoire, descripteurs de fichiers ..) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d'un "garbage collector", ramasse miettes). Il n'y a pas de pointeurs explicites en Python.
  • Python est aussi multi-threadé.
  • Python est orienté objet. Il supporte l'héritage multiple et la surcharge des opérateurs. Dans son modèle objet, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelles.
  • Python intègre, comme Java ou les versions récentes de C++, un système d'exceptions, qui permettent de simplifier considérablement la gestion des erreurs.
  • Python est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions Python), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), réflectif (il supporte la méta-programmation, par exemple la capacité pour un objet de se rajouter ou de s'enlever des attributs ou des méthodes, ou même de changer de classe en cours d'exécution) et introspectif (un grand nombre d'outils de développement, comme le "debugger" ou le "profiler", sont implantés en Python lui-même).
  • Comme Scheme ou SmallTalk, Python est dynamiquement typé. Tout objet utilisé par le programmeur possède un type bien défini à l'exécution, qui n'a pas besoin d'être déclaré à l'avance.
  • Python possède actuellement deux implémentations. L'une, écrite en C, interprétée, dans laquelle les programmes Python sont compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante: Java étant statiquement typé, il est beaucoup plus facile d'accélérer l'exécution d'un programme Java que d'un programme Python). L'autre, JPython, est écrit en Java et génère directement du bytecode Java.
  • Python est extensible : comme Tcl ou Guile, on peut facilement l'interfacer avec des bibliothèques C existantes. On peut aussi s'en servir comme d'un langage d'extension pour des systèmes logiciels complexes.
  • La bibliothèque standard de Python, et les paquets contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières, services UNIX standards (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML ..), persistance et bases de données, interfaces graphiques.
  • Python est un langage qui continue à évoluer, soutenu par une communauté d'utilisateurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre.
  • Enfin, Python est un langage de choix pour traiter le XML.

Versions du langage

Python continue à évoluer, mais cette évolution ne vise qu'à améliorer ou perfectionner le langage. On n'aura pas à modifier tous nos programmes afin de les adapter à une nouvelle version qui serait devenue incompatible avec les précédentes. Cependant Il existe deux branches de développement: Python 2.x et Python 3.x

Bien que Python 3.0 soit sorti peu après la version 2.6, et que la version 3.1 et 3.2 soient sortie entretemps, peu de développeurs ont sauté le pas. Cela s'explique par diverses raisons. La première est que Python 3 n'apporte que peu de nouvelles fonctionnalités, mais impose de modifier le code source du projet (modifications qui peuvent être réalisées automatiquement par l'outil 2to3). La seconde est que toutes les bibliothèques majeures ne sont pas encore disponibles pour Python 3.

Enfin, du point de vue des développeurs de Python, il y avait deux branches dans lesquelles les nouvelles fonctionnalités étaient ajoutées (par exemple, 2.7 et 3.2), en plus des deux branches de maintenance (2.6 et 3.1). La plupart du temps, chaque commit devait être répliqué dans les 4 branches, ce qui a un coût non négligeable (bien qu'une partie soit automatisée) car le code de chaque branche a plus ou moins divergé (le pire étant les branches Python 2 et Python 3 justement).

Maintenant les nouvelles fonctionnalités seront développées uniquement dans Python 3. Les efforts vont donc se concentrer pour rendre cette branche plus attractive et aider au portage vers Python 3. Par exemple on peut consulter la liste des nouveautés de la branche 3.2. Les modifications des fonctionnalités du langage Python sont gérées par la procédure PEP (Python Enhancement Proposals): le PEP contient l'index de toutes les propositions d'amélioration de Python. Les numéros PEP sont attribués uniquement; une fois assignés ne sont jamais changés.

Outil 2to3

2to3 est un programme Python qui lit le code source de Python 2.x et applique une série de "fixateurs" pour le transformer en code valide Python 3.x. La bibliothèque standard contient un ensemble riche de fixateurs qui va gérer la quasi-totalité du code. 2to3 utilise la bibliothèque lib2to3, qui est une bibliothèque flexible et générique, de sorte qu'il est possible d'écrire ses propres "fixateurs" 2to3. lib2to3 pourrait également être adapté à des applications personnalisées dans lesquelles le code Python peut être édité automatiquement.

2to3 est généralement installé avec l'interpréteur Python comme un script. Il est également situé dans le répertoire tools/scripts de la racine de Python. Les arguments principaux du script 2to3 consistent d'une liste de fichiers ou répertoires à transformer. Les répertoires sont récursivement parcourus à la recherche des fichiers sources Python. Voici un exemple de fichier source de Python 2.x, nommé exemple.py (pas la peine pour l'instant de s'attarder sur la fonction prédéfinie format):

def bonjour(nom):
    print "Hello, {0}!".format(nom)
print "Le nom est:"
nom = raw_input()
bonjour(nom)

Il peut être converti en code Python 3.x avec le script 2to3 en ligne de commande:

$ 2to3 exemple.py

Cette commande imprime en console une information en format diff des differences avec le fichier source original, sans par ailleurs modifier le fichier source. 2to3 peut aussi écrire les modifications dans le fichier source avec l'option -w. Dans ce cas le fichier source original est sauvegardé avec une extension .bak (cependant en ajoutant l'option -n on peut renoncer à la sauvegarde du fichier source original):

$ 2to3 -w exemple.py

Après transformation, le fichier source exemple.py ressemble à ceci:

def bonjour(nom):
    print("Hello, {0}!".format(nom))
print("Le nom est")
nom = input()
bonjour(nom)

Par défaut, 2to3 exécute une série de "fixateurs" prédéfinis. L'option -l liste tous les "fixateurs" disponibles. Un ensemble explicite de "fixateurs" à utiliser peut être donné avec l'option -f. De même, l'option -x désactive explicitement un "fixateur". L'exemple suivant exécute seulement les fixateurs import et has_key:

$ 2to3 -f imports -f has_key example.py

Formation individuelle (DIF) et cours en programmation Python par RasadaCrea

Tous les cours de formation Python dispensé par RasadaCrea sont individuels et personnalisés. Contactez RasadaCrea pour en savoir plus au sujet de la création de votre plan personnalisé de formation en programmation Python, ainsi que sur les tarifs et formalités liées aux cours dispensés.