Comment choisir entre C++ et Python ?

August 5, 2022

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é.

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 (en. 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 aproprié 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égies (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 [5] :

Streamlit web app

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 :

  1. Somme d’entiers : la somme des entiers naturels de 1 à 10 000 (= 49 995 000),
  2. 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, voir [1], [2] ou [3].

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, cf. [4].

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++.

  • NumPy : bibliothèque qui permet de faire du traitement de données vectorielles,

Liens externes

Visual Studio : IDE et Éditeur de Code pour les Développeurs de Logiciels et les Équipes

Anaconda | The World's Most Popular Data Science Platform

[1] : Python vs C++ Comparison: Compare Python vs C++ Speed and More

[2] : Python vs Excel for Data Analysis

[3] : Excel vs. Python for Data Analysis | Xccelerate

[4] : https://towardsdatascience.com/how-fast-is-c-compared-to-python-978f18f474c7

[5] : Turn An Excel Sheet Into An Interactive Dashboard Using Python (Streamlit)