lyc-champollion-figeac

last update: 21/09/2010

philippe.dalet@ac-toulouse.fr

[Home] [Download]

 

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

 

 

 

 

 

PythonPowered Logo  SourceForge Logo