Répondre à la discussion
Affichage des résultats 1 à 11 sur 11

Intelligence artificielle : petit problème



  1. #1
    transhuman

    Intelligence artificielle : petit problème


    ------

    Bonjour,

    Voilà, supposons que j'ai le texte source d'un programme (peut importe en quel langage : perl, basic, c... )

    Pour mieux le structurer supposons que j'adopte une petite norme pour désigner les variables :
    Notamment m_ sera le préfixe pour toutes les variables propres à ce programme.
    m_p sera le préfixe propre aux pointeurs sur ces variables.

    Ainsi : m_date_naissance est une variable interne et m_pdate_naissance sera un pointeur sur cette variable.

    Je suppose qu'un programme d'IA doit relire le texte source évoqué ci dessus pour établir la liste des variables internes.
    Celà pose quelques problèmes plus rusés qu'une simple recherche de chaine de caractères :

    Question :

    Sans recourir à un lexique, quelles techniques d'IA me permettrait de reconnaitre que "m_popposition" indique un pointeur sur la variable "opposition" et pas une variable "popposition" ?

    Voilà,

    -----

  2. Publicité
  3. #2
    Argyre

    Re : Intelligence artificielle : petit probleme

    Citation Envoyé par transhuman Voir le message
    Bonjour,

    Voilà, supposons que j'ai le texte source d'un programme (peut importe en quel langage : perl, basic, c... )

    Pour mieux le structurer supposons que j'adopte une petite norme pour désigner les variables :
    Notamment m_ sera le préfixe pour toutes les variables propres à ce programme.
    m_p sera le préfixe propre aux pointeurs sur ces variables.
    Bonjour,

    Il me semble qu'il y a une petite contradiction dans l'énoncé. Quand tu parles de préfixes de pointeurs, je suppose que tu fais allusion à des noms de variables contenant une adresse mémoire. Or, il est dit auparavant que TOUTES les variables commencent par m_. Comment peut-il en être autrement pour les variables de type pointeur.
    Pourrais-tu préciser un peu ces points pour lever cette contradiction ?

    Cordialement,
    Argyre

  4. #3
    danyvio

    Re : Intelligence artificielle : petit probleme

    Je cite : Sans recourir à un lexique, quelles techniques d'IA me permettrait de reconnaitre que "m_popposition" indique un pointeur sur la variable "opposition" et pas une variable "popposition" ?

    Tu dois prendre pour règle que les noms de variables ne commencent pas par p. Sinon, comme écrit Argyre, il y a contradiction
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  5. #4
    transhuman

    Re : Intelligence artificielle : petit problème

    Euh non il n'y a pas de contradiction :

    Par exemple si j'ai une classe TERRAIN qui implèmente l'interface I_OBJET je peux déclarer ( en JAVA, en C++ en Perl.... ) une liste m_region qui comporte les pointeurs des TERRAINS constituant la region.

    Si j'ai besoin de retenir la référence d'un de ces TERRAINS particuliers figurant dans la liste je pourrais l'enregistrer par exemple dans : m_pforet.

    De façon plus générale jusqu'ou peut on aller pratiquement via l'analyse du contexte au sein d'un texte comme un source de programme ?

  6. #5
    Argyre

    Re : Intelligence artificielle : petit problème

    Citation Envoyé par transhuman Voir le message
    Si j'ai besoin de retenir la référence d'un de ces TERRAINS particuliers figurant dans la liste je pourrais l'enregistrer par exemple dans : m_pforet.
    Ok, donc si j'ai bien compris, toute variable commence par m_ et si c'est un pointeur, il y a en plus un p.
    Citation Envoyé par transhuman Voir le message
    Sans recourir à un lexique, quelles techniques d'IA me permettrait de reconnaitre que "m_popposition" indique un pointeur sur la variable "opposition" et pas une variable "popposition" ?
    Je ne suis pas sûr de saisir complètement ta question. On est bien obligé de partir d'un lexique pour identifier les mots-clés du langage, non ?
    Sans lexique, on se retrouve comme devant un texte codé sans avoir la procédure de décodage ...
    Pourrais-tu préciser ce que tu veux dire par "sans lexique"' ?

    Cordialement,
    Argyre

  7. A voir en vidéo sur Futura
  8. #6
    transhuman

    Re : Intelligence artificielle : petit problème

    L'idée de cette question m'est venue en passant du C au perl :

    en C il n'y a aurait pas besoin d'un lexique pour reconnaitre s'il s'agit ou non d'un pointeur : par exemple si la variable est declarée comme TERRAIN *m_pvallee on est certain qu'il s'agit d'un pointeur. idem si m_pvallee est à gauche d'une affectation dont le membre de droite est une fonction ( ou une methode en C++ ) d'allocation memoire.

    En perl, en python celà me parait pas si évident. Pourtant perl sans sort très bien.

    En fait ma question revient à demander s'il existe des methodes d'IA ( éventuellement plusieurs methodes combinées ) qui en analysant les sources d'un suffisamment grand nombre de programmes ( rédigés dans un même language ) seraient capables de reconstituer la définition formelle du language telle qu'elle est implémentée dans l'interpréteur ou dans le compilateur du language ?

  9. Publicité
  10. #7
    Argyre

    Re : Intelligence artificielle : petit problème

    Citation Envoyé par transhuman Voir le message
    en C il n'y a aurait pas besoin d'un lexique pour reconnaitre s'il s'agit ou non d'un pointeur : par exemple si la variable est declarée comme TERRAIN *m_pvallee
    Ben, le signe * appartient au lexique ...

    Citation Envoyé par transhuman Voir le message
    on est certain qu'il s'agit d'un pointeur. idem si m_pvallee est à gauche d'une affectation dont le membre de droite est une fonction
    Et pour reconnaître une fonction, il faut connaître la syntaxe de déclaration avec { } ainsi que le type de la fonction et tout ça appartient au lexique.

    Citation Envoyé par transhuman Voir le message
    En fait ma question revient à demander s'il existe des methodes d'IA ( éventuellement plusieurs methodes combinées ) qui en analysant les sources d'un suffisamment grand nombre de programmes ( rédigés dans un même language ) seraient capables de reconstituer la définition formelle du language telle qu'elle est implémentée dans l'interpréteur ou dans le compilateur du language ?
    Hum ... problème complexe. En fait, il me semble qu'on ne peut pas partir de 0. Par exemple, on peut demander à un informaticien de faire cette analyse pour des programmes écrits dans un langage qu'il ne connait pas. Cependant, un informaticien sait que tout langage de haut niveau contient des instructions de test (if), des boucles (for, while), des déclarations de variables, de fonctions etc etc.
    Par ailleurs, on peut aussi faire des hypothèses concernant la syntaxe, par exemple on peut penser qu'un nom de variable est proche de l'identificateur de type lors de sa déclaration.
    Ce sont des hypothèses fortes qui peuvent permettre de supputer beaucoup de choses, mais sans pouvoir certifier quoi que ce soit.
    En ce qui concerne les pointeurs sur variables, ils nécessitent souvent un opérateur placé devant la variable, c'est donc un indice pour les détecter.
    Ma réponse est donc qu'on peut supputer beaucoup de choses grâce à des heuristiques, mais que sans connaissance du lexique et de la syntaxe, il n'y a aucune assurance d'avoir interprété correctement le langage.

    Cordialement,
    Argyre

  11. #8
    fderwelt

    Re : Intelligence artificielle : petit problème

    Citation Envoyé par transhuman Voir le message
    En fait ma question revient à demander s'il existe des methodes d'IA ( éventuellement plusieurs methodes combinées ) qui en analysant les sources d'un suffisamment grand nombre de programmes ( rédigés dans un même language ) seraient capables de reconstituer la définition formelle du language telle qu'elle est implémentée dans l'interpréteur ou dans le compilateur du language ?
    Bonsoir,

    Je crois que c'est possible dans une certaine mesure, mais probablement pas à ce point-là.
    A partir d'exemple de textes "bien formés" on sait construire un automate qui accepte ces textes. Mais uniquement ceux-là? Pas sûr. Et ceux déduits par changement du nom d'une variable (sans changer la sémantique)? Je sais encore moins.
    Ensuite il existe des algorithmes de réduction d'automates qui permettent une relative "synthèse", mais je ne sais pas jusqu'à quel niveau d'abstraction ils peuvent aller. En tout cas, il est clair que des heuristiques ne peuvent qu'améliorer les choses -- par exemple, si "if...else..." est commun à beaucoup de textes indépendants on peut essayer d'inférer qu'il s'agit d'atomes du langage. Mais je n'en sais pas plus... probablement un genre de mesure d'entropie doit être utile.

    -- françois
    Les optimistes croient que ce monde est le meilleur possible. Les pessimistes savent que c'est vrai.

  12. #9
    Evil.Saien

    Re : Intelligence artificielle : petit problème

    Salut,

    Il y a deja des décompilateurs (puisqu'il me semble que c'est grosso modo l'idée ici).

    Est-ce que tu as déjà regardé comment ils marchaient ?

    (Perso j'en ai aucune idée, je sais juste qu'ils existent et qu'ils sont non parfaits).

    ++
    Mon psychiatre, pour quinze mille francs, il m'a débarrassé de ce que j'avais : quinze mille francs

  13. #10
    transhuman

    Re : Intelligence artificielle : petit problème

    Bonjour,

    Le but serait d'utiliser le contexte ( c est a dire le code source ) d'allocation et d'utilisation des variables en prenant le moins possible de pré connaissance du langage.

    Le décompilateurs procèdent différemment : ils analysent la table d'allocation issue de la phase de link. Un décompilateur ne connait pas les noms des variables. Il etablit un graphe sur les relations entre les affectations et sur les typologies des variables un décompilateur est vite embêté en cas de compilation croisée ( un programme compilé et linké sous unix pour une execution sous windows ).

    J'ai lu que des languages comme eiffel permettent de traduire bien mieux la logique métier en produisant une ontologie des concepts. Les objectifs et contraintes d'UML comme des templates sont alors depassés. J'aimerais savoir jusqu'ou l'on peut aller dans cette voie

  14. #11
    brax

    Re : Intelligence artificielle : petit problème

    Citation Envoyé par transhuman Voir le message
    L'idée de cette question m'est venue en passant du C au perl :

    en C il n'y a aurait pas besoin d'un lexique pour reconnaitre s'il s'agit ou non d'un pointeur : par exemple si la variable est declarée comme TERRAIN *m_pvallee on est certain qu'il s'agit d'un pointeur. idem si m_pvallee est à gauche d'une affectation dont le membre de droite est une fonction ( ou une methode en C++ ) d'allocation memoire.

    En perl, en python celà me parait pas si évident. Pourtant perl sans sort très bien.
    La compilation d'un programme passe par différentes étapes. Notamment le compilateur effectue une analyse (lexicale, syntaxique et sémentique) du programme source. Lors de l'analyse, il créé un lexique des variables déclarées avec le nom et le type des variables. Le principe est pratiquement identique pour un interpréteur.

    Citation Envoyé par transhuman Voir le message
    En fait ma question revient à demander s'il existe des methodes d'IA ( éventuellement plusieurs methodes combinées ) qui en analysant les sources d'un suffisamment grand nombre de programmes ( rédigés dans un même language ) seraient capables de reconstituer la définition formelle du language telle qu'elle est implémentée dans l'interpréteur ou dans le compilateur du language ?
    Sans aucune connaissance de la grammaire du langage, il est impossible de reconstruire celle-ci quel que soit le nombre de progammes sources en entrée.

    Par exemple,
    a=a+1;
    est valide pour la grammaire du C, de Java et sûrement pour d'autres langages existant, donc autant de grammaires différentes. Mais on peut aussi créer une infinité de grammaires pour laquelle cette ligne est valide, mais avec une signification différente.

    Si ton programme ne connais pas la grammaire d'avance, il devra te proposer une infinité de grammaire.

Discussions similaires

  1. Intelligence artificielle
    Par Gaara dans le forum Discussions scientifiques
    Réponses: 454
    Dernier message: 11/07/2007, 22h10
  2. Intelligence Artificielle...
    Par KarmaStuff dans le forum [ARCHIVE] Philosophie
    Réponses: 445
    Dernier message: 06/11/2004, 18h38
  3. Intelligence Artificielle...
    Par KarmaStuff dans le forum [ARCHIVE] Philosophie
    Réponses: 5
    Dernier message: 11/09/2004, 21h36
  4. Intelligence artificielle
    Par Fildomen dans le forum Logiciel - Software - Open Source
    Réponses: 13
    Dernier message: 27/07/2004, 20h30
  5. Intelligence artificielle
    Par dream_walker dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 04/05/2004, 11h01
Découvrez nos comparatifs produits sur l'informatique et les technologies.