HOME
pyTDS
pyBloadHC11
pyRS485
pyDS1267
pyUltraISR
|
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 par Guido van Rossum et de nombreux
contributeurs bénévoles. (texte tiré
d'un article
http://www.linux-center.org/articles/9812/python.html)
|
Caractéristiques du langage :
|
Détaillons un peu les
principales caractéristiques de Python, plus
précisément, du langage et de ses deux implantations
actuelles:
-
Python
est portable, non seulement sur les différentes
variantes d'UNIX (Linux, Solaris ...) , mais aussi sur les OS
propriétaires: MacOS, BeOS, NeXTStep, MS-DOS et les
différentes variantes de Windows. Un compilateur, JPython, est
écrit en Java et génère du bytecode Java.
Un nouveau
compilateur, baptisé IronPython (soutenu par Microsoft), est
écrit en .NET et génère du bytecode .NET.
-
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 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
(abondamment commenté et présenté selon les canons
standards) 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).
-
Il
n'y a pas de pointeur explicite en Python.
-
Python
est (optionnellement) multi-threadé.
-
Python
est orienté-objet. Il supporte l'héritage
multiple et la surcharge des opérateurs. Dans son
modèle objets, 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 permet 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étaprogrammation, 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 manipulable 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,
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, génère
directement du bytecode Java.
-
Python
est extensible : comme Tcl ou Guile, on peut facilement
l'interfacer avec des librairies C existantes. On peut aussi s'en
servir comme d'un langage d'extension pour des systèmes
logiciels complexes.
-
La
librairie standard de Python, et les paquetages
contribués, donnent accès à une grande
variété de services: chaînes de caractères
et expressions régulières, services UNIX standard
(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.
Parallèlement à l'interpréteur principal,
écrit en C et maintenu par le créateur du langage, un
deuxième interpréteur, écrit en Java, est en cours
de développement.
|
Domaines d'application :
|
Les domaines d'application
naturels de Python incluent entre autres:
- L'apprentissage
de la programmation objet.
- Les
scripts d'administration système ou d'analyse de fichiers
textuels.
- Tous
les développements liés à l'Internet et en
particulier au Web: scripts CGI, navigateurs Web, moteurs de recherche,
agents intelligents, objets distribués...
- L'accès
aux bases de données (relationnelles).
- La
réalisation d'interfaces graphiques utilisateurs.
- Le
calcul scientifique et l'imagerie. Python ne sert alors pas à
écrire les algorithmes, mais à combiner et mettre en
oeuvre rapidement des librairies de calcul écrites en langage
compilé (C, C++, Fortran, Ada,...).
- Le
prototypage rapide d'applications. L'idée générale
est de commencer par écrire une application en Python, de la
tester (ou de la faire tester par le client pour d'éventuelles
modifications du cahier des charges). Trois cas peuvent alors se
présenter :
* Les performances sont satisfaisantes, après
optimisation éventuelle du code Python. On livre alors le
produit tel quel au client.
* Les performances ne sont pas satisfaisantes, mais
l'analyse de l'exécution du programme (à l'aide du
profiler de Python) montre que l'essentiel du temps d'exécution
se passe dans une petite partie du programme. Les fonctions, ou les
types de données, correspondants sont alors
réécrits en C ou en C++, sans modification du reste du
programme.
* Sinon, il est toujours possible de réécrire tout
le programme, en utilisant la version Python comme un brouillon.
Même dans le pire des trois cas, il est très vraisemblable
que le temps de développement aura été
sensiblement plus court que si le programme avait été
développé directement en C ou en C++.
- Le
site officiel de Python est
http://www.python.org/. On y trouvera la distribution officielle,
de nombreux paquetages contribués, les compte-rendus des six
conférences Python qui se sont déjà tenues
à ce jour.
|
Mes préférences :
|
- PythonCard
(http://pythoncard.sourceforge.net/):
GUI (graphical User Interface) basé sur wxPython, très
facile à utiliser. Le principe repose sur celui qu'utilise
Labwindows (National Instruments): un éditeur graphique
construit la face avant (panel) et un éditeur permet
d'écrire le code (code très concis). Très pratique
pour les personnes qui ne veulent pas passer trop de temps sur
l'interface graphique, ce qui est bien souvent le cas de
l'électronicien.
- Pyserial: Module de pilotage de la liaison série RS232c.
- Pyparallel: Module de pilotage du port // centronics. Très utile
pour générer une liaison type SPI afin de piloter un
circuit intégré (voir pyDS1264)
- HapDebugger: Debugger pour python (sous
windows uniquement) à la fois très performant et très
simple.
|
Success Story :
|
- Zope: Serveur Web d'application Open Source très en
vogue en ce moment.
- Plone: Puissant framework de gestion de contenu Open
Source
- IronPython: version de Python pour .NET
sponsorisé par Microsoft !!
- JPython: version de Python pour JAVA
|