Vous êtes sur la page 1sur 11

Introduction 

Lorsque les ordinateurs numériques ont été développés pour la première fois dans
les années 1940 et 1950, les chercheurs ont écrit un certain nombre de programmes, ces
programmes pouvaient jouer aux échecs, aux dames et prouver des théorèmes. Dans les
années 1960 et 1970, l'IA a exploré diverses manières de représenter les problèmes en
développant différentes techniques de recherche et heuristiques générales, celles-ci ont
permis le développement de programmes utilisés pour résoudre des problèmes de mots
algébriques et l'intégration symbolique. Dans les années 1970 et 1980, grâce à des
systèmes plus puissants, des programmes d'IA ont été utilisés pour créer des systèmes
experts et en 1997, un programme IBM nommé DEEP BLUE a vaincu le champion du
monde d'échecs, Garry Kasparov.
L'intérêt pour l'IA s'est effondré à la fin des années 1950, il a cependant repris avec
vigueur dans les années 1980. Les réseaux d'éléments non linéaires avec des
interconnexions à force réglable sont maintenant reconnus comme une classe
importante d'outils de modélisation non linéaire. Il existe maintenant plusieurs
applications importantes de l'IA.
Les langages de programmation d'IA sont des langages capables de mettre en
œuvre une logique, très utiles pour créer des systèmes experts et dotés de
fonctionnalités pour gérer les bases de données relationnelles et le traitement du langage
naturel. Il existe de nombreux langages de programmation utilisés en IA parmi lesquels
on citera : List Processing (LISP), le langage français pour la programmation en logique
(PROLOG), Clips, Python et JAVA.
Evolution of artificial intelligence languages – a systematic literature review Emmanuel Adetiba1,2,
Temitope M. John1 , Adekunle A. Akinrinmade1 , Funmilayo S. Moninuola 1 , Oladipupo O. Akintade1
, Joke A. Badejo1 1Department of Electrical and Information Engineering, College of Engineering,
Covenant University, Ota, Nigeria. 2HRA, Institute for Systems Science, Durban University of
Technology, P.O. Box 1334, Durban, South Africa.

Les paradigmes en programmation

En programmation il existe plusieurs paradigmes, on notera deux grandes familles:


la programmation déclarative et la programmation impérative.
Un paradigme de programmation est une approche pour résoudre des problèmes
à l'aide d'un langage de programmation ou nous pouvons également dire que c'est une
méthode pour résoudre un problème à l'aide d'outils et de techniques qui sont à notre
disposition suivant une certaine approche. Il existe de nombreux langages de
programmation connus, mais tous doivent suivre une stratégie lorsqu'ils sont mis en
œuvre et cette méthodologie/stratégie est un paradigme. Outre les variétés de langages
de programmation, il existe de nombreux paradigmes pour répondre à chaque demande.
La programmation impérative, comme son nom l'indique, est un type de paradigme de
programmation qui décrit comment le programme s'exécute. Les développeurs sont plus
préoccupés par la façon d'obtenir une réponse étape par étape. C’est un paradigme qui
utilise des instructions qui modifient l'état d'un programme. En cela, l’ordre d’exécution
est très important. Les langages de programmation Fortran, Java, C, C++ sont des
exemples de programmation impérative.
Comme son nom l'indique, le déclaratif est un type de paradigme de programmation qui
exprime la logique d'un calcul sans décrire son flux de contrôle. Les développeurs sont
plus préoccupés par la réponse qui est reçue. Ils déclarent le type de résultats qu’ils
veulent et laisse le langage de programmation de côté en se concentrant simplement sur
la façon de les produire. En termes simples, il se concentre principalement sur le résultat
final. Miranda, Erlang, Haskell, Prolog, Lisp et CLIPS sont quelques exemples populaires
de programmation déclarative.
Difference Between Imperative and Declarative Programming - GeeksforGeeks

La programmation déclarative, c'est comme demander à votre mécanicien de réparer


votre voiture. Vous ne vous souciez pas de savoir comment la réparer, c'est à lui de s’en
charger.
La programmation impérative, c'est comme si votre mécanicien vous appelait pour vous
expliquer étape par étape comment réparer votre voiture.
À noter qu’il est possible d’utiliser l’un des paradigmes comme les deux dans une seule et
même application et qu’il existe des langages multi-paradigmes comme Python.

Après avoir acquis les bases de la compréhension des deux types de langages, résumons
maintenant les principales différences entre ces deux types de programmation.
Programmation Impérative Programmation Déclarative
En cela, les programmes spécifient En cela, les programmes spécifient ce qui
comment les choses doivent être faites. doit être fait.
décrit le flux de contrôle du calcul. exprime la logique du calcul.

Son objectif principal est de décrire Son objectif principal est de décrire le
comment obtenir le résultat ou l'accomplir. résultat souhaité sans dicter directement
comment l'obtenir.
Ses avantages incluent la facilité Ses avantages incluent un code efficace,
d'apprentissage et de lecture, le modèle qui peut être appliqué en utilisant des
notionnel est simple à comprendre, etc. méthodes, une extension facile, un niveau
d'abstraction élevé, etc.
Son type comprend la programmation Son type comprend la programmation
procédurale, la programmation orientée procédurale, la programmation orientée
objet, l'approche de traitement parallèle. objet, l'approche de traitement parallèle .
En cela, l'utilisateur est autorisé à prendre En cela, un compilateur est autorisé à
des décisions et donner des commandes au prendre des décisions.
compilateur.
Il donne un contrôle total aux Il peut automatiser les flux répétitifs tout
développeurs qui sont très importants en simplifiant la structure du code.
dans la programmation de bas niveau.

Difference Between Imperative and Declarative Programming - GeeksforGeeks

Les langages populaires de L’IA


ProLog

Prolog est un langage de programmation logique. De façon grossière, un


programme Prolog est un ensemble de connaissances et de règles de déductions que le
programmeur donne au langage. Le programmeur peut ensuite poser des questions,
auxquels le programme essaiera de répondre en utilisant les informations fournies.

Plus exactement, on donne à Prolog des sortes de "règles de raisonnement", et on lui


pose ensuite des questions. Il doit, en combinant les règles qu'on lui a donné, produire
une réponse.

Voici un exemple d'informations que l'on pourrait vouloir fournir à Prolog (ce n'est pas du
vrai code prolog, juste une description en français) :

Citation
Une personne X (les majuscules désignent des variables) est frère ou sœur de Y si
X est différent de Y, et s'il existe une personne Z qui est parent à la fois de X et de
Y.

X est parent de Y si X est père de Y, ou si X est mère de Y.

Tania est la mère de Sophie.


Thomas est le père de Sophie.
Thomas est le père d'Émilie.
Tania est la mère de Camille.
Michel est le père de Thomas.

On peut alors poser la question suivante :

Citation
Quels sont les frères et sœurs de Sophie ?

Et prolog fournira le bon résultat, à savoir tout ce qu'il peut déduire des informations
qu'on lui a données :

Citation
Émilie et Camille.

Voici le code Prolog correspondant :

Et pour interroger Prolog (la première ligne est la question, avec la réponse ensuite) :
Suivant ce principe, on peut en fait écrire des programmes relativement élaborés.
Historiquement, la programmation logique est appréciée dans tous les domaines où il
faut "faire des déductions" : certaines bases de données, de systèmes d'intelligence
artificielle (systèmes à base de connaissances, la simulation, le traitement du langage
naturel, l’écriture de compilateurs …), etc.

Exécution de programmes Prolog

''Exécuter'' un programme Prolog consiste à poser une question à l'interprète


PROLOG. Une question (ou but ou activant) est une suite d'atomes logiques séparés par
des virgules. La réponse de Prolog est ''yes'' si la question est une conséquence logique
du programme, ou ''no'' si la question n'est pas une conséquence logique du programme.
Une question peut comporter des variables, quantifiées existentiellement. La réponse de
Prolog est alors l'ensemble des valeurs des variables pour lesquelles la question est une
conséquence logique du programme.
Par exemple, la question
?- pere(toto,X), pere(X,Y).
se lit ''est-ce qu'il existe un X et un Y tels que pere(toto,X) et pere(X,Y) soient vrais''. La
réponse de Prolog est l'ensemble des valeurs de X et Y qui vérifient cette relation.
Autrement dit, la réponse de Prolog à cette question devrait être l'ensemble des enfants
et petits-enfants de toto... si toto est effectivement grand-père.

SWI-Prolog

SWI-Prolog est une implémentation gratuite du langage de programmation Prolog,


couramment utilisé pour l'enseignement et les applications web sémantiques.

LIST PROCESSING dit LISP


Lisp est un langage de programmation fonctionnel avec des fonctionnalités
impératives. Par fonctionnel, nous entendons que le style général du langage est organisé
principalement autour d'expressions et de fonctions plutôt que d'instructions et de sous-
programmes. Chaque expression Lisp renvoie une valeur. Chaque procédure Lisp est
syntaxiquement une fonction ; lorsqu'il est appelé, il renvoie un objet de données comme
valeur. Par impératif, nous entendons que certaines expressions et procédures Lisp ont
des effets secondaires, tels que le stockage dans des variables ou des positions de
tableau. Ainsi, les procédures Lisp ne sont pas toujours des fonctions au sens "pur" des
logiciens, mais en pratique elles sont de toute façon fréquemment appelées "fonctions",
même celles qui peuvent avoir des effets secondaires, afin de souligner qu'un résultat
calculé est toujours renvoyé. Les fonctionnalités impératives sont généralement utilisées
avec parcimonie ; bien qu'il soit possible de translittérer, disons, du code Fortran
directement en Lisp, le résultat ne présenterait pas le style de programmation Lisp
typique.
Voici une procédure Lisp simple qui concatène deux listes d'éléments, produisant une
nouvelle liste :

Cela peut se lire comme suit : Pour produire une liste constituée des éléments de y
ajoutés aux éléments de x, le calcul est conditionnel (cond). Si la liste x est vide (nulle),
alors le résultat est égal à y. Sinon, construisez (contre) une nouvelle liste en plaçant le
premier élément (voiture) de x avant le résultat de l'ajout de y au reste des éléments
(cdr) de la liste x.
Cela illustre plusieurs points du « bon » style Lisp. Les procédures sont généralement
petites et spécialisées, effectuant une seule tâche conceptuelle ; un programme Lisp
complet peut comprendre des centaines de petites procédures, chacune ne dépassant
pas trente à soixante lignes de code. La récursivité (une procédure qui s'appelle elle-
même) est souvent utilisée pour traverser des structures de données complexes. Alors
que les parenthèses indiquent la priorité et la structure du programme, le code est
généralement indenté dans un style conventionnel pour aider l'œil.
A Brief Introduction to Lisp (vt.edu)
Il existe plusieurs IDEs pour lisp, les deux plus utilisées sont le SLIME (Superior Lisp
Interaction Mode for Emacs) qui est un mode pour l’éditeur de text Emacs, et
LISPWORKS IDE qui fournit un flux de travail fluide et confortable, vous permettant
d'écrire, de tester et d'étendre progressivement votre logiciel pendant son exécution.

CLIPS
CLIPS (C Language Integrated Production System) est un environnement et un
langage de programmation créés en 1985, faisant partie du paradigme des langages
déclaratifs et logiques.
C’est un système général permettant la réalisation de systèmes experts
• Objectifs :
Etant donné que beaucoup de systèmes experts développés en LISP souffrent de
mauvaise portabilité, coût élevé, faible intégration avec d'autres environnements, ...etc. Il
était donc nécessaire de développer un moteur d'inférence en langage C : CLIPS.
CLIPS compte plus de 4000 utilisateurs dans le monde
• domaine concernés : • ingénierie : aéronautique, nucléaire, chimique ...
• éducation
• médical
• financier
• ...
• tâches : • diagnostic
• analyse
• planification
• optimisation
• aide à la conception
• ...
Quelques aspects techniques
CLIPS est en open source et intégré à de nombreuses distributions LINUX.
La syntaxe de CLIPS est proche de LISP (beaucoup de parenthèses!)
Interface avec interpréteur de commandes Possibilité d'intégrer des procédures écrites
en C.
Interfaçage Java Native Interface (il existe aussi un clône de CLIPS écrit en Java, Jess)
CLIPS permet le chainage avant (mais on peut simuler le chainage arrière en utilisant des
méta-règles)
Introduction à CLIPS : 1- Faits et règles (C Language Integrated Production System)
Bernard ESPINASSE Professeur à l'Université d'Aix-Marseille.
Un programme CLIPS se compose des faits et des règles :
Exemple d’un fait :
Exemple d’une règle :

Chainage avant vs chainage arrière


Le chaînage avant (à la CLIPS) correspond aux conditions, puis
génère des inférences à partir de ces conditions. Ces conditions peuvent à leur tour
correspondre à d'autres règles. Fondamentalement, cela prend un ensemble de
conditions initiales et tire ensuite toutes les inférences qu'il peut de ces conditions.
Les inférences (si elles sont affirmées) peuvent également être des actions ou des
événements qui peuvent déclencher des actions externes. Ceci est utile dans les systèmes
pilotés par les événements, car les ensembles de règles peuvent être configurés pour (par
exemple) lancer un flux de travail ou une autre action. Ce type de moteur de règles est le
plus couramment utilisé dans les applications commerciales.
Les systèmes pilotés par les événements sont une application courante des moteurs de
règles de chaînage direct. Un exemple d'application de chaînage direct peut être un
moteur d'approvisionnement de plan de télécommunications (généralement utilisé pour
administrer les plans de téléphonie mobile). La saisie d'un utilisateur particulier ave c un
plan particulier déclenchera une gamme d'éléments à configurer dans divers
commutateurs téléphoniques, systèmes de facturation, finances, systèmes CRM, etc.

Le chaînage vers l'arrière (à la Prolog) ressemble plus à trouver quelles


conditions initiales forment un chemin vers votre objectif. À un niveau très basique, c'est
une recherche en arrière de votre objectif pour trouver les conditions qui le rempliront.
Le chaînage vers l'arrière est utilisé pour les demandes d'interrogation (recherche
d'éléments répondant à certains critères) - un exemple commercial d'une application de
chaînage vers l'arrière pourrait être de trouver les polices d'assurance couvertes par un
contrat de réassurance particulier.

Grosso-Modo
Beaucoup d'hypothèses de sortie + beaucoup de données à l'avance => Utiliser le chaînage direct

Moins d'hypothèses de sortie + doit interroger les données => Utiliser le chaînage arrière

Ce n'est pas un commandement mais une règle d'or.


artificial-intelligence — Chaînage avant vs chaînage arrière (it-swarm-fr.com)

PYTHON
Python est un langage de programmation interprété, multi-paradigmes, de haut niveau
avec une sémantique dynamique. Ses structures de données intégrées de haut niveau, combinées
à un typage dynamique et à une liaison dynamique, le rendent très attrayant pour le
développement rapide d'applications, ainsi que pour une utilisation comme langage de script ou
de collage pour connecter des composants existants entre eux.

Python est préféré pour l'apprentissage automatique et l'IA car il accompagne les
développeurs tout au long du cycle de vie du développement du logiciel afin d'être productif et
confiant quant au produit qu'ils construisent. Python offre de nombreux avantages pour la
création de projets d'IA et de Machine Learning. Voici quelques exemples d'avantages :

 Bibliothèque intégré
 Facile à intégrer
 Gratuit et open source
 Paradigme orienté objet
 Paradigme fonctionnel
 Paradigme procédurale
 …

La mise en œuvre d'algorithmes de ML et d'IA nécessite un environnement bien structuré


et bien testé pour permettre aux développeurs de proposer les meilleures solutions de codage de
qualité. Pour réduire le temps de développement, il existe d'innombrables bibliothèques Python
pour Machine Learning. Voici quelques-unes des meilleures bibliothèques d'apprentissage
automatique Python :

1. TENSOR FLOW PYTHON

2. KERAS

3. THEANO
Ces bibliothèques sont extrêmement précieuses lorsque vous travaillez sur des projets
d'apprentissage automatique, car elles permettent de gagner du temps et fournissent en outre
des fonctions explicites sur lesquelles on peut s'appuyer.

JAVA
Java pour la programmation en intelligence artificielle est principalement utilisé
pour créer des solutions d'apprentissage automatique, de la programmation génétique,
des algorithmes de recherche, des réseaux de neurones et des systèmes multi-robots. Les
fonctionnalités indispensables de Java pour les projets d'IA sont son orientation objet et
son évolutivité.
Le développement de solutions d'intelligence artificielle en Java présente de
nombreux avantages. Les principaux avantages sont discutés ci-dessous.

 Java possède une multitude de bibliothèques utiles pour développer de


nombreux cas d'utilisation de l'IA. Ces bibliothèques Java AI sont
spécifiques à l'apprentissage automatique, aux réseaux de neurones, au
traitement du langage naturel et aux systèmes basés sur des règles.
 Le concept d'écriture unique de Java, exécuté partout (WORA) permet aux
programmeurs de développer leur code sur un système et d'exécuter le
même code (sans recompilation) sur d'autres systèmes compatibles Java.
 En tant que langage multi-paradigmes, Java prend en charge à la fois les
philosophies de programmation orientée objet et procédurale.
 La grande communauté de développeurs Java est activement impliquée
dans la création d'algorithmes d'IA et de ML, ainsi que dans le codage
d'une large gamme d'applications compatibles avec l'IA. Le site Web officiel
de Java soutient les efforts visant à créer des projets de ML et d'IA en
fournissant des fonctionnalités telles que l'évolutivité et l'orientation objet.
Java fournit de nombreux frameworks d'intelligence artificielle qui sont bénéfiques pour
les data scientists. Ils comprennent :
Les projets d'IA développés en Java présentent de nombreux avantages. De plus, Java est simple à
déboguer et dispose d'une communauté de développeurs extrêmement favorable.

CONCLUSION
Il existe plus de langages informatiques que vous ne pourrez imaginer, et encore
plus continuent d'être créés chaque année.
La première raison pour laquelle il y a beaucoup de langages est que les gens continuent
de les créer, même lorsqu'ils n'en ont pas forcément besoin, juste parce qu’ils le peuvent
et de temps en temps, quelqu'un développe un langage suffisamment bon pour que
beaucoup de gens commencent à l'utiliser.
Une autre raison est que certains langages sont bien mieux adaptés à certaines tâches
que d'autres.
La nécessité de simplicité, il y a des langages beaucoup plus faciles à apprendre que
d'autres.
Avec autant de langages, les apprendre tous serait impossible. Et faire un choix est
vraiment difficile, étant donné qu’il n’y a pas de « meilleur » langage, cela dépendra avant
tout :
Des préférences personnelles
Le genre de choses que vous voulez développer
À quel point le langage est-il limité, à quel point est-il facile ou difficile à apprendre
Perspectives de carrière potentielles
Si le langage est en hausse ou en baisse de popularité…etc

Vous aimerez peut-être aussi