icon_python.png

Intégrer Python et C/C++

PYTHON-CPP4 jours

Objet

Python est un langage puissant, orienté objet, convenant parfaitement à la majorité des travaux de développement d'applications et d'interfaces graphiques. Outre sa lisibilité et la simplicité de sa syntaxe, ce qui fait la force de Python est la facilité avec laquelle on peut utiliser et piloter depuis Python des codes écrits dans d'autres langages. Ainsi Python se positionne comme un langage de premier choix dans toutes les applications pour lesquelles la réutilisation de code est réellement importante, comme par exemple les applications de calcul scientifique.
La formation proposée ici se déroule sur quatre jours et étudie les différents moyens, viables industriellement, pour intégrer du code C ou du code C++ dans un programme en Python. Outre l'intégration purement fonctionnelle, elle s'intéresse également aux diverses problématiques inhérentes au C et au C++ (typage, comptage de références, etc.). Enfin, elle propose une critique des différents moyens d'intégration en listant leurs avantages et inconvénients.
La formation comporte une large part de travaux pratiques permettant de mettre en œuvre immédiatement les concepts ayant été vus dans le cadre du cours.


Public visé

Ce cours s'adresse aux personnes souhaitant mettre en œuvre au sein d'un même application des codes en Python et C, ou en Python et C++. Il sera particulièrement apprécié des personnes travaillant dans le domaine scientifique, et souhaitant piloter des codes de simulation en C ou C++ à partir d'une application ou de scripts en Python.


Pré-requis

Bonne connaissance de la programmation en Python, C et C++ (au moins trois mois de pratique régulière de Python, six mois de C et C++), solides connaissances de la programmation objet.


Programme

Intégrer du C dans Python

  • Introduction

    solutions existantes pour intégrer du C/C++ dans Python
  • Module d'extension de Python

    librairie dynamique, mécanismes, squelette d'un module, analyse des arguments, exemple
  • Construction d'un module

    compilation et édition de liens, préparation avec setup.py
  • Objet Python

    présentation de la classe PyObject, comptage de références, types en Python
  • Interfaces standards

    séquences, mapping, nombres
  • Objets de base

    string, int, tuples, dictionnaires
  • Python et NumPy

    API C
  • Approfondissement de l'API

    callbacks, ramasse-miettes, gestion d'erreurs

Intégrer du C++ dans Python avec Boost

  • Présentation de Boost

    objectif, philosophie d'utilisation, utilisation des templates et de la bibliothèque de support
  • Exporter une fonction avec Boost

    exemple simple, construction d'un module
  • Exporter une classe avec Boost

    exemple de base, traitement des constructeurs et des variables membres, définition de propriétés
  • Approfondir l'exportation de classes avec Boost

    héritage, fonctions virtuelles, opérateurs et fonctions spéciales en Python
  • Subtilités des appels de fonction dans Boost

    comptage de références, conventions d'appel
  • Manipuler des objets avec Boost

    création, initialisation des attributs, objets dérivés
  • Application

    le type Array de NumPy
  • Approfondissement de l'utilisation de Boost

    itérateurs, exceptions

Intégrer du C++ dans Python avec SWIG

  • Présentation de SWIG

    objectif, philosophie d'utilisation, mise en œuvre
  • Exporter des fonctions avec SWIG

    syntaxe, mécanismes, conversion de types, traitement des arguments
  • Exporter des classes et structures C avec SWIG

    fonctions membres, constructeurs, variables statiques
  • Traitement des exceptions

  • Approndir l'utilisation de SWIG

    fonctions virtuelles, opérateurs, hiérarchie, surcharge
  • Comptage de références

    les pointeurs, les objets complexes, la cession de propriété
  • Utiliser les typemaps

  • Le préprocesseur de SWIG

Conclusion

  • Comparaison des possibilités

    quels méthodes et outils choisir ? Quand utiliser Python, C ou C++ ? Quand utiliser Boost ou SWIG ?


Adaptations possibles

Cette formation peut être adaptée afin de répondre au mieux à vos besoins. En particulier, certains points du cours sont facultatifs et ne seront abordés que si les auditeurs manifestent un intérêt et le temps le permet. D'autre part, Logilab dispose aujourd'hui d'une palette très large de modules pédagogiques permettant la personnalisation de ses formations.
L'adaptation des cours en intra-entreprise ne pose aucun problème ; cette opération est cependant plus difficile pour les cours en inter-entreprises. N'hésitez pas à demander conseil à notre service commercial.


Conditions

Des sessions en inter-entreprises sont organisées régulièrement dans nos locaux à Paris. Il est possible d'organiser, à votre demande, une ou plusieurs sessions en intra-entreprise (sur site) n'importe où en France ou en Europe.
Chaque participant à la formation dispose d'un exemplaire personnel du support de cours et du manuel d'exercices.

Durée

4 jours soit 28 heures.

Langue

Au choix, française ou anglaise

Intervenant

Tous les intervenants animant cette formation bénéficient de compétences pédagogiques reconnues. D'autre part, ils participent activement au développement du langage Python ainsi que de sa bibliothèque standard, et sont intervenus dans des projets d'informatique scientifique et financière mêlant des codes en Python, C++, C et Fortran.

Travaux pratiques

Cette formation accorde une place prépondérante aux travaux pratiques qui permettent, tout au long du cours, de mettre en œuvre et assimiler les concepts théoriques.

Inter-entreprises

  • groupes de 4 personnes minimum et 8 personnes maximum
  • mardi-vendredi 9h-12h15, 13h30-17h00
  • Paris, Toulouse
  • déjeuner inclus

Intra-entreprise

  • groupes de 10 personnes maximum
  • 4 journées