Tandis qu’un milliard d’ordinateurs travaillent avec Excel®, seulement quelques millions utilisent C++ et Python. Ces deux langages de programmation offrent pourtant des possibilités industrielles sans limites, notamment pour gérer des données massives. Ainsi, nos clients demandent régulièrement d’effectuer des projets impliquant Python.
Chez Solstice Lab, nous cherchons à varier nos outils, et nous allons partager ici notre savoir-faire, afin de simplifier le choix d’un outil informatique, en fonction du contexte. C’est pourquoi, nous allons montrer en quoi la connaissance de C++ ou de Python permet de soutenir des décisions opérationnelles au sein d’une entreprise et nous détaillons comment choisir entre ces deux langages de programmation :
C++ = Vitesse / Python = Simplicité.
Sommaire
Qu’est-ce qu’un langage de programmation ?
Besoin métier
Beaucoup d'entreprises doivent manipuler des chiffres et des données. Un langage de programmation permet d'automatiser ces tâches. Il peut ainsi faciliter la clôture comptable, mais aussi l'interprétation des données d'un logiciel de gestion (ERP).
Certaines entreprises utilisent principalement Microsoft® Excel® pour traiter ces données, car ce programme est facile d’accès et qu’il y a de nombreux utilisateurs capables de manier les données au format .xlsx. Néanmoins, cette pratique admet de nombreuses limites - notamment pour un déploiement industriel :
- Excel® admet un nombre fini de lignes,
- Les erreurs sont souvent difficiles à résoudre, à gérer,
- Le code VBA est source d’instabilité.
Exemples d’utilisation de C++ et Python
Le point fort de Python est son adaptabilité. De fait, il permet de gérer de nombreux types de données. C'est un langage dit de haut-niveau. Inversement, le C++ est un langage très typé, ce qui fait qu'il est beaucoup plus approprié pour développer des programmes scientifiques très techniques, c'est un langage de bas-niveau.
Nous privilégions donc Python pour des études mathématiques, et C++ lorsqu'il faut optimiser du code :
Python
- analyse et recherche,
- compréhension des besoins,
- mise en relation de données
C++
- logiciel embarqué,
- algorithmes haute fréquence,
- implémentation fine des solutions
Par exemple, en finance de marché, il semble adéquat de privilégier le C++ pour écrire des algorithmes de trading dont le temps de réaction est la nanoseconde. Mais il est d’usage de choisir Python pour effectuer des analyses de stratégie (e.g. prédire un rendement) ; ainsi que pour développer de l'intelligence artificielle.
Grâce à sa flexibilité, Python est aussi un outil pratique pour développer des APIs côté client et extraire des données, en complément de l’utilisation de bases de données SQL. Il permet aussi de visualiser facilement des informations, en utilisant par exemple la bibliothèque matplotlib. De plus, Python permet de développer des interfaces Web pour afficher des KPIs personnalisables, voir Streamlit :
Comparaison C++ et Python
Fonctions classiques
Ces chiffres sont le résultat d’algorithmes natifs et peu optimisés. Voici le détail des programmes que nous avons utilisés pour comparer les langages :
- Somme d’entiers : la somme des entiers naturels de 1 à 10 000 (= 49 995 000),
- Factorisation d’entiers : décomposition de 62 710 561 en 7 919 × 7 919.
Nous n’avons pas cherché à améliorer particulièrement telle ou telle fonction, mais avons implémenté les instructions de façon simple afin de pouvoir comparer la vitesse d’exécution des commandes standards. Pour plus de détails sur des études similaires.
Il résulte de ces tests que le C++ est environ 10 fois plus rapide que VBA et Python. Dans certains cas (i.e. lorsque le code est optimisé), le gain de vitesse peut s’avérer encore supérieur.
Spécificités
Conclusion
Pour aller plus loin : Afin de pallier le manque de vitesse en Python et de s'éviter les complications techniques liées au C++, il existe des bibliothèques standards interprétées par Python, et qui utilisent des fonctions C++ précompilées et déjà optimisées ! Cela permet d’atteindre une vitesse de calcul en Python aussi importante que celle du C++.
- Cython: C-Extensions for Python : permet d’implémenter du C/C++ en syntaxe Python,
- NumPy : bibliothèque qui permet de faire du traitement de données vectorielles,
- Pandas - Python Data Analysis Library : gestion de tableaux, contrôle de qualité de données, indicateurs graphiques.