fabernovel loader

Les raisons pour lesquelles utiliser Jupyter

ARCHITECTURE
FRONT
QUALITÉ
fabernovel loader

Cette année, le projet Jupyter a été le lauréat du prix ACM Software System, qui récompense les logiciels ayant eu une influence durable, dont les lauréats précédents étaient “le web”, Unix, Java, LLVM, GCC, etc. L’ influence de Jupyter s’est principalement manifestée dans le domaine de la data science, en tant que nouveau format de prototypage et de diffusion.

À son coeur, Jupyter est un REPL : Read-Eval-Print Loop (comme peuvent l’être les prompts de langages, comme irb ou python, ou SQLite). Ainsi, vous tapez une commande, puis le programme l’interprète, vous affiche le résultat et vous demande la commande suivante. Jusque là, rien de bien révolutionnaire me direz-vous… Mais les avantages de Jupyter se situent à deux niveaux :

  • le format des réponses peut être beaucoup plus riche que ce que l’on a l’habitude de voir dans un terminal. Par exemple, un graphe interactif est monnaie courante.
  • l’ensemble du document (appelé “notebook”), avec ses inputs et outputs, constitue un seul fichier, qui peut être partagé et peut servir de base à une tierce personne. Elle pourra repartir du même code et le re-exécuter en intégrant ses propres modifications. Par ailleurs, Jupyter se charge de spécifier le format de ce document de notebook avec l’extension de fichier : .ipynb.

Ce document peut être converti en page HTML par des outils, comme : https://nbviewer.jupyter.org/

Vous pouvez trouver ici un exemple de rendu (non interactif) mettant en avant des visualisations riches.

Pour fonctionner, Jupyter couvre plusieurs composants :

  • une web-app : c’est ce que voit l’utilisateur. Par défaut, le notebook est ouvert dans un navigateur et c’est là où l’utilisateur écrira son code et verra ses résultats ;
  • un web-server : l’exécution du code ne se fait pas directement dans le navigateur. Les commandes sont envoyées à un web-server, qui se chargera de déléguer l’exécution avant de renvoyer le résultat à la web-app ;
  • un “execution environment”, appelé “kernel” dans l’univers de Jupyter. Le kernel est là où le code est exécuté et l’utilisateur peut choisir des kernels différents selon ses usages. Par exemple, au lieu d’utiliser les kernels par défaut qui couvrent Python 2 et 3, un utilisateur peut installer un nouveau kernel pour développer en Kotlin ou pour avoir des fonctionnalités supplémentaires (comme une meilleure auto-complétion)

Si vous souhaitez jouer avec Jupyter, Google propose une version cloud appelée Colaboratory qui ne nécessite donc pas d’installation.

En conclusion, Jupyter permet de couvrir deux cas d’usage très efficacement :

  • le prototypage. Jupyter permet de garder un historique lisible, de meilleurs outputs, l’intégration de librairies tierces, etc. L’expérimentation est ensuite sauvegardée dans un document qu’il sera possible de reprendre en l’état plus tard ;
  • le partage. Jupyter a rendu beaucoup plus simple et lisible les échanges de code dans le domaine de la data science. Le code et ses résultats sont visibles directement, ce qui a des effets secondaires positifs : les gens s’attendent à voir les résultats sous ce format, le code est aussi plus souvent partagé qu’avant.

Il faut toutefois être vigilant quant aux limites de Jupyter. Par exemple, en cas d’écriture d’une quantité significative de code, les outils traditionnels sont définitivement plus adaptés. Son utilisation demande par ailleurs une certaine rigueur : comme il est facile de revenir en arrière sur du code déjà exécuté, cela peut transformer le notebook en un document où les inputs ne sont plus dans le bon ordre et où les outputs ne correspondent plus à l’input associé.

Intéressé(e) par nos partages d'insights ?

Echangeons
à lire
EVENTS
Développeurs et Designers, qu'attendre du WebVR ?

Le 19 avril se tenait le premier Meetup parisien dédié au WebVR. Cette rencontre avait pour but d'initier curieux, développeurs et designers aux dernières technologies du webVR (A- ...

API
MOBILE
GO PWA ?

La graine de l’API du Service Worker semée il y a 2 ans est en train de germer. Tout le paysage web et applicatif commence à être impacté par les nouvelles possibilités regroupées ...