PythonLeDeveloppementAutrement

Embed Size (px)

Citation preview

  • 8/3/2019 PythonLeDeveloppementAutrement

    1/44

    Livre blanc

    PYTHON : le dveloppement autrementTour d'horizon de la plateforme

    Christophe COMBELLES

    Gabriel PETTIER

    version 1.0 / mars 2010

  • 8/3/2019 PythonLeDeveloppementAutrement

    2/44

    PYTHON : le dveloppement autrement

    Alter Way, intgrateur Open Source de rfrence, accompagne les grands comptes,administrations, collectivits locales et Pme/Pmi dans le dveloppement et l'usage de

    leur systme d'information. Alter Way propose une offre industrielle 360,structure autour de quatre activits :

    Conseil :Alter Way Consulting

    Intgration, dveloppement et infogrance :Alter Way Solutions

    Hbergement valeur ajoute :Alter Way Hosting

    Formation :Alter Way Formation

    Accordant une place essentielle sa contribution et son implication dans

    lcosystme Open Source,Alter Wayse caractrise par le niveau lev dexpertise deses consultants, reconnus par la communaut. La socit se distingue galement parun investissement permanent en matire dinnovation, la plaant ainsi la pointe des

    plus rcentes avances technologiques.

    Alter Wayfut la premire entreprise fdrer les acteurs historiques de lOpenSource autour dun projet dindustrialisation du march. Elle compte aujourdhui 90collaborateurs. En 2009, elle a ralis une croissance de 12,5% avec un chiffredaffaires de 9 M. Pour plus dinformations : www.alterway.fr

    Les auteurs

    Christophe COMBELLES est expert et responsable du ple de comptence Python chezAlter Way Solutions. Il est vice-prsident de l'Association Francophone Python etcontributeur sur de nombreux projets de logiciels libres.

    Gabriel PETTIER, dveloppeur chez Alter Way Solutions, est passionn par Pythondepuis 2005, organisateur bnvole pour l'association Ubuntu-fr et dveloppeur du jeuUltimate Smash Friends.

    Avec l'aide de : Thomas Desvenain, Gal Pasgrimaud, Melissa Plenier, Denis Klementievet les quipes Python et PHP d'Alter Way Solutions.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 2 / 44

    http://www.alterway.fr/http://www.alterway.fr/
  • 8/3/2019 PythonLeDeveloppementAutrement

    3/44

    PYTHON : le dveloppement autrement

    Alter Way Consulting

    Alter Way Consulting est le ple Conseil dAlter Way.Alter Way Consulting met au service des entreprises et des administrations lensemblede lexpertise en technologies Open Source du groupe Alter Way afin dapporter unecontribution dcisive aux projets de changement et dinnovation, clairer les choixtechnologiques et lever les freins rencontrs dans lutilisation de solutions OpenSource.

    Alter Way Consulting couvre tous les aspects d'un projet IT, de la conceptiond'architecture l'audit de performances, et ce pour un nombre tendu detechnologies. Ses missions sappuient sur une dmarche mthodologique prouve,

    garante de lapplication pertinente de son expertise technologique.

    Experts dans leur domaine, reconnus par leur communaut, les consultants dAlterWay Consulting sont aussi des praticiens qui mettent en uvre leurs comptences dansle quotidien oprationnel au sein des diffrents ples dAlter Way. Pour plusdinformations : www.alterwayconsulting.fr

    Alter Way Solutions

    Alter Way Solutions est le ple intgration, dveloppement et infogrance dAlterWay.

    Alter Way Solutions se caractrise par son approche industrielle s'appuyant sur dessolutions Open Source quel que soit l'environnement technique cible (PHP, Python,

    Java, Ruby) et couvrant 2 domaines dexpertise :

    Solutions applicatives : E-commerce, Portails, CMS/GED, CRM, BPM, BI oudveloppement sur-mesure ;

    Solutions dinfrastructure : messagerie dentreprise, supervision, scurit,filtrage, IPAM, OS.

    Accordant une place essentielle sa contribution et son implication danslcosystme Open Source, Alter Way Solutions se caractrise par le niveau levdexpertise de ses consultants, reconnus par la communaut. La socit se distingue

    galement par un investissement permanent en matire dinnovation, la plaant ainsi la pointe des plus rcentes avances technologiques. Pour plus dinformations :www.alterwaysolutions.fr

    Alter Way Hosting

    Alter Way Hosting est le ple hbergement valeur ajoute dAlter Way.

    Alter Way Hosting est leader de l'hbergement et de l'infogrance des technologieswebs Open Source. Avec une gamme complte de solutions et services, la socit

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 3 / 44

    http://www.alterwayconsulting.com/http://www.alterwaysolutions.fr/http://www.alterwayconsulting.com/http://www.alterwaysolutions.fr/
  • 8/3/2019 PythonLeDeveloppementAutrement

    4/44

    PYTHON : le dveloppement autrement

    rpond tous les besoins en hbergement : mutualis, virtualis, ddi ouarchitecture. Alter Way Hosting accompagne ses clients en 24*7 avec des engagements

    (SLAs) d'intervention (GTI) et de rtablissement (GTR).

    Alter Way Hosting se distingue par sa matrise optimale des technologies Open Sourceet un savoir-faire reconnu dans l'exploitation des sites internet, intranets etapplications Open Source.

    Alter Way Hosting se caractrise galement par une prestation visage humain,reposant sur des engagements stricts et certifis.

    Des clients tels que Generali, le Ministre de l'Agriculture et de la Pche, PrismaPresse font confiance Alter Way Hosting et bnficient de solutions d'hbergement

    performantes et scurises via un rseau IP ddi et 3 datacenters. Pour plus

    dinformations : www.alterwayhosting.fr

    Alter Way Formation

    Alter Way Formation est le ple Formation dAlter Way.

    Leader franais de la formation informatique aux technologies Open Source, Alter WayFormation accompagne les professionnels dans la matrise des logiciels libres.

    Alter Way Formation propose des formations standard et sur mesure, intra ou interentreprise, couvrant lensemble des technologies Open Source : du systmedexploitation la Business Intelligence en passant par les bases de donnes, leslangages, les frameworks et les applications.

    Son offre standard compte plus de 60 formations ainsi que des programmes decertifications Linux, MySQL, PHP et PostgreSQL. Alter Way Formation accompagnegalement les professionnels dans la gestion de plan de formations et la conduite duchangement.

    Membre actif de la communaut Open Source, Alter Way Formation travaille depuisses toutes premires heures la promotion et la vulgarisation des logiciels libres enentreprise. Ses consultants-formateurs ont publi plusieurs ouvrages de rfrence et

    participent de nombreux projets et vnements communautaires.

    Alter Way Formation dlivre plus de 1000 formations par an, dans ses 6 centres de formation rpartis entre Paris, Lille et Lyon. Pour plus dinformations :www.alterwayformation.fr

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 4 / 44

    http://www.alterwayhosting.fr/http://www.alterwayhosting.fr/
  • 8/3/2019 PythonLeDeveloppementAutrement

    5/44

    PYTHON : le dveloppement autrement

    PYTHON : le dveloppement autrementTour d'horizon de la plateforme

    Python est une plateforme complte et gnraliste pour le dveloppement logiciel, trsfacile d'accs et capable de se spcialiser de manire trs pointue dans la quasi-totalitdes domaines informatiques. Python est utilis par un public trs large, desdveloppeurs web professionnels, des chercheurs en intelligence artificielle ou en bio-informatique, des administrateurs systmes, ou mme des programmeurs occasionnels.C'est le mlange de polyvalence et de facilit qui fait la force de Python. Avec un bref

    apprentissage et un minimum d'efforts, vous serez capable d'envisager n'importe queltype d'application de manire extrmement efficace et de la terminer (ou de la faireterminer) en temps voulu.

    Le dveloppement de Python ayant commenc la fin des annes 1980, sondploiement dans l'industrie a commenc vers les annes 2000. Aujourd'hui, Python estdevenu trs populaire auprs des dveloppeurs : beaucoup de projets viennent peuplerun cosystme dj trs riche, et ce dans tous les domaines. La plateforme bnficiedonc d'une visibilit croissante, qui s'accentuera encore dans les prochaines annes.

    quoi ressemble la plateforme Python, vue d'en haut ?

    Un langage dynamique, interactif, interoprable et trs lisible Un vaste ensemble de bibliothques etframeworks spcialiss

    Des outils d'dition, de test et d'industrialisation

    Le support d'une communaut d'entreprises, d'individus et d'associations

    Un march en forte croissance

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 5 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    6/44

    PYTHON : le dveloppement autrement

    Table des matires

    1. quoi ressemble Python ?......................................................................7

    1.Un langage facile et lisible1.Un langage facile et lisible............................................................................................................................................................77

    2.Un mode interactif et un dbogueur intgr2.Un mode interactif et un dbogueur intgr..................................................................................................................88

    3.Multi-plateforme et interoprable3.Multi-plateforme et interoprable..........................................................................................................................................88

    4.Ouvert et libre4.Ouvert et libre.......................................................................................................................................................................................... 99

    5.Moderne et Multi-paradigme5.Moderne et Multi-paradigme........................................................................................................................................................99

    2.Que peut-on faire avec Python ?.............................................................10

    1.Services fournis en standard1.Services fournis en standard......................................................................................................................................................1111

    2.Accs aux bases de donnes2.Accs aux bases de donnes......................................................................................................................................................1313

    3.Sites et applications web3.Sites et applications web.............................................................................................................................................................. 1616

    4.Calcul et visualisation scientifique4.Calcul et visualisation scientifique......................................................................................................................................2121

    5.Scripting d'applications5.Scripting d'applications..................................................................................................................................................................2424

    6.Interfaces Graphiques6.Interfaces Graphiques...................................................................................................................................................................... 2626

    7.Scripts/administration Systme7.Scripts/administration Systme..............................................................................................................................................2929

    8.Jeux vidos8.Jeux vidos..............................................................................................................................................................................................3030

    9.Performances et algorithmique9.Performances et algorithmique..............................................................................................................................................3131

    3.Outils d'industrialisation.......................................................................33

    1.Index gnral des paquets Python1.Index gnral des paquets Python........................................................................................................................................3434

    2.Construction d'applications2.Construction d'applications........................................................................................................................................................3535

    3.Dploiement d'applications3.Dploiement d'applications........................................................................................................................................................3535

    4.Tests automatiss et documents4.Tests automatiss et documents........................................................................................................................................3535

    5.Qualit du code5.Qualit du code....................................................................................................................................................................................3737

    6.Intgration continue6.Intgration continue.......................................................................................................................................................................... 3838

    7.Gnration de documentation7.Gnration de documentation.................................................................................................................................................. 3939

    8.Environnements de dveloppement intgrs8.Environnements de dveloppement intgrs..............................................................................................................4040

    9.Dpts de code source9.Dpts de code source.................................................................................................................................................................... 4040

    10.Forges de dveloppement10.Forges de dveloppement........................................................................................................................................................4141

    4.Communaut.....................................................................................42

    5.Conclusion........................................................................................43

    6.Licence et diffusion.............................................................................44

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 6 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    7/44

    PYTHON : le dveloppement autrement

    1. quoi ressemble Python ?1.1. Un langage facile et lisibleUn langage facile et lisible

    Python se caractrise par une syntaxe claire et lisible. Ce principe dcoule d'uneconstatation simple : un programme est lu bien plus souvent qu'il n'est crit. Il fautdonc que la comprhension du code la lecture soit la plus rapide possible. Ceci prendmme une importance considrable en milieu professionnel o un programme peut

    changer de mains plusieurs fois et doit tre maintenu sur le long terme.Cette lisibilit provient de plusieurs caractristiques :

    Un trs faible nombre de caractres exotiques : un programme Python estdpourvu de la plupart des caractres incomprhensibles que l'on rencontretraditionnellement dans les langages de programmation. Par exemple pouraffecter le nombre 4 la variable a, on n'crit pas $a = 4; mais simplementa = 4

    Une indentation obligatoire : ce sont les espaces en dbut de lignes quidlimitent les blocs. Cette particularit, si elle effraye certains dveloppeurspeu soigneux, se rvle en fin de compte tre un atout norme : un codePython est toujours indent correctement et se lit toujours de la mme

    manire. L'indentation a pour le programmeur la mme utilit que lesaccolades pour le compilateur. En limitant la redondance, Python vite ainsile risque d'incohrence entre ce qui est dit au compilateur et ce qui est dit auprogrammeur.

    Pour ces raisons, le Python se rapproche parfois despseudo-langages utiliss pour enseigner l'algorithmique.Il est idal pour apprendre programmer ou pour crerrapidement un prototype d'application. l'autreextrmit, cette lisibilit devient un norme avantagedevant la complexit des trs grands logiciels.

    En pratique, un ensemble de conventions et deconsignes simples a t propos pour encadrer l'criturede code Python. Ces rgles sont dfinies dans un

    document portant le nom de PEP 8 . Ce document tend homogniser lesprogrammes Python et favoriser l'change et la collaboration.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 7 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    8/44

    PYTHON : le dveloppement autrement

    2.2. Un mode interactif et un dbogueur intgrUn mode interactif et un dbogueur intgr

    Une autre particularit de Python est la prsence d'un mode interactif : si on dmarrePython sans lui donner de programme excuter, il donne la main l'utilisateur, etexcute la demande toute commande Python valide. Ceci est un atout pour larapidit de dveloppement, notamment lors d'un prototypage. De plus, dans ce mode ilest possible de consulter l'aide des classes et des fonctions. Il est ainsi facile de fairedes essais en mode interactif, puis de les recopier dans le corps du programme. Dans cemode, Python peut aussi tre utilis comme une calculatrice programmable.

    Dans l'illustration ci-dessous, l'interprte Python standard est celui du milieu. Les deuxautres, ipython et bpython

    sont des variantes offrantdes fonctionnalitsadditionnelles, comme lacoloration, la compltion,les suggestions pendant lafrappe, etc.

    Nativement, le langage offregalement un dbogueur.N'importe quel programmepeut ainsi tre interrompuet excut instruction parinstruction grce la posede points d'arrts ou l'affichage de la pile d'appel.L'analyse et la correction deproblmes sont ainsigrandement facilites : le dbogueur prend l'apparence d'une console Python donnantaccs l'environnement d'excution de l'application.

    3.3.Multi-plateforme et interoprableMulti-plateforme et interoprable

    Python fonctionne sur toutesles plateformes les pluscourantes, Windows, Linux etMac Os, ainsi que sur denombreux autres systmes, ycompris des plateformesmobiles telles que Maemo ouAndroid.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 8 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    9/44

    PYTHON : le dveloppement autrement

    Python fonctionne galement sur la machine virtuelle Java de Sun ou sur laplateforme .NET de Microsoft, donnant ainsi un accs direct toutes les API Java ou.NET. Les versions correspondantes s'appellent Jython et IronPython.Enfin, le module ctypes permet d'utiliser nativement n'importe quelle bibliothquecrites en C. Python est dans ce cas idal comme langage de glue.

    4.4. Ouvert et libreOuvert et libre

    Les diffrentes versions de Python sont toutes publies sous une licence librepermissive, autorisant l'criture de logiciels libres ou propritaires. Python peut trelibrement modifi, redistribu et mme intgr l'intrieur d'un autre logiciel pour luioffrir des capacits de scripting.

    5.5.Moderne et Multi-paradigmeModerne et Multi-paradigme

    Au-del d'une syntaxe trs lisible, Python possde un typage fort mais dynamique, unecompilation automatique en bytecode, un garbage collector, une gestion desexceptions, de l'Unicode, de la programmation multithread et multiprocess ainsi qued'autres caractristiques qui en font un langage moderne et de plus en plus utilis.

    Python est un langage multiparadigme : il est possible de programmer en modeimpratif, sans tre un expert de la programmation objet. Si, en revanche, onprogramme avec des objets, on peut plonger sans difficult dans tous les motifs deconception (Design Patterns), y compris en utilisant des interfaces ou des classesabstraites. La programmation fonctionnelle, enfin, peut tre aborde grce l'importance accorde aux listes, aux itrateurs, aux gnrateurs ou grce laprsence des fonctions map, reduce, filter et des fonctions anonymes lambda.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 9 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    10/44

    PYTHON : le dveloppement autrement

    2. Que peut-on faire avecPython ?

    Python est connu pour tre fourni avec les piles .Cela signifie que sans aucun module additionnel, ilest dj possible de dvelopper des applications

    pour de trs nombreux domaines. La polyvalenceest au cur de la plateforme elle-mme etconstitue une de ses plus grandes forces : undveloppeur ayant appris le langage Python autravers d'un domaine (par exemple le web avec

    Django ou Zope), sera capable d'aborder un autre domaine tel que les interfacesgraphiques en un temps record, sans apprendre de nouveau langage. Le seulapprentissage ncessaire concerne des techniques supplmentaires, par exemple laprogrammation vnementielle. Cet apprentissage sera fortement acclr parl'absence de nouvelle difficult syntaxique assimiler. On pourrait nommer ceci la rutilisabilit des comptences . Ces considrations sont une des causes de ce quel'on appelle le Paradoxe Python : les dveloppeurs Python semblent difficiles trouver, mais former un dveloppeur Python est un investissement lger et rentable,car gnrateur de polyvalence, de motivation et d'efficacit. Un bon dveloppeur Javaou PHP n'aura pas de mal apprendre le langage en quelques heures et serarapidement plus productif.

    2.Que peut-on faire avec Python ?.............................................................10

    1.Services fournis en standard1.Services fournis en standard......................................................................................................................................................1111

    2.Accs aux bases de donnes2.Accs aux bases de donnes......................................................................................................................................................1313

    3.Sites et applications web3.Sites et applications web.............................................................................................................................................................. 1616

    4.Calcul et visualisation scientifique4.Calcul et visualisation scientifique......................................................................................................................................2121

    5.Scripting d'applications5.Scripting d'applications..................................................................................................................................................................2424

    6.Interfaces Graphiques6.Interfaces Graphiques...................................................................................................................................................................... 2626

    7.Scripts/administration Systme7.Scripts/administration Systme..............................................................................................................................................2929

    8.Jeux vidos8.Jeux vidos..............................................................................................................................................................................................3030

    9.Performances et algorithmique9.Performances et algorithmique..............................................................................................................................................3131

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 10 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    11/44

    PYTHON : le dveloppement autrement

    1.1. Services fournis en standardServices fournis en standard

    Un langage de haut niveau comme Python se caractrise par le fait qu'il vite derinventer ce qui existe dj. Tout est dj prvu pour que vous puissiez profiter demanire simple de protocoles courant, comme HTTP, FTP, IMAP ou POP, de techniquesde programmation avances comme le multithreading ou le multiprocessing, ou biende chiffrement, compression ou stockage des donnes.

    Voici un aperu des possibilits fournies en standard avec Python.

    Tous les types et services de base sont directement intgrs, comme les chanes decaractres unicode, les types numriques, la gestion des erreurs (exceptions), la

    gestion des fichiers et des entres/sorties, le formatage des chanes et des dates. Desstructures de haut niveau sont galement prsentes, comme les listes, les ensembles,les tableaux ou les dictionnaires. Ces structures sont fortement optimises et leurimplmentation est crite en C. Elles apportent un haut niveau d'homognit et desouplesse dans la gestion des donnes.

    De nombreux modules spcialiss sont prsents par dfaut, en voici quelquesexemples :

    re expressions rationnelles

    difflib calculs de delta de diffrences

    datetime oprations sur les dates et heurescalendar oprations sur des calendriers

    math oprations mathmatiques

    random oprations alatoires

    zlib oprations de compression

    csv lecture/criture de fichiers .CSV

    ConfigParser lecture/criture de fichiers .INI

    sqlite3 accs des bases de donnes SQLite

    md5, sha oprations de hachage

    shutil oprations de haut niveau sur les fichiers

    io oprations de bas niveau sur des flux de donnes

    threading programmation multithread

    subprocess cration de sous-processus

    multiprocessing programmation multiprocessus

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 11 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    12/44

    PYTHON : le dveloppement autrement

    Quelques exemples de modules standards pour la programmation rseau et internet :

    ssl connexion rseau scuriseemail oprations sur des courriels

    json encodeur et dcodeur JSON

    webbrowser gestion des navigateurs internet

    cgi outils pour la programmation web en CGI

    httplib programmation HTTP

    ftplib programmation FTP

    poplib rception d'e-mail par POP

    imaplib gestion d'e-mail par IMAP

    smtplib envoi d'e-mail (SMTP)

    BaseHTTPServer un serveur web basiqueCookie gestion des cookies

    xmlrpclib connexion des services web XML-RPC

    Exemples de modules pour le multimedia, fournis aussi en standard :

    wave manipulation de fichiers audio WAV

    colorsys conversion de couleurs RGB, HSV, YIQ

    imghdr dtection des types d'images

    sndhdr dtection des types de fichiers audio

    Exemples de modules utiles au dveloppement, dbogage, profilage, galement

    fournis en standard :pydoc gnrateur automatique de documentation

    doctest criture de la documentation testable

    unittest criture des tests unitaires

    pdb le dbogueur Python

    profile le profileur Python

    gc accs au Garbage Collector

    inspect outils d'introspection des objets Python

    D'autres modules sont spcifiques aux plateformes UNIX, Windows ou Mac Os. Les

    modules ci-dessus ne sont que quelques exemples, vous pouvez vous rfrez ladocumentation officielle pour avoir une vision plus complte des possibilits de labibliothque standard.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 12 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    13/44

    PYTHON : le dveloppement autrement

    2.2. Accs aux bases de donnesAccs aux bases de donnes

    La plateforme Python permet d'accder de manire trs simple la majorit des basesde donnes actuelles, y compris des bases de donnes mergentes suivant latendance actuelle du NoSQL . En dehors des pilotes bas niveau, on trouve galementun ensemble de surcouches facilitant la programmation et amliorant fortement lascurit (par exemple des protections contre les injections SQL).

    Bases de donnes relationnelles

    Il s'agit des bases de donnes classiques que l'on peutinterroger avec le langage SQL. La majorit de ces basesde donnes, aussi bien libres que propritaires, possdentun pilote Python et ces pilotes suivent une spcificationcommune : la DB-API. La faon d'ouvrir un accs unebase et de lancer une requte est donc la mme quelleque soit la base de donnes. Nul besoin d'apprendre utiliser chaque pilote indpendamment. Ceci facilitegalement la migration d'une base vers une autre.

    Parmi les bases de donnes ou les API prises en charge on

    trouve (liste non exhaustive) : PostgreSQL

    MySQL

    Oracle

    SQLite

    Ingres

    Informix

    Sybase

    Microsoft ADO

    IBM DB2

    ODBC

    Berkeley DB

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 13 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    14/44

    PYTHON : le dveloppement autrement

    Bases de donnes objet

    Des bases de donnes objets sont galement en production depuis plus de dix ans etsimplifient la persistance des donnes dans le cadre d'un langage orient objet commePython. L'une d'entre elles, la ZODB, provient duframework web Zope, mais peut treutilise de manire compltement indpendante pour permettre la persistance d'objetsPython dans n'importe quelle application. L'utilisation de la ZODB rend la persistancecompltement transparente dans une application : les objets sont stocks tels quelssous forme d'un graphe hirarchique et chacun peut tre utilis directement comme unobjet dj en mmoire, sans avoir effectuer la moindre requte. Une ZODB estcapable de grer plusieurs dizaines de millions d'objets de manire fiable,transactionnelle, et historise. Elle rpond aux quatre proprits ACID : Atomicit,Cohrence, Isolation et Durabilit.

    Bases de donnes NoSQL Il s'agit souvent de bases de donnes trs grands volumes destockage, souvent distribues. Un bon exemple de base de cetype est CouchDB, une base de donnes supporte par lafondation Apache, crite en Erlang avec un systme de vuesen Javascript. Le principe de CouchDB est de stockeruniquement des documents non structurs, possdant chacunun ensemble non fig de proprits.

    Les documents sont stocks plat, de manire nonhirarchique. L'quivalent des requtes SQL se fait grce l'utilisation de vues pr-calcules pour l'ensemble desdocuments. Le dialogue avec CouchDB peut se faire avecn'importe quel langage, via HTTP et un change de donnes enJSON. Plusieurs bibliothques en Python, comme CouchDBKit,facilitent le dialogue, la cration de bases, l'insertion ou lamodification des vues.

    MongoDB est un autre exemple de base oriente document , et possdant un pilote Python.

    La tendance NoSQL suit divers chemins : en dehors des bases orientes documentcomme CouchDB et MongoDB, on trouve des bases orientes cl/valeur commeRedis ou MemcacheDb, ou orientes tables ou colonnes , comme Cassandra qui at libre par Facebook en 2008. Toutes les bases de ce type possdent un pilote ouune bibliothque Python : celle de Cassandra se nomme Lazyboyet simplifie l'accs auxdonnes en s'intgrant aux structures de donnes haut niveau de Python. Celle de Redisse nomme simplement redis , etc.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 14 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    15/44

    PYTHON : le dveloppement autrement

    Surcouches pour l'accs aux bases

    Python tant un langage objet, il est souvent plusagrable d'accder aux bases de donnes en utilisantdes objets. Au del de la spcification DB-API offrantune interface unifie, on trouve diffrents niveauxde surcouches aux bases de donnes : desbibliothques comme SQLAlchemy proposent laconstruction de requtes SQL par de simples appelsde mthode de type insert, filter ou join sur desobjets, sans avoir crire une seule ligne de SQL.Cela prsente de nombreux avantages en terme defiabilit, de scurit et de possibilit de changement de base de donnes : le langaged'accs est unifi entre toutes les bases.

    un niveau encore suprieur, on trouve les ORM (Object Relational Mappers).SQLAlchemy contient aussi un excellent ORM, probablement le plus utilis en Python.L'ORM permet de travailler directement sur les objets mtiers sans se soucier de la basede donnes : lors d'une lecture dans la base, les objets Python sont automatiquementreconstruits par agrgation ou jointure de tables. Inversement, lorsqu'on modifie lesattributs d'un objet, l'ORM sait dans quelles tables crire. Cette connaissance de l'ORMprovient de l'criture des schmas de donnes mtiers effectue lors de la phase deconception : la gestion de la base de donnes n'a plus besoin d'tre prise en charge parle dveloppeur, hormis pour des questions d'optimisation. Heureusement pour ce

    dernier point, il est possible de connatre toutes les requtes gnres et d'agir mmeau plus bas niveau.

    D'autres ORM existent, comme Storm, cr par Canonical, la socit qui dveloppe lesystme d'exploitation Ubuntu Linux.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 15 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    16/44

    PYTHON : le dveloppement autrement

    3.3. Sites et applications webSites et applications webPython est utilis depuis plus d'une dcennie pour des dveloppements webprofessionnels. Certains sites web actuels trs fort traffic comme YouTube ou Redditsont presque entirement crits en Python. Les offres d'hbergement mutualisclassiques faible cot proposent rarement ce langage car il ncessite l'utilisation d'unserveur ddi ou priv virtuel. Cependant, l'avnement des serveurs ddis low-cost etdu Cloud Computing s'accompagne de possibilits d'hberger des applications web enPython pour un cot modique. L'offre de Cloud Computing de Google, nomm AppEngine a d'abord t disponible exclusivement pour Python (Google est un grand

    utilisateur de ce langage).Des applications web professionnelles de type CMS (Gestion de contenu, intranets,extranets), ERP(Gestion d'entreprise) profitent galement de la souplesse du langageet de la facilit avec laquelle on peut crire des programmes gnriques et extensibles.

    Pour la gestion de contenu, les portailsou sites collaboratifs, les intranets ouextranets, l'outil phare est Plone. CeCMS trs mature est utilis depuis prsde dix ans, il est compltementindustrialis, support par une

    importante communaut internationaleet possde un trs grand nombre demodules d'extension. La version 4.0, sur le point d'tre publie, surprend actuellementpar les normes gains en performances qu'elle apporte, et qui justifient eux seuls unemigration vers cette version.

    Pour la gestion d'entreprise, on trouve deux PGI Open Source (Progiciels de GestionIntgrs) :

    OpenERP connat une croissance fulgurante. Il fonctionne la fois en mode web et avec un client lourd. Il possdeun nombre impressionnant de modules mtiers. En outre, il

    se base sur une plateforme de dveloppement rapideOpenObject avec laquelle il est possible de dvelopper uneapplication d'entreprise en un temps record.

    L'autre PGI majeur est ERP5. Celui-ci s'offre le luxe de concurrencerles meilleures solutions d'ERP propritaires, et son caractregnrique lui permet de s'adapter n'importe quelle entreprise ouorganisation de n'importe quel pays. Il constitue galement la base duservice Tiolive d'externalisation totale de l'infrastructureinformatique d'une entreprise.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 16 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    17/44

    PYTHON : le dveloppement autrement

    titre d'exemple nous citerons quelques outils courants dansle milieu du web qui sont crits en Python : Mailman est ungestionnaire de listes de diffusion trs robuste etextrmement utilis dans la communaut du logiciel libre.Moinmoin est un moteur de wiki galement trs courant.Enfin, plus orient rseau que web, l'implmentation historique du

    serveur et du client Bittorent sont en Python. Du faitde l'ouverture du protocole, de nombreuses autresversions en diffrents langages existent, mais il fautnoter que ces premires versions sont celles qui l'ontmen son succs originel.

    Frameworks de dveloppementL'intrt d'unframework (ou cadriciel en franais) est d'offrir de manire cohrentetoutes les briques de base pour crer une application en se concentrant uniquement surles fonctionnalits mtiers. Ainsi, les frameworks se chargent de vous offrir toutes lesnotions indispensables : accs aux bases de donnes, gnration de page HTML,gnration de formulaires, sessions, cache, authentification, etc.

    Le monde du dveloppement web en Python est extrmement riche. Il est possibled'attaquer tous les niveaux de complexit, depuis la simple page personnelle jusqu' ungros ERP ou un intranet. Cette richesse est heureusement contrle par unespcification qui rend les composants web et les frameworks interoprables. (Laspcification WSGI, Web Server Gateway Interface).

    La partie merge de cet norme iceberg laisse apparatre deux frameworks majeurs :Django et Zope. La partie immerge, tout autant digne d'intrt, est aborde plus bas.

    Django est un framework web de type MVC, trssimilaire Ruby on Rails ou Symfony. Sadocumentation est complte et sa prise en mainrapide. La communaut franaise est trs active etanime le site web django-fr.org. Django est idal pour

    crer rapidement des sites ou applications web avecde bonnes performances. Il peut s'interfacer avecdiffrents types de bases de donnes et prend nativement en charge MySQL,PostgreSQL, SQLite et Oracle. De trs nombreux modules pour Django existent (qu'onappelle des applications Django ) et peuvent se greffer pour offrir desfonctionnalits additionnelles. Outre son excellente documentation, un des intrtshistoriques de Django est d'offrir une interface d'administration, creautomatiquement, pour votre application.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 17 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    18/44

    PYTHON : le dveloppement autrement

    Zope est un cosystme trs vaste et trs riche,certainement le plus ancien. Le principe fondateurde Zope est la publication d'objets sur le web : dsla fin des annes 90, ce framework taitentirement orient objet, y compris sa base dedonnes (ZODB). Zope est toujours normmentutilis et a donn naissance tout un cosystme,compos deframeworks, micro-frameworks modernes, bibliothques et outils.

    L'cosystme Zope se dcompose en plusieurs sous-projets :

    Zope 2 est la version historique du serveur d'application Zope. Il est toujours largementutilis, et constitue la base de grands logiciels comme Plone ou ERP5. Les nombreusesannes d'utilisation et de dveloppement de Zope 2 et l'exprience acquise pendantcette priode ont men une rcriture complte et modulaire de Zope, menant audveloppement d'une Architecture de Composants.

    La Zope Component Architecture (ZCA) est l'architecture innovante sur laquelle sebase aujourd'hui tout l'cosystme Zope. Elle se base sur une utilisation intelligente deDesign Patterns, et permet de crer des composants applicatifs gnriques,rutilisables et testables individuellement. Grce ce dcoupage en composants, ildevient possible de grer des applications d'un trs haut niveau de complexit et defiabilit.

    Le Zope Toolkit (ZTK) est l'ensemble des bibliothques Zope utilisant cette

    Architecture de Composants.Tout ce travail a donn naissance trois frameworkscompatibles avec la spcification WSGI:

    BlueBream est le serveur d'applications issu de larcriture de Zope 2. Il supprime son aspectmonolithique et utilise intensivement la ZCA. C'estle nouveau nom de Zope 3 en 2010 !

    Grok est un framework bas sur le Zope Toolkit,trs similaire BlueBream et proposant unemthode simplifie de configuration des composants.

    BFG est un micro-framework ultra-lger et trs simple, offrant la fois les principesMVC et ceux de publication d'objets de Zope. Il n'oblige pas les dveloppeurs comprendre la ZCA pour dvelopper une application.

    Grce cette architecture, ces troisframeworks sont ouverts les uns aux autres : lescomposants crits pour l'un sont facilement rutilisables avec les autres.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 18 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    19/44

    PYTHON : le dveloppement autrement

    Les succs de Django et Zope 2 proviennent de leur caractre monolithique, et du faitqu'ils offrent, l'instar de Python, un maximum de possibilits de manire native. Cesdeux produits ne doivent pas occulter l'extraordinaire richesse d'autres frameworkscomme Pylons, TurboGears, CubicWeb, web2py ou CherryPy. Vous pouvez obtenirune liste plus complte sur la page http://wiki.python.org/moin/WebFrameworks

    Micro-frameworks et assemblage de composants webPlutt que d'utiliser des frameworks tout-en-un comme Django ou Zope 2, unealternative intressante est de crer des applications par assemblage de composantsgnriques. Le principe est de partir d'une base minimale (comme BFG ou Pylons), puisd'ajouter des briques. Cet assemblage peut se faire de diffrentes faons :

    par ajout et utilisation de bibliothques additionnelles, grce WSGI, un standard Python permettant de brancher des middlewares

    grce la Component Architecture de Zope, utilisable avec n'importe quelprojet Python

    avec d'autres techniques de composants existantes (voir CubicWeb)

    Voici quelques exemples de fonctionnalits pouvant tre prises en charge par descomposants spars et rutilisables :

    Accs aux bases de donnes

    SQLAlchemy est une bibliothqued'abstraction permettant d'accder n'importequelle base de donnes relationnelle demanire identique et en programmation objet.SQLAlchemy peut dialoguer avec SQLite, PostgreSQL, MySQL, Oracle, MS-SQL, Firebird,MaxDB, MS Access, Sybase, Informix, et DB2. D'autres outils du mme genre existent :Storm, SQLObject. Nous vous invitons consulter la section Bases de donnes de celivre blanc en page 13.

    Gnration de formulairesLe principe est de dcrire les donnes grce un schma puis de laisser les formulairesse gnrer automatiquement en fonction du schma. Il existe souvent un lien entreformulaires, schmas et bases de donnes. Pour cette raison, les bibliothques degnration de formulaires sont souvent lies une autre technologie, soit le frameworklui-mme, soit la base de donnes ou une abstraction sur la base de donnes. Voiciquelques exemples de bibliothques matures utilisables en production : z3c.form(Zope), FormAlchemy (SQLAlchemy), tw.forms (TurboGears), gnue-forms (GNUe).

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 19 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    20/44

    PYTHON : le dveloppement autrement

    Authentification / autorisation

    Il est possible de prendre en charge la notiond'authentification et d'autorisation de maniregnrique, hors de tout framework, juste par ajoutd'un middleware WSGI sur une application existante.Les composants repoze.who et repoze.what sontconus dans cette optique et couvrent les deux typesde besoin. Ils fonctionnent grce des plugins et sont capables de grer n'importequelle source d'utilisateurs, de groupes, de permissions, et n'importe quelle mthoded'authentification et d'autorisation.

    TemplatingLa cration dynamique des pages HTML est prise en charge par ce qu'on appelle un outilde templating. Le principe est d'insrer du contenu en plaant dans les pages HTML soitdes balises spcifiques, soit des attributs XML. Tous les frameworks de dveloppementweb proposent un ou plusieurs outils de ce genre (dont les noms sont ZPT, Mako,Genshi, Chameleon, et d'autres).

    Gestion du cache et des sessions

    Beaker est une bibliothque permettant de grer du cache ou des sessions avecabstraction du stockage. De nombreuses mthodes de stockage sont disponibles,persistantes ou non : memcached, dbm, sql, mmoire vive, etc.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 20 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    21/44

    PYTHON : le dveloppement autrement

    4.4. Calcul et visualisation scientifiqueCalcul et visualisation scientifiqueLe domaine scientifique est un des plus grospoints forts de Python. Sa facilit d'apprentissagepermet des scientifiques, chercheurs,mathmaticiens d'tre efficaces rapidement lorsde prototypages, de calculs lourds ou distribus,ou de visualisation. Python remplaceprogressivement les outils ou frameworksscientifiques propritaires et son modle Open

    Source est un avantage dans le milieuscientifique, o le partage de connaissance etd'innovation est une pratique naturelle.

    NumPyNumPy est l'outil de base pour faire du calculscientifique en Python. Il offre notamment descapacits de calcul sur des matrices Ndimensions, des capacits d'intgration avecC/C++ et Fortran, de l'algbre linaire, des

    transformes de Fourier et des outils de calculalatoire. NumPy permet de travailler sur destrs gros jeux de donnes en minimisant laconsommation mmoire (calcul sur des sous-matrices, sans duplication). Les algorithmes decalcul sont implments en C et fortementoptimiss.

    SciPySciPy est construit au dessus de NumPy et offre un vaste ensembled'outils et d'algorithmes pour les mathmatiques, le calculscientifique et l'ingnierie : calculs matriciels, polynomiaux,algbre linaire, traitement du signal, statistiques, algorithmesgntiques, machine learning, etc.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 21 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    22/44

    PYTHON : le dveloppement autrement

    Matplotlib

    Matplotlib est unebibliothque detrac et visualisation produisant des graphiques dequalit professionnelle. Les graphiques peuvent treproduits dans diffrents formats de sortie, y compris desformats interactifs permettant une interaction lasouris, intgrables dans une interface graphique.Matplotlib peut tre utilis soit depuis un programme enPython, soit depuis un terminal de commande interactif.De trs nombreux types de graphiques peuvent tregnrs. Par dfaut il s'agit de graphiques en 2D et desextensions permettent de produire des cartographies,graphiques en 3D ou des grilles de donnes.

    SageL'objectif de Sage est l'tude des mathmatiques,lmentaires ou avances, fondamentales ouappliques. Cela comprend notamment l'algbrebasique, le calcul infinitsimal, la thorie desnombres, la cryptographie, le calcul numrique, l'algbre commutative, la thorie des

    groupes, la combinatoire, la thorie des graphes, l'algbre linaire exacte et beaucoupd'autres domaines. Sage est ddi l'enseignement et la recherche. Sonprincipe est de rassembler plusd'une centaine de programmes OpenSource dans une interface unifie,soit une ligne de commande Python,soit un notebook accessibledepuis un simple navigateur web.

    BiopythonC'est un framework orient biologie. Ilcontient plusieurs modules spcialiss, pourtravailler avec les squences ADN, lesprotines qu'elles codent et interagir avec lesprincipales bases de donnes biologiques enligne.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 22 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    23/44

    PYTHON : le dveloppement autrement

    PyMol

    PyMol est un systme de visualisation molculaire, un outil derendu et un diteur molculaire en 3D, ddi la visualisation

    de structures chimiques, ycompris les structurescristallines rsolutionatomique. PyMol peut treutilis pour visualiser des protines, des acidesnucliques (ADN, ARN) des glucides, ou n'importe quellestructure molculaire ou atomique pour la recherchepharmacologique, biotechnologique, dans l'industrie, larecherche acadmique ou l'enseignement. PyMolpermet de gnrer des images statiques ou desanimations et peut exporter les donnes vers d'autresformats 3D.

    MAYAVIOutil de visualisation interactive de donnes scientifiques, prvupour tre intgr avec les diffrentes bibliothques scientifiquesPython (notamment Scipy).

    Autres projetsDe trs nombreux autres projets existent, en voici quelques uns :

    MMTK: Le Molecular Modelling Toolkit, permet la modlisation et la manipulation demolcules, grce des algorithmes de simulations permettant d'implmenterfacilement des simulations complexes (trajectoires, codage de protines tape partape...).

    SymPy : un outil pour les mathmatiques symboliques.

    Une liste plus complte en anglais se trouve l'adresse suivante :http://wiki.python.org/moin/NumericAndScientific

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 23 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    24/44

    PYTHON : le dveloppement autrement

    5.5. Scripting d'applicationsScripting d'applicationsLa lgret de Python et ses capacits d'interoprabilit lui permettent d'treembarqu directement dans de nombreux logiciels afin d'tre utilis comme langage descript ou de macro. Quand il n'est pas embarqu, Python est souvent propos commemthode de scripting et de pilotage pour des applications de bureautique ou degraphisme.

    En voici quelques exemples.

    OpenOffice.org

    La clbre suite bureautique libre, poussepar Sun, peut tre pilote entirement enPython. Il est donc possible d'crire desmacros en Python pour raliser toutes sortesde tches automatise, de gnrer ou remplirdes documents depuis une base de donnes,gnrer des factures, etc.

    Autodesk MayaMaya est un modeleur 3d propritaire rput, dvelopp par Autodesk. Depuis laversion 8.5, Maya offre nativement une interface Python aux commandes Maya et

    l'API interne.

    Blender

    Blender est un logiciel de

    modelage et d'animation 3Dlibre et trs puissant, entirement scriptableen Python, ce qui permet d'automatiser destraitements, des crations d'objets oud'animations complexes.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 24 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    25/44

    PYTHON : le dveloppement autrement

    Inkscape

    Inkscape est un illustrateur vectoriel libre, il est aussiinterfaable avec Python, de l'intrieur ou de l'extrieur (appeld'un script depuis Inkscape ou communication avec Inkscapedepuis un script).

    GimpGimp est un logiciel libre de retouche d'images possdant denombreuses fonctions avances. Il inclut de base un interprtePython, permettant de le scripter et de raliser des filtres trspuissants.

    Autres logiciels pilotablesDe trs nombreux autres logiciels sont pilotables nativement en Python. Pour lesautres, sous Windows, sous Mac et sous Linux, des API ou des bus d'vnements de typeCOM, D-Bus, AppleScript, sont galement programmables en Python pour piloter desapplications, des parties du systme ou ragir des vnements.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 25 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    26/44

    PYTHON : le dveloppement autrement

    6.6. Interfaces GraphiquesInterfaces GraphiquesPython permet de crer des interfaces graphiques de manire simple et rapide, avecl'aide d'une bibliothque graphique adquate. Le code cr peut en outre fonctionnerde la mme manire sur Windows, Linux, MacOsX ou n'importe quel autre systme surlequel la bibliothque utilise est disponible ! Visuellement il est impossible dediffrencier une application crite en Python et la mme application crite parexemple en C ou C++ : si la bibliothque graphique est la mme, le rendu estidentique. Le code source, par contre, sera beaucoup plus facile comprendre et maintenir. L'utilisation de Python avec ces bibliothques rduit les temps de

    dveloppement de manire spectaculaire, sans pnaliser la ractivit des logiciels.

    Bibliothques disponibles en PythonUne bibliothque graphique est le composant qui offre l'ensemble des widgetscomposant une interface graphique (boutons, checkbox, menus, ascenseurs, etc.).Plusieurs bibliothques existent pour crer des interfaces graphiques multiplateformes,et toutes peuvent tre utilises avec Python. Les plus connues sont GTK+, Qt etWxWidgets.

    GTK+ utilise automatiquement le thme natif de Windows et passedonc inaperu sur ce systme. Il est utilis par dfaut dans beaucoupde systmes d'exploitations comme Ubuntu, Redhat ou Solaris, carl'environnement Gnome se base entirement sur lui. De trs nombreux

    logiciels l'utilisent, aussi bien libres, comme GIMP (retouche photo), Inkscape(illustrateur vectoriel) ou Maemo (plateforme embarque), que propritaires, commeVMware (virtualisation). L'accs en Python se fait grce PyGtk, disponible sousWindows, Linux et MacOsX.

    Qt est une bibliothque dveloppe aujourd'hui par Nokia et aussi trsemploye, aussi bien par des logiciels libres que des logicielspropritaires. Elle est utilise galement par de nombreux systmesd'exploitation comme Mandriva ou Pardus, car l'environnement KDE se

    base dessus. L'accs en Python se fait grce PyQt, disponible sous Windows, Linux etMacOsX.

    Le principal intrt de WxWidgets est qu'il utilise labibliothque graphique du systme cible, rendantl'intgration 100% transparente. L'accs en Python se fait

    grce WxPython, disponible sous Windows, Linux et MacOsX.

    D'autres bibliothques similaires existent, comme Tk, dont l'interface est mme fourniepar dfaut avec Python.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 26 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    27/44

    PYTHON : le dveloppement autrement

    Cration rapide d'interfaces graphiques

    Pour crer rapidement des interfaces graphiques complexes, il existe des outilsinteractifs et trs simples utiliser. En voici quelques uns, dont certains sont crits enPython. Leur fonctionnement est similaire : vous crez visuellement l'interfacegraphique, puis l'outil enregistre le description de cette interface dans un fichier XML.Ce fichier XML peut ensuite tre utilis grce une unique instruction dans leprogramme final en Python. Avec WxWidgets, tant donn que le code fait plus d'uneligne, il est gnr automatiquement par l'outil wxGlade.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 27 / 44

    Une alternative Glade

    Il existe un programme quivalent Glade, appel Gazpacho et entirement crit en Python.Son interface est lgrement diffrente, mais il offre globalement les mmes fonctionnalits,avec en plus l'accs un ensemble supplmentaire de widgets (Kiwi).

    Le logiciel WxGlade permet de crer visuellement une interface graphique en WxWidgets.

    Le logiciel Qt Designer permet de crer visuellement une interface graphique en Qt.

    Le logiciel Glade permet de crer visuellement une interface graphique en GTK+.

  • 8/3/2019 PythonLeDeveloppementAutrement

    28/44

    PYTHON : le dveloppement autrement

    Autres types d'interfaces graphiques

    D'autres technologies maturesou innovantes existent. Envoici quelques exemples :

    PyMT est un frameworkautorisant la crationd'interfaces tactilesMultipoint (multitouch)acclres grce OpenGL,sous Linux Ubuntu, MacOsX ouWindows 7.

    Jython est une version dePython fonctionnant sur laplateforme Java. Il permetd'accder en Python toutesles bibliothques Java et doncde crer des interfacesgraphiques avec AWT ouSwing.

    IronPython est une version de Python fonctionnant sur la plateforme .NET. Il permetd'accder toutes les bibliothques .NET et donc de crer des interfaces graphiques

    avec WPF, MFC ou directement win32.Pyjamas provient des technologies web. Il s'agit d'un compilateur Python versJavascript, d'un framework AJAX et d'un ensemble de widgets pour crer uneapplication fonctionnant indiffremment sur le web ou en mode desktop.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 28 / 44

    Capture d'cran d'une dmo d'interface multipoint en Python

  • 8/3/2019 PythonLeDeveloppementAutrement

    29/44

    PYTHON : le dveloppement autrement

    7.7. Scripts/administration SystmeScripts/administration SystmeDe par sa nature dynamique et multi-plateforme, et aid par sa syntaxe simpleet claire, Python se rvle tre un bonlangage pour la programmation de scriptssystmes. Ainsi on le retrouve de faon deplus en plus frquente dans de nombreuxscripts d'installation, de configuration, demaintenance, de surveillance, par

    exemple dans les distributions linuxcomme Ubuntu, Pardus, Redhat, Fedoraou Gentoo. On le trouve mme depuisquelques temps dans les outils courantsdes administrateurs Windows visant uneefficacit maximale.

    La gestion des exceptions, avec les erreurs possibles clairement identifies dans lesmodules systmes, permet ainsi de grer finement et clairement les diffrents tatsdans lesquels une opration peut se terminer. L'intgration l'environnement, lagestion simple des variables systmes, des arborescences, des journaux d'excutions,des expressions rationnelles puissantes permettent entre autres d'crire des scriptssystmes efficaces, lisibles et maintenables.

    Entre autres exemples, les modules suivants peuvent tre d'une utilit immdiate pourun administrateur systme ayant une tche automatiser:

    sys : fonctions fortement lies l'interprte Python

    os : fonctions lies au systme d'exploitation

    shutil : fonctions de haut niveau pour la gestion de fichiers

    stat : pour obtenir les informations prcises sur des fichiers

    logging : module simplifiant la cration de journaux d'vnements

    tarfile, zipfile : gestion des archives format zip et tar

    commands : appel et traitement des retours de programmes externes

    pwd : gestion scurise des mots de passes

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 29 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    30/44

    PYTHON : le dveloppement autrement

    8.8. Jeux vidosJeux vidosLe domaine des jeux vidos n'est pasnon plus ignor :

    Dans le jeu en ligne massivementmultijoueurs EVE online, StacklessPython a t utilis pour implmenterle serveur de jeu, un systmedemandant une approche hautementconcurrentielle de la programmation

    et de grandes performances. Lasouplesse de Python permet ici decrer un design applicatif extensible,adapt un besoin en volutionconstante, tout en restant facile modifier et amliorer dans des dlaisbrefs. Dans le jeu Civilisation IV, unjeu de stratgie rinventant l'histoire des civilisations humaines sur plusieurs milliersd'annes, Python est utilis pour accder de nombreux composants du jeux, etscripter un certain nombre de fonctionnements.

    Il existe galement des moteurs 3D comme les moteurs Panda3D, ou Soya3d, dont lescurs sont respectivement en C++ et Python/Pyrex et avec lesquels on peut crire desjeux entirement en Python et avec de bonnes performances.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 30 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    31/44

    PYTHON : le dveloppement autrement

    9.9. Performances et algorithmiquePerformances et algorithmique

    ApprentissageLa simplicit d'utilisation de Python en fait un langage intressant pour apprendrel'algorithmique sans tre perturb par des considrations telles que la compilation, lagestion des pointeurs et de la mmoire ou la matrise d'outils lis au langage. Justeaprs installation, on peut immdiatement lancer un interprte et effectuer quelquestests en ligne de commande. ce stade, mme un diteur de code est inutile.

    MaquettageRaliser un algorithme intensif final en pur Python n'est pas une bonne ide, mais faireune maquette de cet algorithme en Python en est une excellente. Cela permet deconfirmer ou infirmer une hypothse trs rapidement et d'viter d'allouer trop detemps ou de ressource quelque chose qui pourra ventuellement tre abandonn.

    Une fois la maquette ralise, il suffit de rcrire uniquement les parties qui doiventtre accelres dans un langage compil puis de les placer dans un module Python, oubien d'utiliser une des techniques ci-dessous qui ont l'avantage de rester en Python.

    OptimisationPython tant un langage interprt, ilprofite pleinement du fait que letemps d'excution d'un programmecote beaucoup moins cher que sontemps de dveloppement : le but estde crer des programmes le plusrapidement possible, tout en restantextrmement lisible et maintenable.

    Nanmoins des besoins d'optimisationpeuvent survenir. Pour ce qui est desperformances algorithmiques, Pythonpermet d'exprimer simplement desalgorithmes complexes et decomparer les performances dediffrentes approches, mais ne sera pas ncessairement la plateforme de choix pourfaire tourner, in fine, lesdits algorithmes.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 31 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    32/44

    PYTHON : le dveloppement autrement

    Diverses approches ont t explores pour offrir des acclrations, sous la formed'implmentations alternatives, de compilation just-in-time, de traduction de code ousimplement d'optimisations.Voici diffrentes techniques pouvant tre utilises, dont certaines sont capablesd'atteindre les performances du langage C.

    Psyco : c'est un mcanisme de compilationjust-in-time. Psyco annonce un gain moyende 4x, mais pouvant aller jusqu'a 100x, et ne demande aucune modification du codesource. Il ne marche cependant que sur architecture i386.

    Stackless Python : Stackless Python vise amliorer le support du multiprocesseur enajoutant des outils de paralllisme au langage : les tasklets, les channels, unordonanceur...

    PyPy : trs ambitieux et dop un temps par un financement europen, PyPy est unprojet de recherche visant effectuer de la traduction de code et de la compilation.L'ide directrice est de traduire une description de Python effectue en Python lui-mme vers des langages de plus bas-niveau. La rumeur veut que le but recherch estd'aller plus vite que le C. PyPy commence connatre des retombes intressantes etaffiche des performances souvent meilleures que le Python de rfrence.

    Unladen Swallow : initi par Google, c'est une modification de Python dont le but estde rester 100% compatible tout en offrant de fortes acclrations. L'objectif estd'obtenir une acclration de 5x. Les premiers rsultats donnent entre 1 et 2x, etGoogle estime que la marge de progression est encore norme.

    Cython : produit des modules C partir du code python, permet de rendre les types devariables statiques, offrantdans ce cas de grandesoptimisations. C'est l'outilparfait pour acclrer leszones d'un programme quidoivent absolument trerapides.

    Voici un bref graphiquecomparatif de quelquesbenchmarks, afin devisualiser les diffrencespotentielles entre lessolutions mentionnes ci-dessus. L'unit est le temps mis par CPython sur chaque algorithme.

    On constate que les possibilits d'acclration d'un code sont normes avec Psyco quiest probablement l'une des solutions les plus efficaces actuellement. Stackless Pythontrouve tout son intrt lors d'criture d'applications multithread.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 32 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    33/44

    PYTHON : le dveloppement autrement

    3. Outils d'industrialisationPar dfaut et dans l'esprit, Python n'oblige pas les dveloppeurs utiliser des outilslourds et contraignants, un simple diteur de texte et un terminal sont suffisants pourdvelopper des applications de toutes tailles, y compris les plus importantes. La courbed'apprentissage est ainsi beaucoup plus douce que dans d'autres environnements.

    Nanmoins tous les outils sont prsents pour s'adapter aux gots de chacun, auxpratiques modernes ainsi qu'aux contraintes industrielles. Cette section prsente desoutils qui doivent tre mis en place pour amliorer la qualit des projets, l'intgration

    continue ou la ractivit des quipes.

    3.Outils d'industrialisation.......................................................................33

    1.Index gnral des paquets Python1.Index gnral des paquets Python........................................................................................................................................3434

    2.Construction d'applications2.Construction d'applications........................................................................................................................................................3535

    3.Dploiement d'applications3.Dploiement d'applications........................................................................................................................................................3535

    4.Tests automatiss et documents4.Tests automatiss et documents........................................................................................................................................3535

    5.Qualit du code5.Qualit du code....................................................................................................................................................................................3737

    6.Intgration continue6.Intgration continue.......................................................................................................................................................................... 38387.Gnration de documentation7.Gnration de documentation.................................................................................................................................................. 3939

    8.Environnements de dveloppement intgrs8.Environnements de dveloppement intgrs..............................................................................................................4040

    9.Dpts de code source9.Dpts de code source.................................................................................................................................................................... 4040

    10.Forges de dveloppement10.Forges de dveloppement........................................................................................................................................................4141

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 33 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    34/44

    PYTHON : le dveloppement autrement

    1.1. Index gnral des paquets PythonIndex gnral des paquets PythonLes composants applicatifsen Python peuvent tredistribus sous forme depaquets individuels appelsdes eggs. Un projet peutdonc tre dcompos enplusieurs eggs et ceux-cipeuvent tre facilement

    rutiliss dans d'autresprojets.

    Dans le cadre d'une gestionde projet, le dcoupage eneggs facilite la rpartitiondes tches entre plusieursquipes qui peuvent publierindividuellement lesversions de leur modulepour les intgrer au produitfinal. La gestion de projetelle-mme peut donc trespare et le module peut suivre son propre cycle de dveloppement, test, publication,intgration, mise en production, et maintenance corrective.

    Les composants ayant un intrt gnral sont publis sur un site web regroupantl'ensemble de ce qui est produit par la communaut : l'index PyPI (Python PackageIndex). Cette pratique, courante dans le milieu du logiciel libre, amliore lamutualisation du code, vite de rinventer ce qui existe dj, permet de trouverfacilement un module pour un besoin particulier, et encourage tout le monde criredu code gnrique rutilisable.

    Grce des outils comme Distribute et PIP, tout composant prsent sur l'index PyPIpeut tre tlcharg et install d'une simple commande ou ajout un projet par unesimple ligne dans un fichier de configuration. l'inverse, un composant peut trepubli sur l'index PyPI avec la mme facilit, ou ventuellement sur un index priv,interne l'entreprise.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 34 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    35/44

    PYTHON : le dveloppement autrement

    2.2. Construction d'applicationsConstruction d'applications

    Une application se compose gnralement d'un assemblage de produits, de paquets, debases de donnes, de bibliothques, de code source spcifique, ou de configuration.Pour assembler tous ces lments de manire automatique et rptable, il faut utiliserun outil de construction. Buildout en fait partie et est trs utilis dans le milieu duweb. Il se base sur une succession de recettes , chaque recette tant responsabled'une partie de l'application, par exemple la mise en place de la base de donnes oud'un distributeur de charge. Les recettes sont elles-mmes distribues sous forme depaquets Python et sont disponibles pour tous. Un unique fichier de configuration dequelques dizaines de lignes est suffisant pour dcrire et construire une application

    complexe en puisant dans diverses sources.

    3.3. Dploiement d'applicationsDploiement d'applications

    Le dploiement s'automatise facilement, soit en utilisant l'outil Buildout mentionndans le paragraphe prcdent, ventuellement en gnrant une archive ou un paquetsystme contenant l'application. Des outils additionnels comme Fabric peuvent treutiliss pour automatiser des tches simultanment sur plusieurs serveurs. Des projetstrs rcents et prometteurs comme Silver Lining s'inspirent des techniques du CloudComputing pour le dploiement sur des serveurs virtuels. Silver Lining pourra termedployer des applications faites dans d'autres langages comme PHP pour lequel uneprise en charge exprimentale existe dj.

    4.4. Tests automatiss et documentsTests automatiss et documents

    Si les tests unitaires peuvent se pratiquer dans tous les environnements, la plateformePython offre une notion complmentaire extrmement bnfique : les doctests . Onpeut prsenter les doctests au choix comme de la documentation teste ou des testsdocuments. Ils permettent de documenter et tester un projet en mme temps

    pendant la phase de conception, avant mme l'criture du code. Il s'agit d'unesuccession de paragraphes explicatifs et de morceaux de code de haut niveau donnantun aperu de l'utilisation des composants applicatifs dans une console Python.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 35 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    36/44

    PYTHON : le dveloppement autrement

    En voici un exemple :

    Voici comment utiliser la classe `Ham` avec ses attributset ses mthodes. On peut crer une instance de la classe et modifier sesattributs :

    >>> from monprojet import Ham>>> ham = Ham()>>> ham.nom = 'nom du ham'>>> ham.valeurs = [2, 3, 4]

    Ensuite on peut calculer la moyenne des valeurs grce une mthode `mean` :

    >>> ham.mean()3.0

    Cette documentation peut tre excute comme un programme test et on doitretrouver l'excution les mmes valeurs de sortie que dans le texte.

    Les doctests sont complmentaires aux tests unitaires ou fonctionnels et garantissentque la documentation existe et est jour. Cette technique permet de travaillernaturellement et simultanment en dveloppement dirig par les tests etdveloppement dirig par la documentation. L'ensemble de ces pratiques apportentdes avantages indniables :

    garantie de non-rgression

    documentation existante et jour

    dtection prcoce des erreurs de conception

    possibilits d'intgration continue

    En Python il est galement possible et conseill d'intgrer une (petite) partie de ladocumentation directement dans le code source sous forme de docstring, qui peuventelles-mme tre des doctests ! On peut donc placer des petits tests documentsdirectement dans le corps du programme, l'intention des dveloppeurs. Cettedocumentation intgre dans le code peut ensuite tre teste et extraiteautomatiquement afin de gnrer automatiquement des livres de documentation et desrapports de tests. Dans ce cas d'utilisation, la proximit entre le code et les tests

    garantissent que les tests sont adquats et modifis en mme temps.Parmi l'ventail des outils de tests, on trouve galement des outils de mesure du tauxde couverture des tests, qui sont souvent intgrs par dfaut dans les outils delancement de test et doivent faire partie de l'indicateur final de qualit.

    Les outils de Mock sont galement utiles et aident simuler un composant applicatifmanquant pour les tests.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 36 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    37/44

    PYTHON : le dveloppement autrement

    5.5. Qualit du codeQualit du code

    Analyse automatique : comme dj mentionn dans le premier chapitre, un codePython doit prfrablement suivre un ensemble de conventions de codage (dfiniesdans le document PEP-8). En plus de ces conventions, il est possible de dfinir unensemble de rgles spcifiques un projet, ou de contraintes supplmentaires sur lecode. Des outils d'analyse du code sont dans ce cas utiles pour vrifier ces rgles, etdfinir un ensemble de mtriques de qualit respecter. Ces mtriques peuvent alorstre vrifies en mme temps que les tests unitaires.

    Parmi les outils d'analyse automatique du code, on peut citer Pylint, PyFlakes ouPyChecker. Ces outils sont capables de dtecter des problmes potentiels dans le code,

    un manque de documentation, un non-respect des conventions, des imports inutiles,des morceaux de code jamais excuts, etc.

    Des indicateurs supplmentaires existent pour dtecter par exemple des problmes deconception, mesurer la complexit cyclomatique du code, ou trouver des redondancespotentielles.

    Analyse humaine : l'analyse humainese pratique notamment grce desoutils de revue de code. L'applicationReview Board, crite elle-mme enPython (Django), prend en chargecette fonctionnalit : au travers d'uneinterface web conviviale, le codesource peut tre comment, toutemodification peut tre soumise approbation avant ou aprspropagation dans le dpt. La revuede code est une pratique excellentemais non sans risques au niveauhumain : elle peut entraner destensions entre dveloppeurs et doit

    tre mise en place avec prcaution etconcertation.

    Analyse alatoire : les outils de fuzzing peuvent dtecter des bugs ou des problmesde scurit en soumettant au programme des donnes invalides gnresalatoirement, ou gnres partir de donnes valides dont quelques bits ont tmodifis alatoirement. Plusieurs outils de ce genre sont crits en Python, l'un d'entreeux (Fusil) est capable de tester n'importe quel programme et a mme servi dtecterdes problmes dans de nombreux logiciels tels que OpenOffice.org ou Python lui-mme.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 37 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    38/44

    PYTHON : le dveloppement autrement

    6.6. Intgration continueIntgration continue

    Pour amliorer la qualit et la ractivitd'un dveloppement, on peut mettre enplace un robot qui lance les testsunitaires et fonctionnelsautomatiquement, de manirepriodique ou de manire synchrone dsqu'une modification est effectue sur lecode. L'quipe peut tre ainsi avertieimmdiatement et sans intervention humaine.

    L'un des outils les plus utiliss estBuildBot, un robot d'intgration continuecrit en Python. Cet outil est trs souple.Un ensemble de clients BuildBots peuttre lanc sur diffrentes machines, parexemple un Windows 32bits, un Linux64bits, et renvoyer les informations unserveur Buildbot qui affiche un tableaurcapitulatif de tous les tests et de leursrsultats. En mme temps que les tests

    unitaires, le BuildBot peut excuter etpublier les analyses de qualit de code. Enfonction de ce rsultat, n'importe quelleaction automatique peut tre entreprise,comme l'envoi d'un e-mail ou le hurlementd'un Tuxdrod.

    Les mtriques de qualit peuvent aussitre recueillies par des outils commeBitten pour faciliter l'intgration continue.

    L'intrt de Bitten est qu'il s'intgre dansla forge Trac, pour rapprocher lesmtriques qualit de la gestion des tickets, la documentation ou le code source.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 38 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    39/44

    PYTHON : le dveloppement autrement

    7.7. Gnration de documentationGnration de documentation

    L'univers Python utilise une syntaxe commune pour la documentation, les commentairesde code ou les doctests : le reStructuredText (RST). Le RST a la particularit d'treconu pour tre lu directement. Il ne comporte pas d'lments gnant la lecture telsque les balises ou les dlimiteurs de blocs (crochets, accolades...), mais est inspir despratiques intuitives d'criture de contenu en mode texte pur. Voici un exemple :

    Outils d'industrialisation==========================

    Par exemple, les titres de chapitre sont souligns de signes 'egal'

    Gnration de documentation---------------------------

    Les titres de paragraphe sont souligns de tirets,l'emphase est indique avec des **toiles** (gras) ou des `quotes`(italique)

    Python fournit tous les outils ncessaires pour valoriserde la documentation crite en RST. L'outil phare degnration de documentation dans l'cosystme Python

    est Sphinx. Cet outil gnre de la documentation auformat HTML, PDF ou Latex partir de documents enRST. Le html produit offre par dfaut une interface webconviviale avec une table des matires gnreautomatiquement et un moteur de recherche intgrcrit en Javascript. Il gre la coloration syntaxique desblocs de code pour de nombreux langages. Il peut galement inspecter un projet pourextraire la documentation du code et la liste des composants.

    Sphinx peut tre utilis pour n'importe quel projet de documentation. Le phase initialed'criture de ce livre blanc a elle-mme t gre avec cet outil.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 39 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    40/44

    PYTHON : le dveloppement autrement

    8.8. Environnements de dveloppement intgrsEnvironnements de dveloppement intgrs

    Les dveloppeurs habitus auxenvironnement de dveloppement intgrspourront retrouver leurs marques car il estpossible de travailler notamment avecEclipse en utilisant un module nommPyDev, qui offre tous les outils classiquesd'un EDI avec une spcialisation pourPython : compltion de code, colorisationde syntaxe, analyse et valuation de code,

    etc.D'autres EDI non mentionns ici sontdisponibles, aussi bien libres quepropritaires et souvent crits eux-mmes en Python.

    9.9. Dpts de code sourceDpts de code source

    Les dpts de code source contiennent tout l'historique, ligne parligne, de l'volution du code source d'un projet. En dehors de

    Subversion, encore trs utilis, la tendance actuelle est l'utilisation de gestionnaires de version dcentraliss commeMercurial, Bazaarou Git. Sur ces trois systmes, les deux premierssont crits en Python ! Leur intrt est multiple, ils ne ncessitentpas de serveur central, sont faciles utiliser, autorisent un travaildistant hors-ligne, s'adaptent n'importe quelle organisationd'quipe, et offrent de par leur fonctionnement une rplicationintrinsque pouvant servir de sauvegarde. De trs nombreuxprojets migrent actuellement vers ces systmes, grce la facilit avec laquelle onpeut convertir un dpt Subversion en dpt dcentralis.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 40 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    41/44

    PYTHON : le dveloppement autrement

    10.10. Forges de dveloppementForges de dveloppement

    Les forges sont des environnementsconviviaux regroupant dans une interfaceunifie tous les outils utiles pendant lesphases de dveloppement d'un logiciel :gestion des tickets, wiki dedocumentation, navigation dans le code,gestion des traductions, affichage desmtriques de qualit, affichage du rsultat des tests automatiss, etc. Ces forgespeuvent tre installes en interne dans les entreprises et peuvent grer souvent

    plusieurs projets en mme temps. Trac en fait partie : cette forge s'installe enquelques minutes et bnficie de nombreux modules offrant des fonctionnalitsadditionnelles. Certaines de ces forges possdent un pendant public comme leLaunchpad de Canonical qui gre de trs nombreux projets de logiciels libres,notamment le systme d'exploitation Ubuntu Linux. Le Launchpada t libr depuisquelques mois, il offre un niveau fonctionnel trs large pour les entreprises souhaitants'en quiper.

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 41 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    42/44

    PYTHON : le dveloppement autrement

    4. CommunautLe langage Python est dvelopp sur le mode communautaire et n'est pas dpendantd'une seule entreprise. Il est le rsultat de travaux et de votes issus de propositionsd'amliorations nommes PEP (Python Enhancement Proposal). Au del du langageen lui-mme, la cration et le support de l'ensemble des outils et bibliothques del'cosystme est pris en charge par une communaut internationale constitued'entreprises, particuliers, organisations ou associations.

    En France, le ct associatif est animpar l'afpy, au travers de nombreusesactivits :

    confrence annuelle PyCon FR

    rencontres mensuelles sur dessujets techniques et nontechniques

    prsence aux salons, rencontreset confrences :

    Salon Solutions Linux RMLL

    OSDC fr

    JDLL

    JM2L

    Rdaction de dossiers et articles de presse(Hors-Srie Linux Magazine n40 surPython)

    Animation du site web http://afpy.org (forum, liste de diffusion, offres d'emploi,etc.)

    Prsence sur des canaux IRC

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 42 / 44

    http://afpy.org/http://afpy.org/
  • 8/3/2019 PythonLeDeveloppementAutrement

    43/44

    PYTHON : le dveloppement autrement

    5. ConclusionLes 20 ans d'ge de la plateforme Python lui ont apport une forte maturit et ontengendr un cosystme trs vari. Cet cosystme est compos de nombreux acteurs,institutions, indpendants, particuliers, associations, mais surtout de trs nombreusesentreprises des plus petites aux plus grandes comme Google ou Microsoft qui ontcompris les avantages - agilit, polyvalence, lisibilit et efficacit - et l'engouementque pouvait apporter cette plateforme. Dans de nombreux pays, on constate mme uneforte acclration du taux d'utilisation de Python (+45% aux tats-Unis depuis le

    printemps 2008). Tourne vers l'avenir, la plateforme a galement russi samodernisation avec la sortie d'une nouvelle version majeure (3.0 et 3.1) qui sedbarrasse de certains dfauts de jeunesse.Or, en dpit d'une bonne industrialisation de ses procds et la prsence de nombreuxoutils, Python reste une plateforme extrmement facile aborder et trs homogne.Cette homognit tire sa source d'une sensibilit propre la communaut, qui seretrouve dans l'criture de ce qu'on appelle un code pythonique . Qu'est-ce qu'uncode pythonique ? Une premire rponse existe dans l'interprte Python lui-mme :

    >>> import thisThe Zen of Python, by Tim Peters

    Beautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren't special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.

    In the face of ambiguity, refuse the temptation to guess.There should be one -- and preferably only one obvious way to do it.Although that way may not be obvious at first unless you're Dutch.Now is better than never.Although never is often better than *right* now.If the implementation is hard to explain, it's a bad idea.If the implementation is easy to explain, it may be a good idea.Namespaces are one honking great idea -- let's do more of those!

    Alter Way 2010 Version 1.0 Publi sous licence CC-BY-SA 3.0 Page 43 / 44

  • 8/3/2019 PythonLeDeveloppementAutrement

    44/44

    PYTHON : le dveloppement autrement

    6. Licence et diffusionCe livre blanc est publi sous licence Creative Commons Attribution-Share Alike 3.0, dont le textecomplet se trouve cette adresse :

    http://creativecommons.org/licenses/by-sa/3.0/legalcode

    Vous tes libres :

    de reproduire, distribuer et communiquer cette cration au public

    de modifier cette cration

    Selon les conditions suivantes :

    Paternit Vous devez citer le nom des auteurs originaux de la manire indique parl'auteur de l'uvre ou le titulaire des droits qui vous confre cette autorisation (maispas d'une manire qui suggrerait qu'ils vous soutiennent ou approuvent votre utilisationde l'uvre).

    Partage des Conditions Initiales l'Identique Si vous transformez ou modifiez cetteuvre pour en crer une nouvelle, vous devez la distribuer selon les termes du mmecontrat ou avec une licence similaire ou compatible.

    AVERTISSEMENT : Cette licence concerne le texte du document. Les marquesdposes ou logos qui sont mentionns, utiliss ou cits dans ce document sont etrestent la proprit de leurs propritaires respectifs.

    http://creativecommons.org/licenses/by-sa/3.0/legalcodehttp://creativecommons.org/licenses/by-sa/3.0/legalcode