IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

[Actualité] Sortie de Castor 1.1


Sujet :

C++

  1. #1
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : juin 2006
    Messages : 2 307
    Points : 4 731
    Points
    4 731
    Par défaut [Actualité] Sortie de Castor 1.1
    Bonjour à tous,

    La programmation logique est un paradigme de programmation qui prend le courant inverse des langages de programmations impératifs. Plutôt que de décrire la méthode pour résoudre le problème (écrire un algorithme et le coder), elle consiste à décrire les données dont on dispose sur le problème, les règles pour les manipuler, à poser une question puis attendre que l'ordinateur trouve seul la réponse. Le prolog est le principal langage qui utilise ce paradigme.

    Néanmoins d'autres langages, via des bibliothèques ou des extensions, supportent ce paradigme. En particulier on peut citer C++ avec la bibliothèque Castor qui vient de sortir en version 1.1. Au menu de cette nouvelle version, on peut trouver.
    • l'operateur >>= pour créer des "TakeLeft relations" (abrégé TLRs)
    • Des exemples de TLR: group_by, order, reduce, count, skip ...
    • Le support des coroutines.
    • De nouvelles relations comme shuffle, max_of, reduce_of, pause, item_map, ...
    • De nouvelles ILE (Inline Logic Reference Expressions)
    • Des améliorations pour le support des ILEs et des lref


    Toutes ces nouvelles fonctions sont détaillées dans une vidéo en deux parties (partie 1, partie 2)

    Télécharger Castor

    Que pensez vous de Castor et en particulier de cette nouvelle version ?
    Pensez vous l'utiliser dans vos projets ?

    Toujours disponible : Présentation de la programmation logique avec Castor
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  2. #2
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    tu utilises cette bibliothèque à quelle fin?

  3. #3
    Membre averti Avatar de elmcherqui
    Profil pro
    Inscrit en
    février 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : Maroc

    Informations forums :
    Inscription : février 2008
    Messages : 281
    Points : 374
    Points
    374
    Par défaut
    Merci David , j'avais tellement envie de toucher a la programmation logique mais l'apprentissage d'un nouveau langage m'a dissuadé .
    Encore Merci pour cette bibliothèque et des liens

  4. #4
    Membre chevronné
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    septembre 2002
    Messages
    918
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : septembre 2002
    Messages : 918
    Points : 1 921
    Points
    1 921
    Par défaut
    Y a des expressions templates derrières ou bien c'ets tout en full dynamique (question de design, ton truc sent le EDSL à 1km )

  5. #5
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    @joel : non je crois pas que ça soit basé sur des ET. Mais mes souvenirs sont flou :p.

    Note au passage que castor a été plus ou moins proposé pour être intégré à boost. Mais je crois pas que ça ai donné grand chose car l'auteur ne voulait pas introduire de dépendances.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  6. #6
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : juin 2006
    Messages : 2 307
    Points : 4 731
    Points
    4 731
    Par défaut
    Joel >> Même s'il y a une forte utilisation des templates, ca reste dynamique même si je ne garantie pas ma réponse à 100%, les DSEL n'étant pas (pour le moment) ma spécialités.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  7. #7
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2006
    Messages : 507
    Points : 700
    Points
    700
    Par défaut
    Bonjour,

    Est-ce que la programmation logique décrite ici, ne serait pas relativement proche de la programmation dite "par contraintes" ?
    En c++, il existe Gecode, qui est très puissant mais une véritable usine à gaz !

    Dans ce type de programmation, on décrit un état initial puis un certain nombre de contraintes (ou règles) de différents poids. C'est ensuite le système qui trouve une solution ou un ensemble de solution...

    Cela ressemble étrangement à Castor !

  8. #8
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : juin 2006
    Messages : 2 307
    Points : 4 731
    Points
    4 731
    Par défaut
    Citation Envoyé par Fabllot Voir le message
    Bonjour,

    Est-ce que la programmation logique décrite ici, ne serait pas relativement proche de la programmation dite "par contraintes" ?
    En c++, il existe Gecode, qui est très puissant mais une véritable usine à gaz !

    Dans ce type de programmation, on décrit un état initial puis un certain nombre de contraintes (ou règles) de différents poids. C'est ensuite le système qui trouve une solution ou un ensemble de solution...

    Cela ressemble étrangement à Castor !
    La programmation par contrainte est une branche de la programmation logique où on dispose d'un jeu de n variables liées entre elles par des règles (les contraintes) et où le but du jeu est de déterminer le (ou les) n-uplet où toutes les contraintes sont satisfaites.

    La programmation logique est plus large que cela. Une fois que les faits sont établis (c'est à dire qu'on dispose d'un tas d'information plus ou moins disparate sur le sujet) et les règles pour les manipuler aussi , on va poser une question. Cette question peut être de deux natures : soit elle va ere une assertion (est ce que machin vérifie la propriété P) ou alors générative (Quel est l'ensemble des éléments qui vérifient la proprité P).

    La programmation par contrainte est assez "mathématique", la programmation par logique est plus proche de la logique humaine.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  9. #9
    Membre éclairé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    mai 2006
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mai 2006
    Messages : 507
    Points : 700
    Points
    700
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    La programmation par contrainte est une branche de la programmation logique où on dispose d'un jeu de n variables liées entre elles par des règles (les contraintes) et où le but du jeu est de déterminer le (ou les) n-uplet où toutes les contraintes sont satisfaites.
    En faisant quelques recherches sur le web c'est effectivement ce que j'ai compris.

    La programmation logique est plus large que cela. Une fois que les faits sont établis (c'est à dire qu'on dispose d'un tas d'information plus ou moins disparate sur le sujet) et les règles pour les manipuler aussi , on va poser une question. Cette question peut être de deux natures : soit elle va ere une assertion (est ce que machin vérifie la propriété P) ou alors générative (Quel est l'ensemble des éléments qui vérifient la proprité P).
    Là je ne suis que moyennement d'accord... La programmation par contrainte permet justement de trouver tous les n-uplets, sous-entendu, si il n'y en a qu'un seul, on est dans le cas "logique" où on recherche quels sont les éléments qui vérifient une propriété... Par contraintes, on peut ne pas définir certaines régles et trouver tout de même des solutions... Est-ce le cas avec en programmation logique ? Et les assertions en programmation par contraintes on les résoud directement...

    La programmation par contrainte est assez "mathématique"
    Entièrement d'accord avec toi !
    la programmation par logique est plus proche de la logique humaine.
    Là, je ne peux me prononcer, il faudrait que j'étudie un peu plus la question... mais c'est probable.

  10. #10
    Membre expert
    Profil pro
    Inscrit en
    mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mars 2007
    Messages : 1 415
    Points : 3 132
    Points
    3 132
    Par défaut
    Bonne nouvelle ce Castor ! Car s'interfacer avec du prolog depuis C++, ça doit pas être de la tarte. Je ne me sers pas actuellement de prolog, mais pour l'avoir étudié rapidement, j'aime bien son côté un peu "magique" pour résoudre les problèmes.

    Citation Envoyé par Davidbrcz Voir le message
    La programmation par contrainte est assez "mathématique", la programmation par logique est plus proche de la logique humaine.
    La logique reste une théorie mathématique précisément formalisée.
    Find me on github

  11. #11
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : juin 2006
    Messages : 2 307
    Points : 4 731
    Points
    4 731
    Par défaut
    Citation Envoyé par Fabllot Voir le message
    Là je ne suis que moyennement d'accord... La programmation par contrainte permet justement de trouver tous les n-uplets, sous-entendu, si il n'y en a qu'un seul, on est dans le cas "logique" où on recherche quels sont les éléments qui vérifient une propriété... Par contraintes, on peut ne pas définir certaines régles et trouver tout de même des solutions... Est-ce le cas avec en programmation logique ? Et les assertions en programmation par contraintes on les résoud directement...
    La PPC va permettre de trouver les n-uplets qui vérifient les contraintes. Mais étant donnée un n-uplet, il est facile (plus ou moins selon le nombre de contrainte) de vérifier s'il est valide.

    En PL, on peut à la fois générer des réponses à une question mais aussi demander à l'ordinateur de vérifier notre assertion quand ce n'est pas trivial. Pour le détail, regarde ceci

    Citation Envoyé par jblecanard Voir le message
    Bonne nouvelle ce Castor ! Car s'interfacer avec du prolog depuis C++, ça doit pas être de la tarte. Je ne me sers pas actuellement de prolog, mais pour l'avoir étudié rapidement, j'aime bien son côté un peu "magique" pour résoudre les problèmes.
    Il n'y aucun lien direct entre castor et prolog ! Castor n'est en aucun cas un binding entre C++ et Prolog. Castor est une bibliothèque (au même titre que Qt ou boost) entièrement écrite en C++ qui permet d'émuler la programmation logique en C++ .

    Citation Envoyé par Fabllot Voir le message
    La logique reste une théorie mathématique précisément formalisée.
    Certes, mais la PL s'éloigne de la notion de variable (et des valeurs possible qu'elle peut prendre) pour plus travailler sur les entités, leurs propriétés et les déductions qu'on peut en tirer avec les règles qu'on a.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : mars 2007
    Messages : 1 415
    Points : 3 132
    Points
    3 132
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Il n'y aucun lien direct entre castor et prolog ! Castor n'est en aucun cas un binding entre C++ et Prolog. Castor est une bibliothèque (au même titre que Qt ou boost) entièrement écrite en C++ qui permet d'émuler la programmation logique en C++ .
    J'avais bien compris ! Je me mettais dans une situation ou l'on a pas castor et ou l'on veut faire de la PL en C++.

    Citation Envoyé par Davidbrcz Voir le message
    Certes, mais la PL s'éloigne de la notion de variable (et des valeurs possible qu'elle peut prendre) pour plus travailler sur les entités, leurs propriétés et les déductions qu'on peut en tirer avec les règles qu'on a.
    Je ne vois pas en quoi ça contredis mon propos
    Find me on github

  13. #13
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : juin 2006
    Messages : 2 307
    Points : 4 731
    Points
    4 731
    Par défaut
    J'avais bien compris ! Je me mettais dans une situation ou l'on a pas castor et ou l'on veut faire de la PL en C++.
    Ah, oki. C'est beaucoup plus clair comme ca. Et non, ce n'est pas si dur, cf ceci (ok c'est que pour swi prolog, mais c'est quand même ca)

    Je ne vois pas en quoi ça contredis mon propos
    Nul part ! C'était plus un complément qu'autre chose.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

Discussions similaires

  1. [Actualité] Sortie de SWIG 3.0.5
    Par comScilab dans le forum Scilab
    Réponses: 0
    Dernier message: 05/02/2015, 13h05
  2. [Actualité] Sortie de Scilab 5.5.1
    Par comScilab dans le forum Scilab
    Réponses: 0
    Dernier message: 02/10/2014, 13h50
  3. Réponses: 6
    Dernier message: 01/04/2010, 10h28
  4. Réponses: 31
    Dernier message: 23/10/2009, 11h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo