Ces programmes ont accès à une grande partie de l'écosystème Python existant et peuvent interagir directement avec le modèle d'objet de document (DOM) du navigateur. En outre, il a fait des démonstrations assez révélatrices dans le cadre de son exposé.
Wang a commencé par se présenter et présenter la société qu'il dirige, Anaconda, qu'il a cofondée avec Travis Oliphant il y a dix ans. Oliphant est le créateur de NumPy et l'un des fondateurs de SciPy, qui sont tous deux des pierres angulaires de l'écosystème de calcul scientifique Python. Anaconda est une distribution des langages de programmation Python et R pour le calcul scientifique (science des données, applications d'apprentissage automatique, traitement des données à grande échelle, analyse prédictive, etc.), qui vise à simplifier la gestion et le déploiement des paquets.
La distribution comprend des paquets de science des données adaptés à Windows, Linux et macOS. Elle est développée et maintenue par Anaconda, Inc. qui a été fondée par Peter Wang et Travis Oliphant en 2012. En tant que produit d'Anaconda Inc., elle est également connue sous le nom d'Anaconda Distribution ou d'Anaconda Individual Edition, tandis que les autres produits de la société sont Anaconda Team Edition et Anaconda Enterprise Edition, qui sont tous deux payants.
Plusieurs raisons ont poussé Anaconda et Oliphant à concentrer leurs efforts sur Python, notamment le fait que ce langage est accessible, même pour ceux qui n'ont pas de formation en informatique. Un autre point en sa faveur est que la communauté Python est généralement accueillante et agréable à travailler. Il s'agit là d'un « point très important si l'on veut continuer à élargir la base d'utilisateurs ».
Anaconda a créé un certain nombre d'outils différents qui sont largement utilisés dans la communauté, et a également fondé l'association à but non lucratif NumFOCUS et les conférences PyData.
Mais il y a un autre aspect du langage qui le rend si désirable de son point de vue : il peut être étendu avec des extensions binaires qui utilisent une API écrite en C, mais accessible depuis d'autres langages. Wang compare Python à « une Honda Civic avec des boulons de montage pour un moteur de distorsion ». Ainsi, le langage peut être appris par des enfants qui peuvent ensuite ouvrir le coffre « et boulonner des nacelles de distorsion » qui permettent au code de fonctionner plus rapidement que le C ou le C++ dans certains cas, a déclaré Wang.
Cet aspect est parfois négligé, mais il signifie que Python peut être utilisé d'une manière que d'autres langages similaires ne peuvent pas. « Ce n'est pas seulement comme Node, ce n'est pas seulement une alternative à Ruby ». La raison pour laquelle Python a été récupéré par les entreprises de Wall Street il y a 10 ou 15 ans était cette capacité de distorsion, a-t-il dit.
Ce qui fait défaut
S’il est vrai qu’Anaconda a pour vocation de fournir une distribution Python, il n’en ait pas moins vrai que l'installation de tout ce qui est nécessaire à Python est trop difficile. Il existe un nombre considérable de paquets sur le Python Package Index (PyPI), mais il est difficile de les faire fonctionner ensemble. 20 % des programmeurs Python auraient une mauvaise expérience du langage. Il existe un grand nombre d'outils différents pour aider à résoudre ce problème, mais ils sont tous à environ 80 %, a-t-il dit, ce qui signifie que les gens ont une mauvaise expérience dans 20 % des cas, ce qui n'est "pas génial".
Il est étrange que, pour le langage le plus populaire au monde, comme le serait Python, il soit difficile d'écrire et de distribuer des applications avec une interface utilisateur. Par exemple, vous ne pouvez pas écrire d'applications iOS avec Python. « Vous ne pouvez pas créer une application pour Windows, le bureau d'entreprise le plus populaire, avec une interface utilisateur ; même si vous utilisez un frontal Web, vous devez écrire JavaScript, CSS et HTML », a déclaré Wang.
Cependant, les conséquences de ces deux points, à savoir les difficultés liées à la compilation et à la création d'interfaces utilisateur, rendent difficile le partage de son travail avec d'autres. À ceux qui considèrent Docker comme une solution à ce problème, Wang répond que lorsque vous faites une application avec Docker, vous « emballez un disque dur et l'envoyez à quelqu'un ». Cela « ne peut pas être notre façon d'amener des millions de personnes à utiliser ce matériel ».
Dans une large mesure, Python est victime de son propre succès. C'est un excellent langage de liaison, mais cela signifie qu'il s'est lié à toutes ces choses. Une grande partie de ce que nous faisons en informatique est liée à des idées et à des architectures des années 1970 et 1980, a-t-il dit, en commençant par le langage C et le modèle de processus Unix ; cela inclut également des choses comme les chaînes d'outils et les protocoles d'interconnexion comme TCP/IP. Les bases du langage Python proprement dit peuvent être enseignées à n'importe qui en un week-end, a-t-il dit, mais il faut beaucoup plus d'efforts pour les amener au point où ils peuvent créer un exécutable pour Windows ou une application iOS pour un iPad. « Pouvons-nous libérer Python de tout cela ? »
Python et WebAssembly
Le navigateur Web a clairement gagné la guerre des systèmes d'exploitation, a déclaré Wang. Il ne sait pas si 2022 sera l'année du bureau Linux, (ce ne sera pas le cas) mais il sait qu'il y aura beaucoup de navigateurs sur les ordinateurs de bureau. JavaScript est le roi de certaines enquêtes sur la popularité des languages, car c'est le langage natif du navigateur. Donc, si nous voulons passer dans ce domaine, a-t-il dit, WebAssembly (ou Wasm) est clairement la bonne réponse.
WebAssembly « change fondamentalement la donne ». Il s'agit d'un jeu d'instructions de CPU virtuel qui est récemment devenu une norme du W3C ; il dispose d'un espace d'adressage de 32 bits et peut effectuer des opérations arithmétiques de 64 bits. Il existe un outil de compilation, Emscripten, qui peut être utilisé pour compiler la plupart des codes C et C++ en WebAssembly, qui peut ensuite être exécuté dans le navigateur. Selon Wang, WebAssembly est bien supporté par les navigateurs, y compris les navigateurs mobiles.
CPython est, bien sûr, un programme C et une grande partie de la pile numérique Python est écrite en C ou C++. Ces dernières années, des projets comme et JupyterLite ont compilé de grandes parties de la pile scientifique et numérique Python pour cibler WebAssembly.
En se rendant sur le site de Pyodide, il est possible d’obtenir une boucle de lecture-évaluation-impression (REPL) Python dans son navigateur. À partir de ces « trois petits crochets d'angle sympathiques », il est possible d’importer NumPy et pandas. Depuis le site JupyterLite, il est possible d’obtenir un notebook dans le navigateur en exécutant JupyterLab sur le système local.
Christian Heimes, développeur principal de Python, a donné des conférences et fait beaucoup de travail pour que CPython fonctionne avec WebAssembly. Il s'agira bientôt d'une plateforme supportée de niveau 2 pour CPython, a déclaré Wang. WebAssembly fournit simplement une autre architecture informatique, au-delà de x86, Arm et autres, que le projet CPython peut cibler.
PyScript
Wang et d'autres membres d'Anaconda ont examiné le travail effectué et ont réfléchi aux moyens de le rendre plus accessible à « beaucoup plus de gens ». À cette fin, Wang a annoncé PyScript, mais il l'a fait en codant en direct une démo "hello world" depuis la scène de la conférence. C'était sa première conférence PyCon, « peut-être ma dernière », a-t-il dit en riant, alors qu'il tapait un court fichier HTML qui chargeait un fichier pyscript.js de pyscript.net dans une balise.
Code : | Sélectionner tout |
1 2 3 | <py-script> print("Hello PyCon 2022!") </py-script> |
Il a ensuite double-cliqué sur le fichier et le message d'accueil est apparu dans un onglet du navigateur ; qui a été accueilli par une salve d'applaudissements. Mais tout cela n'est que du HTML, a-t-il dit, alors il a entouré le code ci-dessus avec une balise <blink> et a rechargé. Ces jours-ci, bien sûr, la balise <blink> a été supprimée du HTML, peut-être malheureusement ; « maintenant je dois expliquer aux enfants qu'il n'y a pas de balise <blink> ».
Il a donc ajouté une fonctionnalité de clignotement au code PyScript et a démontré quelques autres choses. Il a créé un <div> avec un nom, qu'il a ensuite ciblé pour écrire la chaîne en accédant au DOM pour récupérer l'objet pour le <div> ; il a également utilisé le module asyncio pour temporiser pendant une seconde, puis a effacé le <div> et a mis le tout dans une boucle.
PyScript est donc un « framework pour créer des applications Python riches dans le navigateur ». Il permet d'imbriquer Python et HTML, fournit un accès complet au DOM et donne au code l'accès aux bibliothèques JavaScript, dans les deux sens. Le code Python peut appeler JavaScript ou être appelé par JavaScript. Ainsi, toute la logique et le code de l'application peuvent se trouver dans un seul langage, dans le navigateur, aucun serveur Web n'est nécessaire. Il est possible de mettre le fichier HTML sur une clé USB et le donner à un ami. Il est nécessaire de télécharger PyScript lui-même, mais cela se fait à partir du fichier HTML à l'aide de la balise <script>.
PyScript n'est pas une sorte de fork de CPython, c'est le même code que celui que les participants exécutaient sur leurs ordinateurs portables et leurs serveurs, a dit Wang, simplement compilé pour Wasm. Il inclut tout le travail que Pyodide a fait pour que les principaux paquets numériques, scientifiques et de big data fonctionnent également pour Wasm. PyScript est un « framework d'opinion » qui fournit une interface de fonction étrangère (FFI) pour parler à JavaScript et au DOM ; Python a déjà intégré C, C++ et Fortran, donc JavaScript peut également être ajouté à la liste. « C'est vraiment l'informatique sans serveur ».
Source : LWN
Et vous ?
Quel est votre avis sur PyScript ?
Pensez-vous que PyScript peut être aussi bon que JavaScript pour l'exécution dans un navigateur web ?
Voir aussi :
La version 3.2 du framework Django est disponible, avec la découverte automatique d'AppConfig, elle apporte de nouveaux décorateurs pour le module d'administration
Python 3.11 améliorera l'emplacement des erreurs dans les tracebacks et apporte de nouvelles fonctionnalités
Python 3.11 gagnera en performance au prix d'un peu plus de mémoire, les gains de vitesse semblent se situer entre 10 % et 60 %
La version 5.17 du noyau Linux est disponible, elle apporte des corrections de sécurité très importantes et une amélioration majeure au générateur de nombres aléatoires
La version 1.15 du langage de programmation Go sortira bientôt, avec des améliorations dans l'outillage, la performance du compilateur et la bibliothèque standard