Et pourquoi donc?Envoyé par Jean-Marc.Bourguet
Et pourquoi donc?Envoyé par Jean-Marc.Bourguet
Comment ça? Je comprends pas trop en quoi les deux ne collent pas très bien entre elles?Envoyé par InOCamlWeTrust
Pourquoi pas?Envoyé par Gnux
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.Envoyé par Gnux
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.
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.
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.)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/
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.
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.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.Envoyé par Jean-Marc.Bourguet
Convaincre de quoi ?Envoyé par Jean-Marc.Bourguet
Envoyé par InOCamlWeTrust
+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
perso, je trouve que Scheme est aussi pas mal pour les développeurs qui veulent faire quelque chose de leur code...Envoyé par InOCamlWeTrust
http://community.schemewiki.org/?Stalin
Envoyé par InOCamlWeTrust
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)
Envoyé par Jean-Marc.Bourguet
à 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
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++ ?Envoyé par gorgonite
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?Envoyé par Jean-Marc.Bourguet
Il n'existe pas de bons livres d'introduction à la notion de types et de typage en dehors de ceux de Pierce...?
Envoyé par InOCamlWeTrust
ben non... c'est pour cela que j'ai dit "presque". ils n'ont pas le plus couillu, celui de caml
Envoyé par Gnux
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...
Ah, on parle d'impératid et d'OO, tout d'un coup je comprend bienEnvoyé par gorgonite
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.
Envoyé par Woufeil
ceux sont des titres paramétrés... conceptuellement proches des "a' list" de caml
Moi j'veux bien des cours de typage .Envoyé par gorgonite
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 confusionEnvoyé par InOCamlWeTrust
Je ne trouve pas cela plus fascinant, je suis fasciné par cela pour le moment.Envoyé par Gnux
Je passe.Il n'existe pas de bons livres d'introduction à la notion de types et de typage en dehors de ceux de Pierce...?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager