Python commence à devenir un langage suffisamment complet pour être utilisé à des fins de calculs scientifiques, que ça soit en calcul numérique ou symbolique. Ses forces par rapport aux autres langages de programmation scientifiques sont nombreuses :
- indépendant du système d’exploitation, il fonctionne sur Windows, Mac, Unix, Linux
- basé sur C, il est compatible avec de nombreuses librairies C et Fortran,
- orienté objet, il permet très facilement de factoriser et d’organiser son code en classes, méthodes, fonctions, modules, etc.
- il permet d’unifier autour d’une syntaxe simple et claire la couche analytique (calculs) et la couche applicative (applications desktop/utilisateurs), permettant d’exporter directement des algorithmes de traitement ou de calcul dans des logiciels métiers et d’y ajouter des interfaces graphiques pour des applications standalone,
- complètement ouvert, il est extensible à souhait,
- il est compatible avec le calcul parallèle,
- il permet (sous conditions) d’exporter ses scripts en C pour les compiler,
- plusieurs optimiseurs propriétaires et logiciels d’analyse en éléments sont munis d’une console Python.
Naturellement, ces avantages viennent avec plusieurs défauts :
- la déclaration implicite des types de variables peut parfois poser problème,
- sa structure modulaire le rend plus complexe à l’usage que des ensembles monolithiques comme Matlab : ici il faut aller chercher le bon module pour l’installer sur son ordinateur et penser à l’importer dans chaque script, ce qui implique que tous les modules ne dialoguent pas forcément bien ensemble et que certaines fonctions peuvent être redondantes.
- il reste plus artisanal que des logiciels fermés comme Matlab dédiés 100% au calcul qui intègrent tout un écosystème complet et cohérent dans une interface remplie d’aides (tableur, console, etc.), notamment pour le tracé des graphes.
Librairies scientifiques
Python n’est pas un langage de calcul. Ce sont des modules qui vont l’étendre en ajoutant des fonctions et des types de données propres au calcul numérique ou symbolique (notamment, les matrices). Les modules disponibles sont les suivants :
- pour le calcul formel et la résolution d’équations (équivalent Maple) :
- pour le calcul numérique et matriciel (équivalent Matlab) :
- pour les statistiques et le calcul financier :
- pour le traitement et l’analyse de données (data-mining) :
- pour la thermofluidique :
- pour la mécanique et le calcul en éléments finis :
- pour la modélisation et la simulation (équivalent Simulink) :
- OpenModelica avec interface Python
- pour travailler avec des unités et des quantités physiques :
IDE
Les habitués de Matlab pourront utiliser Python dans Spyder, une interface complète offrant l’autocomplétion, l’aide des fonctions utilisées à la volée, l’auto-import de certains modules, un explorateur de variables, la possibilité d’utiliser des points d’arrêts ainsi que de nombreux débogueurs, des fonctions de mesure du temps d’exécution.
Autrement, Eclipse dispose de son propre module Python, Pydev, peut-être plus adapté aux projets plus importants et moins axé programmation scientifique.
Distributions
L’installation de l’essentiel des paquets scientifiques peut se faire en une opération via les différentes distributions disponibles, la plus connue étant SciPy :