Projet débuté en décembre 1989 Première version publique en février 1991 Lancement du site python.org en 1997 Python Software Foundation en 2001 Version actuelle 2.5 Disponible sous Windows, Linux/Unix, Mac OS X, OS/2, Amiga, Palm, et téléphones Nokia
Langage orienté objet et dynamique Interprétation des instructions à la volée Définition des routines et des classes à la volée Lecture et modification des données à la volée De belles références La NASA, Industrial Light & Magic, Google, YouTube, etc.
Type de base (32bits/64bits) Vérification dynamique des types Tableau, dictionnaires Branchement, boucle Classe, méthode Traitement des exceptions Gestion automatique de la mémoire
Dynamic programming language is a term used broadly in computer science to describe a class of high level programming languages which share many common runtime behaviors that other languages might perform during compilation computer sciencehigh levelprogramming languagesruntimecompilationcomputer sciencehigh levelprogramming languagesruntimecompilation Wikipédia :
Eval Evaluer une donnée générée en exécution Runtime alteration of object or type system Modifier une valeur voire un type en exécution Functional programming Utiliser des expressions fonctionnelles dans le langage Closures Redéfinir une fonction tout en gardant le contexte en cours Continuations Exécuter à nouveau une séquence de code aprés avoir modifié son contexte Introspection Analyser la structure et les éléments du code en exécution Macros Scripter des actions ayant accés aux fonctionnalités du compilateur et à au code d’introspection
Dynamique Plus de simplicité dans l’écriture Plus de simplicité dans les modifications Plus de simplicité dans l’introspection de code Selon le contexte d’utilisation plus ou moins facile à industrialiser Difficile à déboguer sans code intermédiaire tel que le bytecode
Super évaluateur d’expressions Tests en temps « réel » Recherche de bogues Tunning de code Approche interactive de l’exécution d’une application
Créé par Jim Hugunin le créateur de Jython Code source sous licence Shared Source Licence hébergé sur codeplex Jim est maintenant employé chez Microsoft
Implémentation fidèle de Python Donne accés au framework.NET : import clr Peut être embarqué dans une application.NET Implémentation performante de Python !
Benchmark reconnu dhrystone en Python Lib/test/pystone.py Seul benchmark livré avec Python Simple mais pas trivial ~200 lignes de code Utilise la plupart des opérateurs basiques de Python Utilisation minime de OO IronPython est rapide 1.7x plus rapide que CPython-2.3
En FX x plus rapide que CPython-2.3 En FX 2.0 2x plus rapide que CPython x plus rapide que CPython-2.4 IronPython reflète la performance de la plateforme
Les méthodes dynamic Code generation that can be collected normally Versatile tool for language implementers Les delegate Différence indéniable entre la CLR sur la JVM Autorise un important gain en performance Les generics Fonctionnalité disponible pour tout les langages.NET Complétement supporté par le mécanisme de réflection en exécution Performance globale de la plateforme.NET IronPython bénéficie de toutes les améliorations de la plateforme
Même architecture que CPython scanner, parser, bytecode generator, support library Les différences portent sur le bytecode et la librarie Le “Bytecode” = IL de la CLR – qui produit du code natif La librairie de base est écrit en C# à la place C Compilation statique ou dynamique Produit.exe/.dll ou charge et exécute du code dynamiquement Entièrement écrit en C# Jim a conçu 3 prototypes avant de définir IronPython Python Source File or Code Snippet Python Source File or Code Snippet Python Scanner Python Scanner Tokens Python Parser Python Parser AST IL Generator IL Generator IL CLR IronPython. Objects IronPython. Objects refs
Jim a démontré que la plateforme.NET est un excellent socle pour les langages dynamiques La plateforme.NET peut réellement accueillir tout type de langage L’exemple pourrait être décliné à d’autres dialectes…
IronPython La version en cours on on IronPython pour ASP.NET D7E-4C6E-9B18-8F9D2AC1EE43&displaylang=en D7E-4C6E-9B18-8F9D2AC1EE43&displaylang=en Communauté IronPython Ruby Powershell ment/powershell/default.mspx ment/powershell/default.mspx
S’informer - Un portail d’informations, des événements, une newsletter bimensuelle personnalisée Se former - Des webcasts, des articles techniques, des téléchargements, des forums pour échanger avec vos pairs Bénéficier de services - Des cursus de formations et de certifications, des offres de support technique Visual Studio Abonnement MSDN Premium Abonnement TechNet Plus : Versions d’éval + 2 incidents support
© 2007 Microsoft France Votre potentiel, notre passion TM