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 :

Syntaxes matlab en c++


Sujet :

C++

  1. #1
    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 Syntaxes matlab en c++
    Bonjour,

    j'aimerais savoir quelles sont les techniques possibles pour mimer des syntaxes matlab en C++. Par exemple, pour un tableau array 2D suffisamment grand, mimer ce genre de choses
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    array(1:3,: ) = ...
    ... = array(1:3,1:4)
    ou encore les opérations terme à terme du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    array.*array  (passage au carré des coefficients de array)
    array./array  (tous les coeffs de array sont divisés par eux-mêmes).
    Bien sûr, ici, la question concerne les opérateurs :, .* et ./ parce que sans opérateurs je n'ai pas de problèmes.

    EDIT : et sans utiliser boost bien sûr...

  2. #2
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Aleph69 Voir le message
    j'aimerais savoir quelles sont les techniques possibles pour mimer des syntaxes matlab en C++
    Ça doit pas être facile en effet. As-tu cherché du côté des écoles de théatre? Il y a souvent des cours de mime.

    Plus sérieusement, que veux-tu dire par "mimer"?
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  3. #3
    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,

    ah je n'avais pas pensé à l'école de théâtre... elle est loin de l'école du cirque où tu te trouves?

    En fait, imaginons que l'opérateur ":" soit surchargeable, comment fais-tu pour gérer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(1:3,:)=another_array?
    En particulier, que renvoie operator: (int,int) et comment est surchargé l'opérateur "," pour rester efficace?

    EDIT : et comment faire pour pour la seconde dimension où : ne prend a priori aucun argument?

  4. #4
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    tech lead c++ linux
    Inscrit en
    Août 2004
    Messages
    4 262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : tech lead c++ linux

    Informations forums :
    Inscription : Août 2004
    Messages : 4 262
    Points : 6 680
    Points
    6 680
    Billets dans le blog
    2
    Par défaut
    Mais en fait, que veux-tu faire?
    Veux-tu faire un interpréteur? Un compilateur? Veux-tu écrire dans un fichier? Veux-tu lire un fichier? Veux tu lire des instructions entrées par l'utilisateur dans la console? Ouvrir un programme écrit en mathlab et le traduire en C++? L'inverse? ...
    « L'effort par lequel toute chose tend à persévérer dans son être n'est rien de plus que l'essence actuelle de cette chose. »
    Spinoza — Éthique III, Proposition VII

  5. #5
    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
    Rien de tout ça : je veux surcharger des opérateurs.

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    boost.proto mais y'a des choses qui seront pas faisable beaucoup même, tout ce qui implique un opérateur qui n'existe pas en C++ ie :
    array(1:3,: )
    ça marchera pas, va falloir s/:/| ou autre
    Parser l'expression serait plus intéressant je pense.

    ( Joel travaille sur quelque chose dans ce goût là si mes souvenirs sont bons...)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  7. #7
    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
    Merci pour ta réponse Goten.

    Je pensais effectivement à ce que fait Joel mais je l'ai seulement vu dans une présentation : je ne sais pas si un code est à disposition. Il remplace ":" par "_" si mes souvenirs sont bons.

  8. #8
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    Pour boost::proto, la série d'articles sur les EDSL sur CppNext traite de ce problème. Je trouve qu'elle explique très bien le principe, tu devrais lire les premiers articles de la série, et essayer d'appliquer ce qu'il fait à ton problème, il te faudra juste choisir une grammaire légèrement différente pour être compatible avec les opérateurs du C++ comme l'a dit goten.

    L'idée est que le compilateur construise un AST en voyant ton expression (en jouant avec les opérateurs) et qu'il l'évalue pour produire ce qui est attendue. Il y a plusieurs exemple dans les articles, ils illustrent très bien comment ca fonctionne (lambda notamment).

  9. #9
    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 : 43
    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 une vielle version de nt2 sur sourceforge qui marche, : devient all()
    la v3 presentée a boost'con est "coming soon"

  10. #10
    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
    Bonsoir,

    merci pour vos réponses.

    @Joel F : c'est sûrement la présentation de la v3 que j'ai regardé. Je vais déjà jeter un oeil à ce qui est fait dans la version sourceforce nt2 en attendant.

    @Flob90 : merci pour les références, je vais regarder. Est-ce que tu peux me traduire EDSL et AST parce que je ne sais pas ce que c'est.

    Sinon, est-ce que des bouquins sur le C++ ou boost présentent les concepts qui fondent boost::proto?

  11. #11
    En attente de confirmation mail

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2004
    Messages
    1 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 1 391
    Points : 3 311
    Points
    3 311
    Par défaut
    AST : Abstract Syntax Tree
    Intuitivement, c'est le fait de passer d'une expression à un arbre (grace à un parser), dont les noeuds sont les opérateurs et les feuilles les opérandes

    EDSL : Embedded Domain Specific Language
    Ce le sujet principale des articles, je te laisse découvrir

    Pour les bouquins, il y a "C++ Template Metaprogramming : ..." (David Abrahams) qui en parle peut-etre, je ne l'ai pas (encore) lu donc je peut pas confirmer, mais goten devrait pouvoir le faire.

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

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Ouaip il aborde le topic des DSEL avec du spirit / lambda / blitz etc, puis il montre les bases avec un framework pour faire des machines à état finis.
    Mais pas de proto non (trop ancien le bouquin).
    Mais la doc de proto est vraiment bien fichue. (presque)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  13. #13
    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,

    merci à tous pour ces informations. Je pars de ce pas faire en sorte de me coucher moins bête!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Matlab. Syntaxe POO
    Par bakaratoun dans le forum MATLAB
    Réponses: 0
    Dernier message: 03/11/2009, 12h14
  2. [Syntaxe] Action simultanée sur plusieurs élements
    Par FranT dans le forum Composants VCL
    Réponses: 2
    Dernier message: 20/03/2003, 20h20
  3. Syntaxe TASM <-> MASM
    Par LFC dans le forum Assembleur
    Réponses: 3
    Dernier message: 28/02/2003, 15h56
  4. [VB6] [Syntaxe] Fonction renvoyant un tableau d'objets
    Par Troopers dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 18/10/2002, 15h33

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