UKOnline

Pourquoi SciPy ?

Pourquoi l'écosystème SciPy a-t-il autant de succès ? L'une des raisons est sans doute le fait qu'il est construit sur base du langage de programmation Python. Ce dernier est aujourd'hui un acteur incontournable dans les langages de programmation, de par sa simplicité, sa facilité d'apprentissage, sa grande flexibilité et portabilité, sa lisibilité, etc.

En plus d'être supporté sur les systèmes d'exploitation majeurs (Windows, Linux et macOS), l'environnement de programmation Python permet d'exécuter du code en mode interactif, via un interpréteur de commandes, ou en mode script. Il vous est donc possible de tester rapidement SciPy avec une session interactive, ou d'écrire un programme complet, exécuté de manière autonome.

Une autre raison est qu'un programme écrit en Python peut être très efficace et rapide de par sa possibilité de s'interfacer avec du code de plus bas niveau écrit en C, grâce à la librairie Cython. L'écosystème SciPy en profite évidemment en faisant appel, par exemple, à FFTW, une librairie C pour calculer des transformées de Fourier discrètes. Cela lui permet de rivaliser avec des solutions dédiées de calcul numérique, et d'interagir avec d'autres librairies efficaces, déjà existantes.

La figure 2 montre une vue générale des couches logicielles qui sont sollicitées lorsque l'on développe avec l'écosystème SciPy. L'utilisateur peut directement utiliser n'importe laquelle des trois couches supérieures. De haut en bas, on retrouve successivement l'environnement de développement (tel que IPython ou Spyder, par exemple) qui permet d'exploiter les librairies de l'écosystème SciPy grâce au langage de programmation Python. Au plus bas niveau, on retrouve des librairies systèmes, souvent écrites en C, offrant de bien meilleures performances.

Couches logicielles d'exécution
L'exécution d'un programme utilisant l'écosystème SciPy sollicite différentes couches logicielles, les trois supérieures étant celles avec lesquelles l'utilisateur peut décider d'interagir directement.

Un autre intérêt de SciPy est qu'il s'agit d'une librairie Python, et que cela permet donc d'écrire un programme combinant des calculs numériques avec d'autres traitements plus généraux possibles en Python, comme la manipulation de fichiers, les connexions réseau, la création d'une interface graphique, etc.

Le langage Python est également un langage de plus haut niveau, permettant à l'utilisateur de se concentrer sur ce qu'il veut faire sans se soucier de détails de bas niveau comme la gestion de la mémoire, par exemple. La figure 3 compare le développement à l'aide d'un langage de programmation de bas niveau et de haut niveau. La première observation que l'on peut faire est que, dans les deux cas, en consacrant plus de temps au développement du programme, ce dernier prend moins de temps d'exécution pour trouver une réponse au problème. Le deuxième constat est qu'il faut moins de temps pour avoir une première solution exécutable, si l'on utilise un langage de programmation de haut niveau.

On peut également observer qu'avec le temps nécessaire pour obtenir une première solution exécutable avec un langage de bas niveau, on peut développer une solution avec un langage de haut niveau qui prend moins de temps d'exécution pour résoudre le problème. Enfin, on voit aussi que si l'on consacre suffisamment de temps de développement, de meilleurs temps d'exécution sont obtenus avec un langage de bas niveau. L'écosystème SciPy étant en Python, mais en faisant appel à des librairies C, on se retrouve dans un compromis situé entre les deux.

Comparaison programmation bas et haut niveau
Selon que l'on veuille vite obtenir une solution ou minimiser le temps d'exécution, on va préférer un langage de programmation de haut ou de bas niveau.

Enfin, un dernier avantage de l'écosystème SciPy, face à d'autres choix, est le fait que toutes les librairies qui le constituent sont open source. On peut ainsi librement examiner le code source, voire le modifier et ainsi apporter des contributions pour la communauté. Cette dernière est par ailleurs très large et vous n'aurez aucun mal à trouver de la documentation et des ressources de qualité sur l'écosystème SciPy.