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 fonctionnels Discussion :

Débuter en programmation fonctionnelle


Sujet :

Langages fonctionnels

  1. #21
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Il faut avouer que je suis plus fasciné pour le moment par le typage statique.
    Et pourquoi donc?

  2. #22
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Programmer dans un langage pur et strict me paraît être une mauvaise idée, car il s'agit de deux notions contradictoires, ou du moins qui ne collent pas bien entre elles.
    Comment ça? Je comprends pas trop en quoi les deux ne collent pas très bien entre elles?

  3. #23
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Gnux
    Et pourquoi donc?
    Pourquoi pas?
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  4. #24
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par Gnux
    Comment ça? Je comprends pas trop en quoi les deux ne collent pas très bien entre elles?
    Ca consomme trop de ressources sur des données un peu grandes. Les langages purs, de par leur conception, permettent justement de s'affranchir de cette contrainte.

    Je voulais juste dire que pour développer des applications, voire de gros programmes, Scheme ou Lisp n'est peut-être pas l'idéal. Par contre, pour apprendre la philosophie et l'état d'esprit de l'approche fonctionnelle, ça peut être une bonne idée car il s'agit de langages relativement simples.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #25
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Le typage statique garantit qu'aucune erreur ne surviendra lors de l'exécution du programme, et, en ce sens, est un gage indéniable de sûreté de développement.

    Par exemple, le gros challenge de la couche objet de OCaml a justement été de conserver cette approche, tout en gardant un langage entièrement polymorphe, alors que l'approche objet lève beaucoup de cas où une partie de la vérification de types est faite classiquement à l'exécution... pour le coup, la Caml team a fait du beau travail.

    Objective Caml est d'ailleurs le seul langage à objets polymorphe au monde, typé statiquement.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  6. #26
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    l'approche objet lève beaucoup de cas où une partie de la vérification de types est faite classiquement à l'exécution... pour le coup, la Caml team a fait du beau travail.
    Quelle partie de la vérification de types est faites à l'exécution en C++? Ou quelle erreur de typage passe alors inapperçue? (tant qu'on n'utilise pas ce qui est fait explicitement pour ça naturellement.)
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  7. #27
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Je ne connais pas les détails de l'inféreur de types de C++, ni même comment il est foutu ; par contre, en Java, il m'est déjà arrivé d'avoir des erreurs de typage à l'exécution, car Java n'est pas entièrement typé à la compilation :

    http://deptinfo.cnam.fr/~barthe/OO/typage-java-2/

    Ce sont les traits de la POO (surcharge, héritage, sous-typage) qui font qu'il est presque impossible de typer certaines choses à la compilation.

    OCaml, bien que polymorphe et objet, conserve le typage statique : mais les classes ne se comportent pas exactement comme en C++ ou Java, c'est une approche un peu différente : entre autres, il n'y a pas de surcharge (ce qui viendrait casser le polymorphisme et ferait rentrer le système dans un doute potentiel) et le type des méthodes ne peut contenir de variable de type libre, sauf si cette variable paramètre elle-même la classe. Le sous-typage est, quant à lui, toujours explicite : il faut expliciter le sur-type lors de l'utilisation d'un objet d'une sous-classe dans une expression.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  8. #28
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Je ne connais pas les détails de l'inféreur de types de C++, ni même comment il est foutu ; par contre, en Java, il m'est déjà arrivé d'avoir des erreurs de typage à l'exécution, car Java n'est pas entièrement typé à la compilation :

    http://deptinfo.cnam.fr/~barthe/OO/typage-java-2/
    Tu fais allusion au problème avec le tableau (je passe sur la conversion explicite que je classe dans les choses faites pour avoir de la vérification dynamique)? Je ne comprends pas pourquoi Java autorise l'assignation au départ, un tableau de D n'est pas un tableau de A même si D hérite de A. L'équivalent en C++ idiomatique n'est pas possible, mais l'est bien en utilisant les tableaux "C" (à cause de la conversion implicite des tableaux en pointeurs et la possibilité de faire de l'arithmétique des pointeurs -- un foutu m.... ces tableaux C, même quand on se limite au C) mais ça ne me convainc pas parce que cette caractéristique du C++ n'est pas fondamentalement liée au problème qui nous occupe.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #29
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    un foutu m.... ces tableaux C, même quand on se limite au C
    Les tableaux C sont ce qu'ils sont : des tableaux bas niveau. Quand on sait bien les utiliser, la programmation est presque enfantine.

    Citation Envoyé par Jean-Marc.Bourguet
    mais ça ne me convainc pas parce que cette caractéristique du C++ n'est pas fondamentalement liée au problème qui nous occupe.
    Convaincre de quoi ?
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  10. #30
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Bon, un tour de table bien fait me paraît important.

    +1... rien ne remplace un listing
    http://www.linux-center.org/fr/devel...nal/index.html

    il manque Anubis... http://fr.wikipedia.org/wiki/Langage_Anubis

    Citation Envoyé par InOCamlWeTrust
    Si je devais conseiller un langage fonctionnel, ce serait celui-là : les autres (Scheme et Lisp en particulier) sont trop difficiles à appréhender lorsque l'on veut faire des applications complexes, car ils laissent relativement peu de marge au programmeur.
    perso, je trouve que Scheme est aussi pas mal pour les développeurs qui veulent faire quelque chose de leur code...
    http://community.schemewiki.org/?Stalin

    Citation Envoyé par InOCamlWeTrust
    Haskell serait aussi un bon choix, à ceci près qu'il possède énormément de particularités, souvent déroutantes pour des gens qui proviennent même du domaine fonctionnel : entre autres, les monades, très délicates à expliquer, et le système de classes, qui se situe un niveau au-dessus de ce que tu peux connaître. En effet, en Haskell, une classe regroupe des types et non des objets !

    je dirais aussi que Haskell a aussi un avantage que l'on ne perçoit pas toujours... on peut faire à moindre coup un similateur pour traitement de data-flow sur un "modèle synchrone" (pour tous ceux qui ne veulent pas se mettre à Scade, Esterel ou Argos)
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  11. #31
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Quelle partie de la vérification de types est faites à l'exécution en C++? Ou quelle erreur de typage passe alors inapperçue? (tant qu'on n'utilise pas ce qui est fait explicitement pour ça naturellement.)


    à ma connaissance, le C++ possède la plupart des polymorphismes existant à l'heure actuelle (j'ai pas dit tous), et conserve un typage fort... et statique !!! (désolé InOcamlWeTrust, mais on reste copain ?)

    toutefois, il faut admettre que le transtypage de pointeur est une entorse à la règle...


    en ce qui concerne Java, le typage est en deux partie : statique et dynamique... ce qui est à ma connaissance le cas de tous les langages autorisant l'introspection et l'invocation des objets. le paradigme objet revenant à SmallTalk
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  12. #32
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Citation Envoyé par gorgonite
    à ma connaissance, le C++ possède la plupart des polymorphismes existant à l'heure actuelle (j'ai pas dit tous), et conserve un typage fort... et statique !!! (désolé InOcamlWeTrust, mais on reste copain ?)
    Pas sûr que ce soit le même polymorphisme... mais bon, je dois admettre que je n'ai jamais touché une seule ligne de C++. Peut-on écrire des méthodes valables pour TOUS les types en C++ ?
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  13. #33
    Membre émérite

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Points : 2 844
    Points
    2 844
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Pourquoi pas?
    Eh bien pourquoi trouves tu qu'il est plus fascinant d'avoir une vérification de typage avant la compilation plutot qu'à l'exécution?
    Il n'existe pas de bons livres d'introduction à la notion de types et de typage en dehors de ceux de Pierce...?

  14. #34
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Pas sûr que ce soit le même polymorphisme... mais bon, je dois admettre que je n'ai jamais touché une seule ligne de C++. Peut-on écrire des méthodes valables pour TOUS les types en C++ ?

    ben non... c'est pour cela que j'ai dit "presque". ils n'ont pas le plus couillu, celui de caml
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  15. #35
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Gnux
    Eh bien pourquoi trouves tu qu'il est plus fascinant d'avoir une vérification de typage avant la compilation plutot qu'à l'exécution?

    parce que :
    - la vérfication dynamique coûtent chère (cf SmallTalk ou Java), tout en autorisant des trucs rigolos en POO pur... mais ce n'est pas le débat
    - la vérification statique débugge pas mal au passage
    - si l'on n'est pas en modèle simplement typé (booléen, entier, fonction), il se pose plein de problèmes rigolos (et difficiles) de sous-typage... dont la propagation des contraintes, l'unification, etc.

    et je peux ouvrir mes cours de typages pour t'en sortir plus...
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  16. #36
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Citation Envoyé par gorgonite
    ben non... c'est pour cela que j'ai dit "presque". ils n'ont pas le plus couillu, celui de caml
    Ah, on parle d'impératid et d'OO, tout d'un coup je comprend bien

    Que fais-tu des templates en C++ ? Un template est bien un type générique, donc on peut bien définir une méthode valable pour tous les types d'objets. Ou alors il y a une entore à la règle que je ne connais pas...

    Toujours est il que tant qu'une méthode n'est pas virtuelle en C++, le typage de toutes les variables de cette méthode est statique, pour cause de compatibilité avec le C.

    Pour le transtypage des pointeurs, c'est particulier... Je suppose que quoi qu'il en soit, un pointeur occupe une place constante dans la mémoire (un octet pour les processeurs 32 bits si je ne m'abuse). Donc, même après transtypage, un pointeur reste un poiteur, c'est juste qu'il ne ponte plus vers le même type de valeur. Ce n'est pas comme une converstion int vers float.
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  17. #37
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Woufeil
    Que fais-tu des templates en C++ ? Un template est bien un type générique, donc on peut bien définir une méthode valable pour tous les types d'objets. Ou alors il y a une entore à la règle que je ne connais pas...

    ceux sont des titres paramétrés... conceptuellement proches des "a' list" de caml
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  18. #38
    Membre éclairé Avatar de HanLee
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    738
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2004
    Messages : 738
    Points : 871
    Points
    871
    Par défaut
    Citation Envoyé par gorgonite
    parce que :
    - la vérfication dynamique coûtent chère (cf SmallTalk ou Java), tout en autorisant des trucs rigolos en POO pur... mais ce n'est pas le débat
    - la vérification statique débugge pas mal au passage
    - si l'on n'est pas en modèle simplement typé (booléen, entier, fonction), il se pose plein de problèmes rigolos (et difficiles) de sous-typage... dont la propagation des contraintes, l'unification, etc.

    et je peux ouvrir mes cours de typages pour t'en sortir plus...
    Moi j'veux bien des cours de typage .

  19. #39
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par InOCamlWeTrust
    Les tableaux C sont ce qu'ils sont : des tableaux bas niveau. Quand on sait bien les utiliser, la programmation est presque enfantine.
    C'est pour ça que dès qu'il est question de ces tableaux sur les forums C et C++, je passe mon temps à démonter des mythes... Je n'ai pas l'impression que ce soit si compliqué que cela, mais le fait est qu'il y a pas mal de confusion
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  20. #40
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Gnux
    Eh bien pourquoi trouves tu qu'il est plus fascinant d'avoir une vérification de typage avant la compilation plutot qu'à l'exécution?
    Je ne trouve pas cela plus fascinant, je suis fasciné par cela pour le moment.

    Il n'existe pas de bons livres d'introduction à la notion de types et de typage en dehors de ceux de Pierce...?
    Je passe.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Quel logiciel (EDI) pour débuter en programmation ?
    Par mimosa69 dans le forum Débats sur le développement - Le Best Of
    Réponses: 13
    Dernier message: 17/01/2016, 16h45
  2. Réponses: 16
    Dernier message: 15/11/2005, 20h07
  3. Pour débuter en programmation réseau
    Par durnambule dans le forum Développement
    Réponses: 3
    Dernier message: 20/06/2004, 22h21
  4. Avec quel langage débuter en programmation ?
    Par spectrum1984 dans le forum Débuter
    Réponses: 10
    Dernier message: 28/12/2003, 21h57
  5. Comment débuter en programmation ?
    Par Marc Lussac dans le forum Débuter
    Réponses: 0
    Dernier message: 08/04/2002, 11h29

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