Dotez-vous d’une machine, n’importe quelle marque fera l‘affaire, caressez-la surtout dans le sens du poil et soyez gentil avec elle. Et bien quoi qu’on en dise : jamais ô grand jamais d’un coup celle-ci se dotera d’un esprit de génie et pourra en un claquement de doigt danser la samba ou vous servir un capuccino.
Aussi, même si l’on peut considérer qu’un jour peut-être cela sera possible, soyez sûr que ça demandera nécessairement beaucoup de travail, de temps et d ‘investissement.
Car malheureusement prétendre à simuler une quelconque intelligence est loin d’être simple; commençons dans un premier temps par nous informer un peu de comment tout cela fonctionne ! Ensuite nous pourrons parler des calculettes qui rangent nos chambres.
Un domaine, où l’intelligence artificielle est omniprésente, est la robotique. Un robot est par définition un assemblage de pièces mécaniques et électroniques, le tout piloté par une intelligence artificielle leur permettant d’effectuer divers tâches.
Si nous considérons l’IA comme le pilier porteur, alors le robot est en somme la carapace exécutant les interactions que lui dicte l’IA avec le monde qui l’entoure; la comparaison peut-être établie entre le cerveau et notre corps. Notre corps étant sensoriel, il envoie toutes sortes d’informations à notre cerveau : déterminant son environnement, sa situation dans celui-ci, s’il y a danger ou non et notre cerveau, en maître coordinateur, se charge de les analyser et de retourner des instructions en conséquence (notons que l’homme est doté de 5 sens : c’est autant d’informations que le cerveau doit gérer et assembler pour n’en retenir que le plus important afin d’être le plus efficace et réactif au possible).
Comment a t'on pu à l'origine créer ces machines complexes, bourrées d’électroniques, de fils et autres composants dont nous ne connaissons ni le nom ni l’utilité. Avec quoi les avons nous «éduquées» pour leur inculquer un semblant «d’esprit» afin que l’on se comprenne et qu’on puisse finalement les faire travailler pour nous. En définitif, qu'est-ce que nous ne savons pas et qui pourtant nous permet aujourd'hui de nous tenir devant notre ordinateur, la souris à la main, leur dictant des ordres du bout de l’index qu’ils exécuteront sans broncher ?
C’est ce que tentera de mettre en lumière ce chapitre anciennement intitulé « Comment ça fonctionne ? », lequel ne vous fera sûrement plus voir du même œil votre si précieux ordinateur. Tout du long, je me propose de vous servir de guide, en espérant accroître la liste de vos connaissances, si ce n’est, au moins, les renforcer dans ce domaine.
Alors, certes, la souris à la main nous les dirigeons, mais seulement en apparence, car ce sont tous un tas de mécanismes qui prennent le relais dès lors que notre «ordre» est passé et à ce moment là tout se déroule dans l’ombre, à l’insu de chacun; avant que l’on pense déjà à savoir s’ils ont mené à bien leur mission, il faudrait déjà comprendre comment notre relation avec eux est possible.
Si nous approfondissons quelque peu nos recherches, l'on s'aperçoit rapidement que les
robots et les machines, en général, agissent étonnamment. En effet, lorsqu’on s’adresse à eux, ils ne comprennent que lorsqu’on leurs envoie des 0 et des 1. Ainsi si je voulais faire travailler mon ordinateur, je lui dirais : «additionne 3 et 5», mais en langage informatique, le seul langage qu’il peut comprendre, ça pourrait donner quelque chose comme :
0010110110010011010011110
Parce que votre machine ne parle pas l’Anglais et encore moins le Français : ceci est le seul langage, informatique, binaire, compris par les ordinateurs. Mais pour les néophytes, il est tout simplement incompréhensible.
Il est bien sûr inconcevable d’utiliser le langage binaire pour un être humain, car il n'est tous simplement pas possible, ou plus précisément pratique, de transcrire les mots directement en chiffres (il faudrait une table traduisant l’ensemble des langues ce qui en terme de maintenance serait ingérable, pire, le langage parlé n’a aucune restriction car chacun a sa manière de parler pour se faire comprendre et c’est autant de sens en plus qu’il faudrait prévoir). Enfin vous l’aurez compris les informaticiens ont trouvé une autre solution et l’idée qu’ils ont eu a été de créer de nouveaux langages, cette fois ci, universels (c’est à dire que tout le monde comprendrait qu’il soit Français, Anglais, Allemand …) et qui feraient l’intermédiaire entre notre langage et celui de la machine de sorte qu’ils soient utilisés et ensuite traduits en binaire pour celles-ci.
La croyance populaire voudrait qu’il existe un seul langage de programmation, ce qui serait en soi logique, à première vue, pourtant ceux-ci abondent de nos jours, chacun spécialisés dans des domaines particuliers : la machine, le web, les bases de données, la gestion … Ce n’est pas tout, il existe donc bien des milliers de langages de programmation et bien souvent, la plupart se partagent un seul et même domaine, mais cela n’a en soi rien d’étonnant car chacun suit sa propre orientation et à ses avantages, ses inconvénients, ses utilisateurs et ses partisans.
Ces langages sont pour les plus anciens :
-
1951 – L’assembleur - langage proche de la machine (avant la programmation s'effectuait directement en binaire.)
-
1954 – Le FORTRAN - pour les calculs
-
1958 – LISP - pour l’intelligence artificielle
-
1959 – Le COBOL - pour la gestion
-
1964 – Le BASIC - pour les premiers ordinateurs personnels
Ceux-ci ne sont que des exemples parmi d’autres mais constituent tout de même des langages connus et pour certains encore assez répandus aujourd’hui.
C’est notamment le cas pour Lisp qui nous intéresse tout particulièrement car il est un des langages de programmation pilier de l’intelligence artificielle. Dans la même catégorie, il existe également : Prolog et Scheme.
Plus récemment ont vu le jour :
· 1970 - Pascal
· 1972 - C - un monument des langages de programmation
· 1972 - Prolog - un autre langage sur l’intelligence artificielle
· 1978 – SQL - pour les bases de données relationnelles
· 1983 - Ada
· 1983 - C++ - une évolution objet du langage C
· 1985 - Eiffel
· 1987 - Perl - langage orienté traitement de texte
-
1990 – Haskell - langage très orienté sur le typage
-
1991 – Python
-
1991 – Java - le concurrent du C++
-
1993 – Ruby
-
1995 – JavaScript - langage script pour le web
-
1995 – PHP - langage pour le web
-
2000 – C# - créé par Microsoft, il est dédié à Windows
Ceci n’était qu’un court élargissement de notre sujet initial afin de prendre conscience de l’ampleur du nombre de langages de programmation.
Mais revenons donc à nos moutons.
Des symboles qui forment des langages :
Définir le comportement de la machine se fait, on l’a vu, grâce à un langage informatique, dit de programmation. Celui-ci fonctionne concrètement par la mise en relation de mots construits à partir d’un alphabet : de lettres, de chiffres, d’assemblage de caractères aux significations bien souvent ignorées du néophyte (exemple des opérateurs « = » (affectation), « == » (comparaison), « > » (supérieur), «< » (inférieur), « != » (différent) …) et régis par une syntaxe définissant la structure du langage.
La «grammaire» du langage est de ce fait structurée par des caractères : { } ( ) ; …, formant des blocs appelés fonctions, méthodes, classes, objets. Des termes bien abstraits en soi que cette courte introduction n’aura pas la prétention de vous en enseigner la signification.
Pour bien illustrer mes propos, voici un exemple de sémantique dans le langage web PHP :
For($i=0 ;$i<1000;$i++)
{ echo ‘Ceci est du texte qui sera affiché 1000 fois.’;
}
Ici, en associant une sémantique (généralement une opération) à chaque mot, on définit le comportement de la machine. La mise en relation de mots va donner un programme informatique.
Ci-dessous le même exemple mais plus compréhensible pour nous :
Machine, je t’ordonne d’écrire 1000 fois : « Ceci est du texte qui sera affiché 1000 fois. »
Pratique pour les punitions, cette exemple montre bien la facilité à laquelle l’informatique arrive à automatiser une tâche, la plus lourde qui soit (je n’ai pas besoin de préciser que cette exemple sera exécuté par mon ordinateur en à peine le temps pour moi de sortir un «ouf», c’est à dire moins de 0.01s, bref, ce n’est pas le genre de chose qui va l’exténuer).
Un autre exemple cette fois ci en Python :
i=0
while i<1000:
print("Ceci est du texte qui sera affiché 1000 fois. ")
i+=1
Vous remarquez que la syntaxe est totalement différente, pour autant le résultat est le même car la machine quelque soit le code va ensuite le traduire en binaire; un assemblage de 0 et de 1. Le compromis entre notre langue et la sienne est donc tenu !
Notes :
Pour finir ce chapitre, voici une petite citation tirée du site web de l’«Université de Technologie de Compiègne» :
http://www.utc.fr/~barthes/IA01/CH01-1.html
« Critères de jugement
Les critères de succès en recherche en intelligence artificielle ne sont pas des critères de performance mais des critères de conformité : le système réalisé doit faire aussi bien mais aussi, aussi mal qu'un humain (réaliser un programme champion du monde d'échec n'est pas un problème d'intelligence artificielle, le problème d'intelligence artificielle serait de réaliser un programme qui joue aussi bien mais aussi, aussi mal qu'un individu moyen). Il faut donc savoir modéliser la réalité avec ses contradictions, les différents points de vue des acteurs, les trous (manque de connaissance dans certains domaines),...»
En résumé : on n’évalue pas «l’intelligence» d’un programme sur sa capacité à être au dessus de l’homme en terme de calcul, de vitesse de réflexion et ou de prévision dans un domaine mais d’avantage sur ses aptitudes à rassembler le bon et le mauvais de ce à quoi il doit simuler la ressemblance.
(Remarquez qu’il est ici question des programmes dont le but est clairement de ressembler à l’homme tandis que nous avons vu tout du long de ce chapitre des langages dont la fonction recherchée peut-être tout autre. C’est exactement cette ambiguïté que cherchera à résoudre le sujet de notre seconde partie.)
Je vous laisse méditer sur cette citation, en attendant de vous revoir dans le chapitre suivant où nous approfondirons les différences entre les langages, leurs similitudes ainsi que les différentes orientations et «styles» de programmation existants actuellement pour enfin pouvoir déterminer la place de l’intelligence artificielle dans tout ça. Notamment son orientation choisie pour être efficace car différentes solutions peuvent en effet être adoptées pour solutionner un même problème. Nous verrons tout cela très bientôt.
En espérant n’avoir perdu personne en route, je vous donne rendez-vous dans une 2ème partie intitulée : « Lisp et les courants d'intelligences. »