Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sondage : quels sont les meilleurs langages de programmation pour l'IA ?
Quels sont vos critères ?

Le , par Blondelle Mélina

218PARTAGES

15  2 
Quels sont les meilleurs langages de programmation pour l'IA ?
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 ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de qvignaud
Membre habitué https://www.developpez.com
Le 09/07/2018 à 14:41
Citation Envoyé par Blondelle Mélina Voir le message
Le choix du C/C ++ est peu probable lors du développement d'une application IA.
Cette est remarque très étonnante. Je travaille dans la recherche en apprentissage automatique, et il serait bien difficile de se passer de ce tandem.

Pour l'évaluation des performances (en termes de résultats d'apprentissage), l'utilisation de Python pour effectuer les liaisons entre systèmes qui sont eux développés en C++ est courante, ou encore l'usage de Java sur toute la ligne. Mais une fois les bons vecteurs d'apprentissage en entrée et l'algorithme le plus apte déterminés, on passe très généralement à une implémentation C/C++ intégrale, surtout pour des questions de performance (d'autres langages compilables en code machine commencent aussi à montrer le bout de leur nez, tel que Go).
Le problème est aussi de pouvoir exploiter les performances des calculateurs, et là à part C/C++ et Fortran à renforts de MPI et OpenMP, il n'y a pas grand chose de disponible.
9  0 
Avatar de gallima
Membre actif https://www.developpez.com
Le 09/07/2018 à 12:01
L'IA c'est avant tout beaucoup beaucoup d'intégration, chez nous le langage de glue (java) c'est imposé comme premier choix, celui ci à des performances correcte et une large (la plus large) gamme de bibliothèques sur tous les sujets.

Ensuite viennent les traditionnels Lisp et Prolog, en gros dès qu'il y a un besoin de réflexivité avec un gros besoin de puissance de raisonnement ils apparaissent, trop de bibliothèques incontournables en Lisp, et Prolog dispose des deux meilleurs bibliothèques de CSP (Eclipse Prolog et Swipl clpfd) -> incontournable.

Quand on en vient au deeplearning, python(2.7) est encore la référence, même si les libs sont passés en python(3) récemment(TensorFlow, Keras), malgré tout Java(nd4j, dl4j, sparkml,...) et C++(Cudnn, Caffee, etc...) ont de beaux jours devant eux. R & Matlab restant confinés à des taches 'non intégré' soit pour de la prestation (interne ou non) d'analyses pour des articles de recherche.

Sinon en général je vois du C & C++ avec parfois des SML (Ocaml); mention spécial pour Rust qui débarque tout juste.

Quelqu'un à dit Excel ? Oui pour l'analyse des erreurs et la visualisation.

Je ne vois même comment on peut faire une chronique sur l'IA en parlant de swift & javascript sans parler de Lisp et Prolog.... à croire que pour certains l'IA a commencé il y a 5 ans.
5  0 
Avatar de Anselme45
Membre extrêmement actif https://www.developpez.com
Le 09/07/2018 à 12:21
Quels sont les meilleurs langages de programmation pour l'IA ?

La vraie question serait plutôt de savoir qui fait vraiment du développement d'applications IA ?

En réalité, je pense que les intervenants du site developpez.com qui font de la vraie IA se comptent sur les doigts d'une main!

Pour information:

1. Automatiser un processus ou développez un algorithme d'apprentissage, ce n'est pas de l'IA

2. L'IA n'est actuellement qu'un effet de mode qui a d'ailleurs pris longtemps à prendre, on en parlait déjà dans les années 70!

Petite définition de l'IA du Dictionnaire de l'informatique (datant de 1975!) de André Le Garff:

Le concept d’intelligence artificielle forte fait référence à une machine capable non seulement de produire un comportement intelligent, mais d’éprouver une impression d'une réelle conscience de soi, de « vrais sentiments » (quoi qu’on puisse mettre derrière ces mots), et « une compréhension de ses propres raisonnements »
A la lecture de la définition de l'IA ci-dessus, je corrige... Il n'y a pas un seul participant de ce sondage à faire du développement en IA

PS: Vu que l'on affuble à n'importe quel projet le titre de "IA", effectivement pourquoi ne pas mentionner comme langage Excel, voir même le nuage de fumée des amérindiens ou les concerts de "tam-tam" si présents dans les films hollywoodiens des années 30 de la série Tarzan...
6  1 
Avatar de qvignaud
Membre habitué https://www.developpez.com
Le 09/07/2018 à 15:48
Citation Envoyé par Matthieu76 Voir le message
Oui, mais un bon algorithme prévaudra toujours par rapport au performance.
Loin de là !
Souvent plusieurs algorithmes engendrent des résultats similaires, et dès lors on prend le moins gourmand en ressources temps/mémoire.

Et encore, il arrive qu'un algorithme donne des f-mesures inférieures à un autre, mais qu'on le prenne quand même car suffisant pour ce que l'on veut en faire derrière, au vu des ressources réclamées par celui ayant les meilleurs scores. Pour beaucoup de situations les réseaux de neurones sont une usine à gaz comparés à d'autres algorithmes, beaucoup plus efficients.
5  0 
Avatar de Matthieu76
Membre éclairé https://www.developpez.com
Le 09/07/2018 à 11:39
Personnellement je développe ma propre librairie de réseaux de neurones en C++ mais si c'était à refaire j'utiliserais TensorFlow (en Python), ça m'aurais pris 100 fois moins de temps.
D'ailleurs si des personnes veulent m'aider dans mon projet, vous êtes les bienvenus.
4  0 
Avatar de gallima
Membre actif https://www.developpez.com
Le 09/07/2018 à 15:46
Citation Envoyé par Matthieu76 Voir le message
Oui, mais un bon algorithme prévaudra toujours par rapport au performance. Rappelez-vous que l'on a envoyer un homme sur la lune avec la puissance de calcul d'un calculatrice.
Niveau algorithmique c'est vrai qu'on peut presque toujours faire mieux. Mais il arrive un moment où soit l'on dispose de preuves d’optimalités soit l'on montre que le temps de dev coûte beaucoup plus chère que des machines sur-boosté. Le modèle commercial des instances C5 chez Amazon est directement dans cet axe.

Aller sur la lune c'était simple à coté des problèmes d'IA : tout les calculs de trajectoires pouvaient être fait à la main depuis la Terre longtemps à l'avance; et comme l'a montré la mission Apollo 13, des corrections à la main était faisable.

Citation Envoyé par Matthieu76 Voir le message
De plus TensorFlow permet d'utiliser la puissance du GPU juste avec du Python sans aucune ligne venant d'un autre language.
Sans Cuda pas de TensorFlow rapide; le centre de la performance de cette lib est en Nvcc / C++, souvent la lib C++ dans tensorflow est pré-encapsulé pour ne pas effrayer les dev pythons, Ne parlons pas de numpy qui est elle aussi optimisé dans des langages low-level. La partie algorithme en deeplearning est rapidement dépassé par les besoins empiriques/expérimentaux pour trouver des modèles qui fonctionnent. La performance brute est indispensable et c'est elle qui a rendu possible le buzz actuel autour de l'IA.

Aujourd’hui les systèmes de deep-learning consomment beaucoup plus de puissance de calcul pendant les développement que pendant l'exploitation.
4  0 
Avatar de gallima
Membre actif https://www.developpez.com
Le 09/07/2018 à 14:55
Citation Envoyé par qvignaud Voir le message

Le problème est aussi de pouvoir exploiter les performances des calculateurs, et là à part C/C++ et Fortran à renforts de MPI et OpenMP, il n'y a pas grand chose de disponible.
Cuda, Cudnn (Nvidia) ; Mkl (Intel) mais là encore c'est du C/C++/Fortran.
En IA les performances comptent; l'overclock est toujours d'actualité.
2  0 
Avatar de qvignaud
Membre habitué https://www.developpez.com
Le 09/07/2018 à 15:52
Citation Envoyé par gallima Voir le message
Aujourd’hui les systèmes de deep-learning consomment beaucoup plus de puissance de calcul pendant les développement que pendant l'exploitation.
L'établissement du modèle est effectivement souvent la tâche la plus lourde, une fois établi son exploitation est relativement triviale pour la plupart des machines.
2  0 
Avatar de SimonDecoline
Membre expert https://www.developpez.com
Le 09/07/2018 à 18:48
Citation Envoyé par Matthieu76 Voir le message
Je pense vraiment que les algorithmes d'apprentissage des réseaux de neurones sont actuellement peu performant et que l'on blinde la puissance de calculs pour palier ce manque d'efficacités. Même si je n'ai encore compris/étudier aucun article dépassant l'an 2000 j'ai l'impression que l'on a pas trop progresser depuis, on a juste 1000 fois plus de puissance de calculs.
Effectivement, les réseaux convolutifs existaient déjà en 2000 mais il y a eu beaucoup d'améliorations depuis : drop-out, pooling, relu, automatic differentiation...
http://rodrigob.github.io/are_we_the...s_results.html
2  0 
Avatar de sergio_is_back
Membre émérite https://www.developpez.com
Le 09/07/2018 à 13:00
Citation Envoyé par Anselme45 Voir le message
A la lecture de la définition de l'IA ci-dessus, je corrige... Il n'y a pas un seul participant de ce sondage à faire du développement en IA

PS: Vu que l'on affuble à n'importe quel projet le titre de "IA", effectivement pourquoi ne pas mentionner comme langage Excel, voir même le nuage de fumée des amérindiens ou les concerts de "tam-tam" si présents dans les films hollywoodiens des années 30 de la série Tarzan...
C'est vrai que les applications de l'IA proposées sont alléchantes : https://www.developpez.net/forums/d1.../#post10350362

et https://www.developpez.com/actu/2137...-artificielle/

Pour essayer de niquer la secrétaire du troisième ? Plutôt Java, Python, OCaml ?
1  0