Cython
# Cython

Cython est un langage de programmation et un compilateur qui simplifient l'écriture d'extensions compilées pour Python. La syntaxe du langage est très similaire à Python mais il supporte en plus un sous-ensemble du langage C/C++ (déclarations de variables, appel de fonctions, ...).

Le premier intérêt de Cython est qu'il produit du code nettement plus performant. Dans des programmes qui nécessitent par exemple la manipulation de grands tableaux, le gain peut aller jusqu'à un facteur 100. Par ailleurs, Cython permet d'écrire des interfaces Python à des bibliothèques externes écrites en C ou C++.

Cython est disponible pour la plupart des systèmes d'exploitation.

## Fonctionnement

Le langage Python dès son origine supporte l'écriture de modules écrits en langage C. Cependant, cette procédure est laborieuse et délicate. Le compilateur Cython convertit ses fichiers sources en langage Cython (extension .pyx) vers le langage C ou C++. Dans un deuxième temps, ces fichiers C/C++ sont compilés sous forme de bibliothèques prêtes à être utilisées avec Python.

Cython automatise entre autres :

* la conversion automatique entre types Python et types C ;
* la compatibilité Python 2/Python 3 ;
* la gestion des erreurs.

Le compilateur Cython est lui-même écrit en Python.

## Histoire

Cython est né comme sous-projet du logiciel libre de calcul formel SageMath en tant que fork du langage Pyrex. SageMath est un des logiciels qui utilise le plus de fonctionnalités de Cython.

Les programmes écrits en Cython possèdent l'extension .pyx. Dans sa forme la plus simple, le code source de Cython ressemble exactement au code source de Python. Cependant, alors que les variables, dans Python standard, sont typées dynamiquement ; le typage est facultatif. Ce qui permet d'améliorer les performances et de convertir les boucles Cython en boucles C lorsque cela est possible.

Par exemple :

### Utilisation dans le bloc-notes IPython/Jupyter

Un moyen plus simple de commencer avec Cython consiste à utiliser la ligne de commande IPython (ou via la console python dans le navigateur appelée Jupyter notebook):

ce qui donne une amélioration de 95 fois par rapport à la version en Python pur. Plus de détails sur le sujet dans la page officielle de démarrage rapide.

