130 likes | 234 Views
The Python programming Language an introduction. Séminaire Inforge 2 décembre, 2003 HEC Lausanne Thibault Estier HEC Lausanne thibault.estier@hec.unil.ch (+41 21) 692.3418. Menu. Origine du langage Python et principales caractéristiques Quelques exemples illustratifs
E N D
The Python programming Languagean introduction Séminaire Inforge 2 décembre, 2003 HEC Lausanne Thibault Estier HECLausanne thibault.estier@hec.unil.ch (+41 21) 692.3418
Menu • Origine du langage Python et principales caractéristiques • Quelques exemples illustratifs • Le concept du développement glissant • Rôle du langage Python dans les projets open-source • Python et le développement pour Internet - Zope • L'environnement de développement Jython (Python pour JVM) • L'environnement de développement PythonCard Toutes les références Web de cette présentation (URL's) sont disponibles sur: http://isi.unil.ch/radixa/
Origine du langage • au départ, oeuvre d'une personne, Guido van Rossum, travaillant au Stichting Mathematisch Centrum (CWI), Pays-Bas. • Noël 1989: premier interprète du langage (inspiré du langage ABC). • 1991: 1ère édition publique, 1er forum • 1993: 1ère Conférence Python - Washington DC • 1994: déménagement de GvR au USA, Corporation for National Research Initiatives (CNRI) de Reston, Virginie • 1994-1999: croissance et maturité de python, croissance de la communauté d'utilisateurs. • 1998 - 2003: diffusion de python comme langage d'enseignement.
Caractéristiques du langage Python • Python est un langage de programmation interprété, procédural, orienté-objet, à typage dynamique, réflexif, extensible, diffusé en open-source. • Interprété: compilé dans un byte-code pour une machine python virtuelle à pile, mémoire collectée, écrite en GNU/C, source disponible pour plateformes Windows, Linux, MacOSX, Solaris, HP-UX, IBM-AIX, AS/400, OS/390, OS/2, OpenVMS, BeOS, QNX, VxWorks, Amiga, Newton, PalmOS, Psion, WinCE, PocketPC, Sony PlayStation 2, ... • Procédural: construit sur les concepts traditionnels de modules, fonctions, structures de contrôles if then: else:, for in:, while:, exceptions, assertions, • Orienté-Objet: concept de classe proche du modèle de Java, mais pas "forcené-objet", tout code n'est pas nécessairement une classe, • Typage dynamique: semblable à Smalltalk, -> typage à l'exécution plutôt qu'à la compilation, • Réflexif: une variable peut interroger son type, tester l'existence d'attributs, un objet peut interroger sa classe, peut changer de classe, peut vérifier qu'il possède une méthode, etc.
Caractéristiques du langage Python (suite) • Python est un langage de programmation interprété, procédural, orienté-objet, à typage dynamique, réflexif, extensible, diffusé en open-source. • extensible: on peut écrire un module dans un autre langage (C, Fortran, ...) et importer ce module comme s'il était écrit en python. Sert d'interface avec des bibliothèques de logiciels existants, • open-source: toutes les sources de l'interprète et de la machine virtuelle sont disponibles, toutes les sources de la librairie standard python (qui est très bien écrite et très instructive), communauté de contributeurs très active, • "python comes with batteries included" : librairies de modules couvrent à peu près tous les domaines possibles et imaginables, librairie standard très riche déjà, et système de référencement des packages pythons externes sur le site du langage (python.org).
Quelques exemples... • une fonction python: def invert(table): index = {} # empty dictionary for key in table.keys(): value = table[key] ifnot index.has_key(value): index[value] = [] # empty list index[value].append(key) return index • typage dynamique (les valeurs sont typées, pas les variables) • indentation • usage des dictionnaires (mapping structures)
Autres exemples... (demo sur l'interpréte python)
Python et le développement glissant (sliding software development) • Python se prête assez bien au développement de "petites" applications, ou à des applications à petites "itérations" de développement. • Développement glissant: • 1) tout développer en python, en modularisant correctement, • 2) valider les fonctionnalités (tests, robustesse, documentation, ...) • 3) mesurer les points de performances "critiques", • 4) ré-écrire uniquement le code critique dans un langage compilé (C, C++, Fortran, Java?, ...), en utilisant le code python validé et testé comme une spécification exécutable. • il existe des outils python qui assistent ce processus, • de gros applicatifs (~50 Klocs) ont été développés selon ce mode (serveur applications Zope)
Python et ses domaines d'applications • Développements Web • Yahoo Maps, Yahoo groups, Google, • Zope Corporation • Syndication de contenu (ZDNet, Userland, Linux Weekly News, ...) • Graphisme • Walt Disney animation, • ABAQUS/CAE finite elements analysis programs, • Science • US National Weather Service • National Research Council of Canada - High Performance Computing Group: projet pour construire des computational grids, • AlphaGene Inc, • Los Alamos National Laboratory - simulations controls, performance analysis, vizualisation, • NASA integrated planning system
Python et ses domaines d'applications • Outils d'ingéniérie logicielle • "Object Domain" CASE tool (récemment migré de Tcl vers Python) • Red Hat - procédures d'installation • Education • University of Cal. Irvine - campus wide applications • New Zealand Digital Library - ont migré de Perl à Python pour permettre la maintenance • python a intégré de nombreux curriculums comme langage d'introduction à la programmation et structures de données (voir http://www.python.org/sigs/edu-sig/) • Finance • ABN AMRO Bank - interface entre système de trading et analyse de risque • Bellco Credit Union (online banking system) produit a obtenu le label SAFE (Secure Access Financial Enterprise),
Python et Zope • Zope est un serveur d'applications Web, création de portails, CMS, etc. • Développé à 95% en python (développement glissant), • Nécessiterait un séminaire à lui tout seul ! • Créé par la société" Digital Creations" --> Zope Corporation, • Constitue une (sous-)communauté de développeurs et d'utilisateurs à part entière • Héberge la PSF Python Software Foundation depuis 1999, développent les nouvelles versions de Zope et de Python de façon synchrone • www.zope.com-> société Zope Corporation (services & consulting) • www.zope.org -> communauté Zope
L'environnement Jython • un environnement python s'exécutant sur une machine virtuelle Java. • "100% pure Java". • modèles de classe compatible avec Java, • voir www.jython.org • Possibilités offertes par ce "mariage": • programmeurs Java ajoutant un langage de scripts à leur applic, • fournit un interprète interactif pour tester des packages java, debugger des applications java, etc. • RAD en Java avec le paradigme "développement glissant", un programme source python est typiquement de 2 à 10x plus court que son équivalent Java. • écriture d'applets en python (avec le compilateur jythonc), • exécuter du python sur toute plate-forme java (Java phones ?) • Petite démo...
L'environnement PythonCard • Objectif: • un kit pour le développement d'applications avec GUI portables (Windows, MacOSX, Linux) basé sur python • rendre le dév. des GUI aussi simple qu'avec HyperCard, avec python comme langage à la place d'HyperTalk. • Projet open source, encore en développement, (version actuelle: 0.7.2), • Basé sur le framework wxPython qui lui même est une interface sur wxWindows. (wxWindows est un framework GUI multi-plateformes qui remplace progressivement Tcl/Tk). • PythonCard peut être vu comme un outil pour faire du wxWindows très facilement. • Démo ?