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

Langages de programmation Discussion :

Avez-vous des idées de rapprochements de paradigmes qui seraient très pratiques ?


Sujet :

Langages de programmation

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut Avez-vous des idées de rapprochements de paradigmes qui seraient très pratiques ?
    Dans Wikipédia, la page consacrée aux paradigmes de programmation recense à ce jour une trentaine de paradigmes :
    • programmation impérative
    • programmation objet
    • programmation logique (Prolog)
    • programmation fonctionnelle
    • programmation par contrainte
    • ...

    La mise au point d'un paradigme, et le développement des outils associés (langages, compilateurs, ...) est une oeuvre titanesque, et leurs créateurs sont d'immenses théoriciens et techniciens.

    Cependant, parce qu'ils sont immergés dans leur monde et leurs problèmes, ces créateurs ne voient pas les problèmes globalement. C'est pourquoi ces paradigmes restent souvent dissociés (à l'exception de l'Objet qui s'est bien diffusé dans les autres paradigmes).

    Prenons un exemple : un langage procédural ne permet jamais d'utiliser les bienfaits de la programmation logique (style Prolog).

    Or, en termes de génie logiciel, ces deux paradigmes (procédural et logique) ne sont pas incompatibles 'en soi'. Ce serait même 'très' pratique de pouvoir écrire, en procédural, une chose comme :
    SI est_grand_père(a,b)
    ALORS liste d'actions procédurales
    où la condition est_grand_père(a,b) serait évaluée par inférence.

    Sans chercher loin, on voit qu'un rapprochement du procédural et de la logique (par exemple) serait fécond en nouvelles possibilités, par exemple avec des boucles comme :
    POUR x TEL QUE est_grand_père("Paul", x)
    FAIRE ...
    Un autre exemple : le paradigme des tableurs comme Excel est 'très pratique', il suffit de changer la valeur d'une cellule pour que toutes les cellules qui en dépendent soient recalculées automatiquement.

    Cependant on ne dispose de ce paradigme dans aucun des 'grands' langages procéduraux ! Ce serait pourtant bien que ces langages permettent de déclarer simplement, une fois pour toutes, que certaines variables sont recalculées automatiquement en fonction d'autres variables.

    Les créateurs de langages ne voient pas bien ces besoins, ils en sont assez éloignés. Par contre les utilisateurs de langages les voient bien eux, parce qu'ils ont des contraintes de productivité, de qualité, etc.

    En tant qu'utilisateurs, avez-vous d'autres idées où des paradigmes pourraient s'enrichir mutuellement de manière particulièrement pratique ?

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Je dirais que les "événements" .Net ou "Signaux" de QT correspondent au coup des cases Excel; du moins, le fonctionnement des cases Excel peut être implémenté en ces termes.

  3. #3
    Membre chevronné

    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Novembre 2006
    Messages
    1 252
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 252
    Points : 1 954
    Points
    1 954
    Par défaut
    Citation Envoyé par cap_gregg Voir le message
    Prenons un exemple : un langage procédural ne permet jamais d'utiliser les bienfaits de la programmation logique (style Prolog).

    Or, en termes de génie logiciel, ces deux paradigmes (procédural et logique) ne sont pas incompatibles 'en soi'. Ce serait même 'très' pratique de pouvoir écrire, en procédural, une chose comme :
    SI est_grand_père(a,b)
    ALORS liste d'actions procédurales
    où la condition est_grand_père(a,b) serait évaluée par inférence.
    Le problème est le mélange de nature. "est_grand_père" dans un langage procédural est une fonction, dans un langage logique c'est un prédicat. Dans le premier cas, a et b sont des variables valuées, dans le second cas des variables à valuer. Comment les distinguer ? Par leur type ?

    En outre, l'évaluation du premier cas se fait sur la connaissance dans arguments, dans le second sur l'existence d'un ensemble de faits.

    Habituellement, quand on a besoin d'une saveur logique, on embarque un moteur d'inférence et on bénéficie de la puissance nécessaire. Dans un langage comme java, il peut y avoir selon les implémentations un continuum entre les 2 univers. De ce fait, il n'y a pas besoin de jouer sur la syntaxe pour y parvenir.

    Citation Envoyé par cap_gregg Voir le message
    POUR x TEL QUE est_grand_père("Paul", x)
    FAIRE ...
    Comment tu exprimes tu un fait ou un ensemble de fait ?

    Citation Envoyé par cap_gregg Voir le message
    Cependant on ne dispose de ce paradigme dans aucun des 'grands' langages procéduraux ! Ce serait pourtant bien que ces langages permettent de déclarer simplement, une fois pour toutes, que certaines variables sont recalculées automatiquement en fonction d'autres variables.
    En langage procédural c'est difficile, mais en C++ cela se fait très bien, et cela pourrait se déclarer comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Int a = 5;
    Int b = 6;
    Int c = a + b; // c est lié par a et b, "dynamiquement"
    
    cout << c; // affiche 11
    
    a =6; 
    
    cout << c; // affiche 12
    L'astuce est d'utiliser un type mutable et de faire des compositions de foncteurs reflêtant la séquence des opérations.

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 15
    Points : 2
    Points
    2
    Par défaut
    Il y a 3 langages (à ma connaissance) qui permettent de mélanger programmation impérative et programmation logique : Oz (nativement), PyPy (nativement), et le C++ (avec le module additionnel Castor).

    Or l'intérêt d'utiliser ces 2 paradigmes ensemble est évident, puisqu'il permet (entre autres) aux programmes impératifs d'utiliser des conditions de haut niveau (par ex : SI Est_Risquée(action) ALORS ... ou SI Est_Imposable(x) ALORS ...), ces conditions étant évaluées avec toute la puissance de règles complexes, de bases de faits, et d'un moteur d'inférence.

    Nous humains, dans notre manière de penser et d'agir, nous utilisons en permanence ces paradigmes ensemble, de manière naturelle.

    Or il n'y a que 3 langages rapprochant ces paradigmes, autrement dit ils sont encore éloignés dans le monde de la programmation.

    La question est : y a-t-il d'autres paradigmes, aujourd'hui éloignés, qu'il serait naturel et pratique de rapprocher ?

Discussions similaires

  1. Avez vous des idées sur les prix de ventes d'applications et de sites ?
    Par Chatbour dans le forum Langages de programmation
    Réponses: 4
    Dernier message: 15/07/2008, 13h50
  2. Réponses: 4
    Dernier message: 18/07/2006, 07h06
  3. [Struts] Avez vous des adresses d'hebergeur payant ?
    Par brousaille dans le forum Struts 1
    Réponses: 12
    Dernier message: 03/02/2006, 10h06
  4. [Method] Un gestionnaire d'Acces avez vous des concepts ?
    Par brousaille dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 26/10/2005, 19h25

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