Et si nous faisions autrement ? Entre Python et C#

avr. 25, 2023

En tant que Développeur Full-Stack au sein d'Agaetis depuis plusieurs années, mes missions m'ont amené à développer autant en Python qu'en C#.  Que ce soit sur des projets Full python, full C#, ou en mixant les deux. Ce qui est plutôt intéressant, sachant qu'ils font partie des langages les plus appréciés des développeurs.  

Lors d'une mission, l'objectif était de développer un client lourd monoposte permettant de faire tourner différents algorithmes personnalisés (dont des algorithmes génétiques) sur un parc d'ordinateurs Windows en interne, et de le déployer chez des industriels partenaires. Quand on parle de « client lourd », de Windows et d’industrie, la technologie la plus adaptée est C#,  mais quand nous entendons « algorithmes génétiques », le choix se porte clairement sur Python, surtout lorsque l’on prend en compte le fait que l'application sera alimentée en calculs par des doctorants.

Contexte

À l'époque, il existait deux solutions pour marier les deux technologies : IronPython et Docker . IronPython a vite été écarté : la version de Python disponible étant trop ancienne (2.x vs 3.x), elle obligeait à devoir réécrire une partie des algorithmes. Nous sommes donc partis sur Docker. Nous avons malgré tout dû réécrire une partie des algorithmes afin de pouvoir les lancer via une API Rest, mais ce fut juste du déplacement de code ou de la création de fonction.


Cette approche est simple et efficace, le seul bémol est que l'installation est complexifiée. Il faut installer/configurer Docker, builder l'image docker (accès à internet requis au moins pour cette phase) et définir des espaces d'échanges (certains algorithmes fournissent des fichiers de sortie). Même si ce n'était pas ce que nous avions en tête au départ, ça fonctionne, avec beaucoup de documentation pour l'installation.

Et aujourd'hui ?

Quand j'ai d u temps libre (temps de veille, baisse de régime d'un projet, inter-contrat), j'apprécie de me repencher sur d'anciens projets me permettant  de me poser la question : « Ferais-je différemment aujourd'hui ? ». Heureusement, la plupart du temps la réponse est oui, mais par moment la réponse est par la négative, souvent, du fait du contexte projet.


Ici, la réponse, à ce projet en particulier, est « peut-être ». Quand nous parlons algorithmes ou data science, nous pensons forcément que Python est incontournable, et ce à juste titre.  J’ai donc dû  regarder si du côté de Python il existait quelque chose de nouveau, permettant de me passer du C#, ou au contraire, de me passer de Python.


En ce qui concerne Python, rien n'a vraiment changé en termes d'interface utilisateur. Les bibliothèques graphiques leaders étant toujours Qt et Tkinter, cela implique de devoir installer une nouvelle fois des bibliothèques supplémentaires, et donc un risque de complexification de l’installation.


Et en ce qui concerne le C# ? Grâce à l'essor du moteur de jeu
Unity , différentes librairies .Net ont émergé. Malheureusement, elles sont surtout orientées vers le Machine Learning et ne permettent pas de retranscrire la totalité des calculs de l'application. 


En continuant les recherches, je suis tombé sur la stack
SciSharp , portage de différents outils Python en C# et F# (pour certains). Au programme : NumSharp (NumPy), TensorFlow.Net, Keras.Net, pour ne citer que les plus matures — d'autres comme Torch.Net (PyTorch), Gym.Net, Pandas.Net, SharpCV (portage d'OpenCV) sont encore en cours de développement.


La stack cible le .Net Standard Framework, et permet de faire tourner ces bibliothèques sur un projet WPF pointant le .Net framework 4.8, ce qui pourrait être notre cas, si nous gardions en tête le WPF (même si MAUI nous fait de l'œil). Cerise sur le gâteau, les bibliothèques gardent à l'identique le nom et les paramètres des fonctions.

Exemple avec NumSharp

Exemple avec TensorFlow.Net

Conclusion

Il existe bien évidemment d'autres possibilités, comme pythonnet , qui permet d'exécuter du code python sous .Net et inversement. Cette bibliothèque a l'avantage d'être à la base de plusieurs projets de portage entre Python et .Net ( liste des projets non exhaustive), dont Numpy.Net de SciSharp.


Dans le cas du projet étudié et pour les algorithmes que nous avions eu à retranscrire, NumSharp ou Pandas.Net suffiraient amplement (même si le portage n'est pas fini pour Pandas) pour livrer une application tout-en-un en minimisant le processus d'installation. 


Et vous, pensez-vous comme moi que de revenir de temps en temps sur d'anciens projets rentre dans le processus d'amélioration continue ? Que cela permet de se challenger et donc de se remettre en question, que ce soit tant au niveau pratique que théorique ?

Ressources Agaetis

par David Walter 16 févr., 2024
OpenAI, a récemment dévoilé SORA, un outil de génération de vidéo. SORA monte encore une marche, offrant des capacités de génération de vidéos réalistes. Cet article explore les caractéristiques clés de SORA, son impact potentiel sur diverses industries, les points de réflexions et l'impact pour l'avenir de la création de contenu. Qu'est-ce que SORA ? SORA est une interface avancée conçue par OpenAI qui permet de générer des séquences vidéo à partir de descriptions textuelles simples. Utilisant des techniques de pointe en matière d'intelligence artificielle et d'apprentissage profond, SORA est capable de comprendre des commandes complexes et de les traduire en contenus visuels impressionnants. Une qualité de génération inégalée La capacité de SORA à générer des vidéos époustouflantes souligne un tournant dans le domaine de la production vidéo, où la qualité et la créativité ne sont plus entravées par des contraintes techniques ou financières. Cette avancée s'inscrit dans un contexte plus large où l'IA transforme profondément les industries créatives, offrant des outils puissants pour la transcription, le doublage, la création d'avatars générés par IA, et même la suppression de fonds vidéo, rendant ces processus plus accessibles et flexibles​​​​​​. Des outils comme Descript et Adobe Premiere Pro intègrent des fonctionnalités AI pour améliorer le processus d'édition vidéo, depuis la rotation des yeux jusqu'à la génération de transcriptions et sous-titres​​. De même, la comparaison entre DALL-E 3 et Midjourney montre comment l'IA peut capturer des détails et des ambiances spécifiques dans les images, un principe également applicable à la vidéo​​. La révolution du streaming vidéo illustre comment l'adaptation numérique bouleverse les modèles économiques traditionnels, offrant une perspective sur la manière dont les technologies génératives pourraient remodeler le paysage médiatique​​. L'impact de ces technologies dépasse la simple création de contenu ; elles remodèlent également notre compréhension de la créativité et ouvrent de nouvelles voies pour l'expression artistique et la communication. Avec des outils comme SORA, la barrière entre l'idée et sa réalisation se réduit, permettant à un plus grand nombre de personnes de donner vie à leurs visions créatives sans les contraintes traditionnelles de la production vidéo. Cet élan vers une qualité de génération inégalée par l'IA soulève des questions importantes sur l'avenir du contenu créatif et la manière dont nous valorisons l'interaction entre l'humain et la technologie dans le processus créatif. Alors que nous explorons ces nouvelles frontières, il est crucial de rester attentifs aux implications éthiques et aux défis que ces technologies posent, tout en reconnaissant leur potentiel pour enrichir notre monde visuel et narratif.
Airflow PostgreSQL MongoDB
par Ikram Zouaoui 07 févr., 2024
Integration de technologies pour optimiser les flux de travail : L'article met en lumière une approche combinée utilisant Airflow, PostgreSQL, et MongoDB pour améliorer l'efficacité des flux de travail liés aux données.
Show More
Share by: