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

Le , par Blondelle Mélina, Chroniqueuse Actualités
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 ?


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse Signaler un problème

Avatar de Matthieu76 Matthieu76 - Membre confirmé 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.
Avatar de gallima gallima - Membre régulier 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.
Avatar de Anselme45 Anselme45 - Membre confirmé 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...
Avatar de sergio_is_back sergio_is_back - Membre éprouvé 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 ?
Avatar de onilink_ onilink_ - Membre confirmé https://www.developpez.com
le 09/07/2018 à 13:35
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...
Normal, tu nous sors la définition d'IA forte. Ça a rien a voir avec le terme général d'IA utilisé en développement, dont la définition est plutôt:
Citation Envoyé par wikipedia
In computer science AI research is defined as the study of "intelligent agents": any device that perceives its environment and takes actions that maximize its chance of successfully achieving its goals.
Et a ce niveau, on est bien plus a faire de l'IA que ce que tu peux dire.
Faire un bot dans un jeu c'est de IA (à l'ancienne), faire de la reconnaissance d'objet c'est de l'IA.
Automatiser des taches complexes qui nécessitent à la base un humain c'est faire de l'IA.
Avatar de gallima gallima - Membre régulier https://www.developpez.com
le 09/07/2018 à 13:47
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
D'après la définition que tu as trouvé je fais de l'IA.

Ps : après ce n'est pas encore cette IA qui me fait vivre car elle ne fonctionne pas encore. Mais on essaye.
Avatar de Anselme45 Anselme45 - Membre confirmé https://www.developpez.com
le 09/07/2018 à 14:24
Citation Envoyé par onilink_ Voir le message
Et a ce niveau, on est bien plus a faire de l'IA que ce que tu peux dire.
Faire un bot dans un jeu c'est de IA (à l'ancienne), faire de la reconnaissance d'objet c'est de l'IA.
Automatiser des taches complexes qui nécessitent à la base un humain c'est faire de l'IA.
Même si tu prends la définition la plus basique (celle du Larousse): L'intelligence artificielle (IA) est « l'ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l'intelligence », tes exemples ne sont pas de l'IA! Ou plutôt... Tout est intelligence artificielle, tellement la définition est floue: Cela veut dire quoi "simuler l'intelligence"? Si on t'écoute, un simple jeu de sudoku développé lors d'un travail pratique d'un cours d'introduction à l'informatique d'une heure est de l'IA!

1. Faire un bot, faire de la reconnaissance d'objet ne nécessitent pas de faire appel à de l'IA! C'est juste un algo qui singe de l'IA... Tu peux faire un bot en listant une série de réponses type que tu déclenches en identifiant certains critères, tu peux reconnaître des objets en listant les caractéristiques identifiant un objet: Le fruit "orange" = couleur:orange / forme: ronde / surface: non lisse.

2. "Automatiser des tâches complexes qui nécessitent à la base un humain" se fait depuis des décennies dans toutes les industries: cela se nomme de l'automation industrielle, cela se réalise à l'aide de capteurs de toute nature connectés à un API (Automate Programmable Industriel)... On y trouve pas le moindre bit d'IA...
Avatar de onilink_ onilink_ - Membre confirmé https://www.developpez.com
le 09/07/2018 à 14:31
Citation Envoyé par Anselme45 Voir le message
Même si tu prends la définition la plus basique (celle du Larousse): L'intelligence artificielle (IA) est « l'ensemble de théories et de techniques mises en œuvre en vue de réaliser des machines capables de simuler l'intelligence », tes exemples ne sont pas de l'IA!

1. Faire un bot, faire de la reconnaissance d'objet ne nécessitent pas de faire appel à de l'IA! C'est juste un algo qui singe de l'IA... Tu peux faire un bot en listant une série de réponses type que tu déclenches en identifiant certains critères, tu peux reconnaître des objets en listant les caractéristiques identifiant un objet: Le fruit "orange" = couleur:orange / forme: ronde / surface: non lisse.
Prouve moi que tu ne singe pas toi même de l'intelligence et on en reparlera.

Citation Envoyé par Anselme45 Voir le message
2. "Automatiser des tâches complexes qui nécessitent à la base un humain" se fait depuis des décennies dans toutes les industries: cela se nomme de l'automation industrielle, cela se réalise à l'aide de capteurs de toute nature connectés à un API (Automate Programmable Industriel)... On y trouve pas le moindre bit d'IA...
Non, je ne parle pas de juste automatiser. Automatiser ça se fait même depuis que la mécanique existe. Et quand y a une pièce un peu décalée dans la chaîne de production, on voit d'ailleurs bien les dégâts.
Je parle de choses qui nécessitent la supervision d'un humain, car il faut s'adapter.

Par exemple lire ce qui est écrit sur tes chèques, l'adresse sur les enveloppes. C'est de l'IA. Ça s'adapte au style d'écriture, ça utilise les informations que ça connaît pour résoudre les situations que ça ne connaît pas.

Edit (vu que j'ai quote un ancien message):
Citation Envoyé par Anselme45 Voir le message
Ou plutôt... Tout est intelligence artificielle, tellement la définition est floue: Cela veut dire quoi "simuler l'intelligence"? Si on t'écoute, un simple jeu de sudoku développé lors d'un travail pratique d'un cours d'introduction à l'informatique d'une heure est de l'IA!
Oui si tu mélange IA et bruteforce on est pas sorti. En revanche je suis d'accord sur un point, la définition est floue, et ce n'est pas vraiment nouveau.
Si on comprenait l'intelligence, on aurait pas autant de mal a la reproduire ou au moins a savoir ce qui est sensé la prouver ou non.

Petit rappel historique: avant qu'un ordinateur ne batte le champion du monde d'échecs, savoir jouer aux échecs était considéré comme signe d'intelligence, propre a l'homme.
Puis on s'est rendu compte qu'une bonne heuristique et de la puissance de calcul faisaient l'affaire.
Il y a eu ensuite Go, qui était très difficile justement a cause de l'explosion du nombre de possibilités. Le bruteforce n'était plus envisageable.

Puis y a la reconnaissance d'image, la capacité de créer à partir de rien... tout ça on a très bien montré qu'il était en fait possible de le faire faire à un ordinateur.

Je crois que beaucoup de personnes prennent la définitions d'intelligence dans un sens trop anthropocentrique.
Avatar de qvignaud 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.
Avatar de gallima gallima - Membre régulier 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é.
Contacter le responsable de la rubrique Accueil