Sondage : quels sont les meilleurs langages de programmation pour l'IA ?
Quels sont vos critères ?
De nombreux développeurs se lancent progressivement dans le développement d'applications pour l'IA. D'un programme sophistiqué à un autre programme sophistiqué, on peut repérer en arrière plan l'utilisation répétée des langages de programmation tels que : Python, Java (et ses frères Scala, Kotlin, Clojure), C/C++, JavaScript ou le langage R. Au-delà de ces 5 langages de programmation populaires pour l'IA, s'ajoutent d'autres langages comme Lua, Julia, et Swift.
Python
Il existe suffisamment de bibliothèques disponibles en Python. NumPy pour les opérations de tenseurs. Pandas qui rend flexible l’importation des données de R à Python. Pour le traitement du langage naturel (NLP en anglais), les bibliothèques NLTK et SpaCy sont disponibles. Pour l'apprentissage automatique, il y a Scikit-learn. Et quand il s'agit de l'apprentissage profond, toutes les bibliothèques actuelles (TensorFlow, PyTorch, Chainer, Apache MXNet, Theano, etc.) sont effectivement des projets Python-first.
Bref, la communauté Python travaille d’arrache-pied pour rendre l’utilisabilité du langage très flexible avec des bibliothèques bien fournies.
Java et ses frères
La famille de langages JVM (Java, Scala, Kotlin, Clojure, etc.) est aussi un excellent choix pour le développement d'applications IA. De nombreuses bibliothèques disponibles pour le traitement du langage naturel (CoreNLP), des opérations de tenseurs (ND4J) ou d'une pile d'apprentissage profond (DL4J : DeepLearning4J) accélérée par le processeur graphique. De plus, les développeurs bénéficient d'un accès facile aux grandes plateformes de données comme Apache Spark et Apache Hadoop.
Scala
Scala est récemment devenu un autre langage important pour l'analyse rapide des données. Il a gagné en popularité principalement en raison de la montée de Spark, un grand moteur de traitement de données de choix, qui est écrit en Scala et fournit ainsi une API native à Scala. Breeze est connue comme la principale bibliothèque pour Scala. Breeze fournit des manipulations rapides et efficaces avec des tableaux de données, et permet la mise en œuvre de nombreuses autres opérations, y compris les opérations matricielles et vectorielles, les probabilités et fonctions statistiques, l'optimisation, les opérations de traitement du signal, etc.
C/C++
Le choix du C/C ++ est peu probable lors du développement d'une application IA. Mais pour ceux qui travaillent dans un environnement intégré, et qu'ils ne peuvent pas payer le surcoût d'une machine virtuelle Java ou d'un interpréteur Python, C/C ++ est la solution. Lorsqu’on a besoin d'exploiter les dernières performances du système, il faut retourner dans le monde (terrifiant pour certains) des pointeurs. Mais, le C/C ++ moderne est agréable, car offre de multiples approches. Les développeurs peuvent soit plonger au bas de la pile, en utilisant des bibliothèques comme CUDA pour écrire leur programme qui s'exécute directement sur le GPU, ou ils peuvent utiliser TensorFlow ou Caffe pour accéder à des API de haut niveau flexibles.
JavaScript
Google avait publié TensorFlow.js, une bibliothèque accélérée par WebGL qui permet de former et d'exécuter des modèles d'apprentissage automatique dans le navigateur Web. Il inclut également l'API Keras et la possibilité de charger et d'utiliser des modèles qui ont été formés dans TensorFlow standard. Bien que JavaScript n'a pas actuellement le même accès aux bibliothèques d'apprentissage automatique que les autres langages cités plus haut, les développeurs ajouteront bientôt des réseaux de neurones à leurs pages Web avec presque la même aisance que s'ils ajoutaient une propriété CSS.
TensorFlow.js est encore à ses débuts. Pour l'instant, cela fonctionne dans le navigateur, mais pas dans Node.js. Il n'implémente pas encore l'API TensorFlow complète.
R
R est le langage que les scientifiques de données aiment. Cependant, d'autres programmeurs trouvent R un peu confus quand ils le rencontrent pour la première fois, en raison de son approche centrée sur les données. Pour un groupe dédié de développeurs R, il peut être judicieux d'utiliser les intégrations avec TensorFlow, Keras ou H2O pour la recherche, le prototypage et l'expérimentation.
Lua
Il y a quelques années, Lua montait dans le monde de l'intelligence artificielle. Avec le framework Torch, Lua était l'un des langages les plus populaires pour le développement de l'apprentissage profond. Et il existe toujours beaucoup de travail d'apprentissage profond sur GitHub qui définissent les modèles avec Lua/Torch. Avec l'arrivée de frameworks tels que TensorFlow et PyTorch, l'utilisation de Lua a considérablement diminué.
Julia
Julia est un langage de programmation de haut niveau, performant et dynamique pour le calcul scientifique, avec une syntaxe familière aux utilisateurs d'autres environnements de développement similaires (MATLAB, R, Scilab, Python, etc.). Ce qui en fait un bon choix dans le monde mathématique de l'IA. Bien que ce ne soit pas très populaire en tant que choix de langue en ce moment. Les wrappers comme TensorFlow.jl et Mocha (fortement influencés par Caffe) offrent un bon support d'apprentissage profond.
Swift
Chris Lattner, créateur du compilateur LLVM et du langage de programmation Swift, a annoncé Swift pour TensorFlow. Swift pour TensorFlow permet d'importer des bibliothèques Python telles que NumPy et de les utiliser dans le code Swift presque comme avec n'importe quelle autre bibliothèque.
MATLAB
MATLAB rend les parties difficiles de l'apprentissage automatique faciles avec des applications « pointer-cliquer » pour former et comparer des modèles, des techniques avancées de traitement du signal et d'extraction de caractéristiques, sélection des fonctionnalités pour optimiser les performances d'un modèle, la possibilité d'utiliser le même code pour étendre le traitement aux big data et aux clusters, etc.
Et vous ?
Qu'en pensez-vous ?
Quels sont les langages de programmation que vous estimez meilleurs pour l'IA ? Pourquoi ?
Voir aussi :
Quels sont les meilleurs langages de programmation en 2017 ? Et pourquoi ? Java, C# et C++ seraient-ils encore les préférés des développeurs ?
Programmation : découvrez les sept raisons pour lesquelles vous devez apprendre le langage Python, selon myTectra
Quels langages utilisez-vous pour le développement de systèmes embarqués ?
Partager