Un cast a toujours ete sur en Java.
En C++ le cast est sur a condition d'utiliser la bonne facon de faire (dynamic_cast)
En Nosica le cast est sur aussi...
Ca veut dire quoi ? Ca veut dire que dans les cas ambigus, il y a un test au runtime et le lancement d'une exception ...
Dans tous les cas tu ne pourras prendre un type B pour un type A s'il n'y a aucun rapport entre les deux. En plus s'il n'y a vraiment aucun rapport entre les deux, tu te fais jeter a la compil. Les cas un peu tendancieux sont ceux qui proviennent du downcasting ... Mais d'apres ce que j'en comprend, que tu fasses de l'invariance ou de la covariance il y aura forcement des cast (meme s'ils sont caches), et donc forcement des cas ou tu peux avoir un runtime failure.
Pour ce qui est de l'Ocaml, le peu que j'en connaisse ne m'a pas trop seduit. La plupart de la programmation objet en Ocaml est de la programmation generique (aka polymorphisme statique), et pas de la vrai programmation dynamique (aka polymorphisme dynamique).
De plus le systeme de variable unmutable impose un style de programmation que je n'aime pas du tout. Il est souvent obligatoire de passer par des algos recursifs a cause de ca.
Pour finir, si tu vas sur http://caml.inria.fr/FAQ/FAQ_EXPERT-eng.html#polymorphisme(...) tu verras qu'il existe un certains nombre de limitations au langage.
[^] # Re: Nosicalight version 0.2
Posté par Epsos . En réponse au journal Nosicalight version 0.2. Évalué à 1.
En C++ le cast est sur a condition d'utiliser la bonne facon de faire (dynamic_cast)
En Nosica le cast est sur aussi...
Ca veut dire quoi ? Ca veut dire que dans les cas ambigus, il y a un test au runtime et le lancement d'une exception ...
Dans tous les cas tu ne pourras prendre un type B pour un type A s'il n'y a aucun rapport entre les deux. En plus s'il n'y a vraiment aucun rapport entre les deux, tu te fais jeter a la compil. Les cas un peu tendancieux sont ceux qui proviennent du downcasting ... Mais d'apres ce que j'en comprend, que tu fasses de l'invariance ou de la covariance il y aura forcement des cast (meme s'ils sont caches), et donc forcement des cas ou tu peux avoir un runtime failure.
Pour ce qui est de l'Ocaml, le peu que j'en connaisse ne m'a pas trop seduit. La plupart de la programmation objet en Ocaml est de la programmation generique (aka polymorphisme statique), et pas de la vrai programmation dynamique (aka polymorphisme dynamique).
De plus le systeme de variable unmutable impose un style de programmation que je n'aime pas du tout. Il est souvent obligatoire de passer par des algos recursifs a cause de ca.
Pour finir, si tu vas sur http://caml.inria.fr/FAQ/FAQ_EXPERT-eng.html#polymorphisme(...) tu verras qu'il existe un certains nombre de limitations au langage.