Le langage
3
Introduction
à Python
Chapitre 1 —
Introduction à Python
CHAPITRE 1
Introduction à Python
Python est un langage de programmation polyvalent, qui existe déjà depuis assez long-
temps, Guido van Rossum, son créateur, ayant débuté son développement en 1990. Stable
et mature, il s’agit d’un langage de très haut niveau, dynamique et orienté objet — toutes
caractéristiques intéressant au plus haut point les développeurs. Python fonctionnant sur
les principales plateformes matérielles et sur les systèmes d’exploitation les plus connus,
ne contraint donc pas vos choix dans ce domaine.
Python offre une forte productivité pour toutes les phases du cycle de vie d’un logiciel :
analyse, conception, prototypage, codage, tests, débogage, optimisation, documentation,
déploiement et, bien sûr, maintenance. La popularité de Python n’a cessé de s’accroître au
cours des ans, et de ce fait, de nombreuses solutions logicielles y ont recours. Connaître
Python constitue donc un atout pour le programmeur, qui risque fort de le rencontrer tôt
ou tard.
Python fournit un mélange unique d’élégance, de simplicité et de puissance. Avec lui,
vous deviendrez rapidement productif grâce à sa cohérence et sa régularité, grâce à la
richesse de sa bibliothèque standard et aux nombreux modules tiers déjà disponibles.
Python est facile à apprendre : il est donc particulièrement adapté pour le programmeur
débutant, tout en étant suffisamment puissant pour l’expert le plus exigeant.
Le langage
Le langage Python, bien que non minimaliste, est assez spartiate, mais pour de bonnes
raisons. Lorsqu’un langage offre un bon moyen pour exprimer une idée de conception, en
fournir d’autres noffre que peu d’avantages dans la mesure où les coûts liés à la
complexité du langage augmentent de manière exponentielle. Un langage compliqué est
plus difficile à apprendre et à maîtriser (ainsi quà implémenter efficacement sans bogues)
qu’un langage plus simple. Toutes les complications et les bizarreries d’un langage entra-
ch01.fm Page 3 Vendredi, 19. janvier 2007 11:10 11
4 Chapitre 1 — Introduction à Python
vent la maintenance logicielle, notamment dans les gros projets où de nombreux
veloppeurs coopèrent et maintiennent souvent du code écrit par d’autres.
Python est simple, mais pas simpliste. Il respecte l’idée que si un langage se comporte
d’une certaine façon dans certains contextes, l’idéal serait qu’il fonctionne de la même
façon dans tous les contextes. Il suit également le principe selon lequel un langage ne
devrait pas posséder de raccourcis de confort, de cas spéciaux, d’exceptions
ad hoc
, de
distinctions trop subtiles ou d’optimisations rusées et cachées. Un bon langage, comme
n’importe quel autre objet bien conçu, doit marier ces principes généraux avec élégance et
sens pratique.
Python est un langage de programmation polyvalent, ses caractéristiques sont donc utiles
dans n’importe quel domaine du développement logiciel. Il nexiste pas de domaine dans
lequel Python ne peut faire partie d’une solution optimale. « Partie » est un mot impor-
tant, ici — bien que de nombreux développeurs considèrent que Python comble tous
leurs besoins, il peut ne pas être utilisé seul. Les programmes Python peuvent coopérer
facilement avec un grand nombre d’autres composants logiciels, ce qui en fait un langage
idéal pour raccorder des composants écrits dans d’autres langages.
Python est un langage de très haut niveau. Cela signifie qu’il utilise un haut degré
d’abstraction, conceptuellement plus éloigné de la machine sous-jacente que ne le sont des
langages compilés classiques comme C, C++ ou Fortran, qui sont traditionnellement
appelés langages de haut niveau. Python est également plus simple, plus rapide à traiter et
plus régulier que ces langages de haut niveau. Cela permet une grande productivité dans
la programmation et fait de Python un outil de développement attrayant. Certes, de bons
compilateurs de langages compilés classiques produiront du code machine binaire qui
s’exécute bien plus rapidement que le code Python, mais dans la majorité des cas, les
performances des applications en Python s’avèrent suffisantes. Si ce nest pas le cas, vous
pouvez appliquer les techniques d’optimisation présentées au chapitre 18 pour améliorer
les performances de votre programme tout en conservant les avantages d’une grande
productivité dans la programmation.
Les langages modernes Java et C# sont d’un plus haut niveau (plus éloignés de la
machine) que les classiques C ou Fortran. Cela dit, ils reprennent autant de leurs caracté-
ristiques (comme la nécessité d’employer des déclarations) que de celles de langages de très
haut niveau tels que Python (on pense notamment à la compilation en bytecode portable
ou encore au nettoyage mémoire automatique pour soulager le programmeur de cette
tâche). Si vous pensez être plus productif avec Java ou C# quavec le C ou le Fortran,
essayez Python (par exemple au travers des implémentations Jython et IronPython, voir
paragraphes suivants) et devenez encore plus productif.
Le haut niveau de langage dont se targue Python est comparable à celui de Perl ou de
Ruby. Les avantages de la simplicité et de la régularité demeurent, en revanche, les atouts
de Python.
Python est un langage de programmation orienté objet, mais il permet de développer en
utilisant tout à la fois le paradigme objet et le style procédural traditionnel, en les combi-
nant et en les choisissant selon les besoins de l’application. Les fonctionnalités de
l’orientation objet de Python ressemblent à celles de C++, bien quelles soient beaucoup
plus simples à utiliser.
ch01.fm Page 4 Vendredi, 19. janvier 2007 11:10 11
La bibliothèque standard et les modules d’extension
5
Introduction
à Python
La bibliothèque standard et les modules d’extension
La programmation en Python ne se résume pas au langage : la bibliothèque standard de
Python et les autres modules d’extension sont quasiment aussi importants pour une utili-
sation efficace que le langage lui-même. La bibliothèque standard fournit des modules
écrits entièrement en Python, bien conçus, solides et aisément réutilisables. Parmi eux se
trouvent des modules pour la représentation des données, le traitement des chaînes de
caractères, l’interaction avec le système d’exploitation et le système de fichiers, ainsi que
pour la programmation web. Comme ces modules sont écrits en Python, ils fonctionnent
sur toutes les plateformes reconnues par Python.
Les modules d’extension, qu’ils proviennent de la bibliothèque standard ou d’ailleurs,
permettent au code Python d’avoir accès à des fonctionnalités fournies par le système
d’exploitation sous-jacent ou à d’autres composants logiciels, comme les interfaces graphi-
ques (GUI), les bases de données et les réseaux. Les extensions fournissent une vitesse
maximale dans les tâches qui effectuent beaucoup de calculs, comme le traitement XML et
le calcul numérique. Cependant, les modules d’extension qui ne sont pas écrits en Python
n’ont pas nécessairement la même portabilité que le code Python pur.
Vous pouvez écrire des modules d’extension spéciaux dans des langages de bas niveau afin
d’obtenir des performances maximales pour de petites portions de traitement intensif,
initialement prototypées en Python. Comme nous le verrons au chapitre 25, vous pouvez
également utiliser des outils comme SWIG pour utiliser des bibliothèques C/C++ exis-
tantes dans les modules d’extension Python. Enfin, vous pouvez intégrer Python dans des
applications écrites dans d’autres langages, en exposant les fonctionnalités de l’application
existante aux scripts Python
via
des modules d’extension dédiés.
Nous étudierons de nombreux modules, provenant de la bibliothèque standard et
d’ailleurs, qui sont utilisés pour la programmation de clients et de serveurs réseaux, le
veloppement d’interfaces graphiques, le traitement numérique, la gestion de bases de
données, la manipulation de fichiers textes et binaires et l’interaction avec le système
d’exploitation.
Les implémentations
Il existe à l’heure actuelle trois implémentations de Python de très bonne qualité :
CPython, Jython et IronPython. On en trouve également de nombreuses autres expéri-
mentales, tel PyPy. Ce livre se consacre essentiellement à CPython, l’implémentation la
plus utilisée et que nous désignerons par Python tout court, dans un soucis de simplifica-
tion. Néanmoins, il reste important de distinguer un langage de ses implémentations.
CPython
Classic Python (alias CPython ou plus simplement Python) est l’implémentation la plus
rapide, la plus à jour, la plus robuste et la plus complète. Il s’agit par ailleurs de l’implé-
mentation que l’on considère comme étant celle de référence. CPython est à la fois un
compilateur, un interpréteur ainsi qu’un ensemble de modules d’extensions intégrés et
ch01.fm Page 5 Vendredi, 19. janvier 2007 11:10 11
6 Chapitre 1 — Introduction à Python
facultatifs, tous développés en C standard. Comme il est codé en C, CPython peut être
utilisé sur n’importe quelle plateforme disposant d’un compilateur C conforme au stan-
dard ISO/IEC 9899:1990 (c’est-à-dire sur toutes les plateformes actuelles les plus connues).
Au chapitre 2, nous expliquerons comment télécharger et installer CPython. L’intégralité
de ce livre, sauf le chapitre 26 et quelques sections indiquées comme telles, lui est
consacré.
Jython
Jython est une implémentation de Python fonctionnant sur toutes les machines virtuelles
Java (JVM) compatibles avec Java 1.2 ou ses versions ultérieures. Ces JVM sont disponi-
bles sur la plupart des plateformes modernes. Jython vous permet d’utiliser toutes les
bibliothèques et tous les éléments architecturaux de Java. Pour bien utiliser Jython, vous
n’avez pas besoin de savoir coder en Java, mais vous devez en connaître les classes fonda-
mentales pour comprendre la documentation et les exemples. Vous devrez également
utiliser les outils Java pour des tâches comme la manipulation des fichiers
.jar
et la signa-
ture des applets. Ce livre traite de Python, pas de Java : pour utiliser Jython, vous devrez
compléter cet ouvrage par la lecture de
Jython Essentials
, de Noel Rappin et Samuele
Pedroni (O’Reilly), et éventuellement celle de
Java in a Nutshell
, de David Flanagan
(Éditions O’Reilly).
IronPython
IronPython est une implémentation de Python pour la plateforme Common Language
Runtime (CLR), mise au point par Microsoft et plus connue sous le nom de .NET. En plus
de la version signée de Microsoft lui-même, il existe une autre implémentation de CLR
qui porte le nom de Mono. Celle-ci fonctionne aussi bien sur Windows que sur d’autres
systèmes d’exploitation. Pour une utilisation optimale d’IronPython, vous devez connaître
les bibliothèques fondamentales de CLR. Vous navez pas besoin de programmer en C#,
mais la documentation et les exemples concernant les bibliothèques CLR disponibles ont
souvent trait à ce langage. En conséquence, vous familiariser avec C# vous permettra de les
lire et de les comprendre. Dans le même ordre d’idée, il vous faut utiliser les outils relatifs
à CLR pour des tâches telles que l’assemblage. Ce livre concerne Python, pas CLR. Pour
l’utilisation d’IronPython, vous devrez chercher des informations complémentaires dans
sa documentation en ligne, voire, si besoin est, au sein des nombreuses autres ressources
disponibles à propos de .NET, CLR, C#, Mono et ainsi de suite.
Choisir CPython, Jython ou IronPython
Si votre plateforme peut faire tourner aussi bien CPython que Jython et IronPython,
lequel d’entre eux choisir ? Avant tout, ne choisissez pas ; téléchargez-les et installez-les
tous les trois. Ils cohabitent sans aucun problème et sont gratuits. Les avoir sur votre
machine ne coûte que le temps de les télécharger et un peu d’espace disque.
La différence principale entre ces implémentations est l’environnement dans lequel elles
tournent ainsi que les bibliothèques et les plateformes sur lesquelles elles peuvent
s’appuyer. Si vous devez travailler dans l’environnement d’une JVM, alors Jython est un
ch01.fm Page 6 Vendredi, 19. janvier 2007 11:10 11
Les implémentations
7
Introduction
à Python
choix excellent. Si vous devez travailler dans l’environnement CLR, alors vous gagnerez à
vous servir d’IronPython. Si vous travaillez avant tout dans un environnement tradi-
tionnel, alors CPython est le plus adapté. Si vous n’avez pas de préférence marquée pour
l’un ou l’autre, préférez l’implémentation CPython standard pour commencer.
En d’autres termes, pour tester de nouveaux domaines, se former, ou effectuer des essais,
vous utiliserez le plus souvent CPython, car il est plus rapide. Pour développer et déployer,
le meilleur choix dépendra des modules d’extension que vous utilisez et de la façon dont
vous souhaitez distribuer vos programmes. Les applications CPython sont généralement
plus rapides, notamment si elles peuvent faire bon usage de modules d’extension appro-
priés, tel
Numeric
(présenté au chapitre 16). CPython est plus mature, il est là depuis plus
longtemps. Jython et plus particulièrement IronPython sont plus récents, ils nont pas
autant de déploiements en grandeur nature. La succession des versions de CPython est
plus rapide que celle des versions de Jython et IronPython. Par exemple, à l’heure où nous
écrivons ces lignes, l’actuel niveau de langage supporté est 2.2 pour Jython, 2.4 pour
IronPython et un 2.4 sur le point de passer en 2.5 pour CPython (c’est-à-dire que le niveau
2.5 devrait être effectif au moment où vous lirez ce livre).
Cela dit, comme nous le verrons au chapitre 26, Jython peut utiliser n’importe quelle
classe Java comme module d’extension, qu’elle vienne de la bibliothèque standard de Java,
d’une bibliothèque tierce, ou d’une bibliothèque que vous avez vous-même développé. De
la même manière IronPython peut utiliser n’importe quelle classe CLR, que celle-ci
provienne des bibliothèques CLR standard ou qu’elles soient codées en C#, Visual Basic
.Net ou tout autre langage compatible CLR. Une application écrite en Jython est une
application 100% pur Java, avec tous les avantages et les problèmes du déploiement de
Java, et s’exécute sur toute machine disposant d’une JVM adaptée. Les possibilités d’empa-
quetage sont également les mêmes qu’en Java. De manière identique, une application
écrite en IronPython est totalement compatible avec les spécificités de .NET.
Jython, IronPython et CPython sont toutes les trois de bonnes implémentations de
Python ; elles ne posent pas de problème et sont relativement proches en termes d’utilisa-
tion ou de performances. Puisque les plateformes JVM et CLR apportent leur lot de
fonctions et fournissent de grandes quantités de bibliothèques et d’outils, chacune des
implémentations peut présenter des avantages décisifs selon le scénario du déploiement.
PyPy et les autres versions expérimentales
À l’heure où nous écrivons ce livre, il existe de nombreuses implémentations intéres-
santes de Python qui ne sont pas encore suffisamment prêtes pour répondre à des besoins
de mise en production. Leur pertinence intrinsèque et leur fort potentiel à venir justi-
fient néanmoins que l’on y jette un œil. Parmi celles-ci, deux connaissent un
veloppement particulièrement actif. Il s’agit de Pirate (
http://pirate.tangentcode.com
), une
implémentation de Python au-dessus de la machine virtuelle Parrot (laquelle supporte
également Perl 6 et d’autres VHL), et PyPy (
http://codespeak.net/pypy/
), une implémenta-
tion véloce et souple de Python, elle-même programmée en Python et qui peut
fonctionner par dessus plusieurs langages de bas niveau et machines virtuelles en utili-
sant des techniques avancées telles que la déduction des types de données.
ch01.fm Page 7 Vendredi, 19. janvier 2007 11:10 11
1 / 11 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !