La délégation est un concept interessant, bien chouette mais il y a à mon sens un manque téhorique derrière.
Utiliser la délégation à la place de l'héritage multiple à un impact très fort : il remplace la notion du "est un" par la notion du "contient un". Je ne dis pas que c'est mauvais ou non mais je pense que c'est à creuser.
"Nosica est un langage objet, et tout est objet."
Tout est vraiment objet ?... vraiment tout ? Les structures de controle aussi (à la SmallTalk) ? Le code ? les méthodes ? les classes sont-il des objets ? :)
"Garbage collecting tres simple mais efficace via un reference counting automatique"
Attention aux circuits :p
A
|
v
B <- C <- _D
\_______/|
count B = 2
count C = 1
count D = 1
si jamais on nettoie A, on décrémente le count de B
comme count B> 0, on s'arrete
résultat : on a un circuit BCD dans le tas accroché à rien.
Langage de type. Par exemple en Eiffel on peut écrire
foo(a: A; b: like Current): like A
comme prototype de méthode
"A", "like Current" et "like A" sont des types valides, le premier disignant un objet instance de la classe A, le second désigant un objet instance de la même classe que le receveur ("Current"en Eiffel = "this" en C++/Java = "monpingouin" en GOTO++ = "self" en les autres langages) et le troisième désignant un objet instance de la même classe que le premier argument
les interets sont multiples : rendre inutile la généricité dans la majorité des cas, profiter à fond de la covariance, éviter les perte d'information de types, etc.
[^] # Re: Nosicalight version 0.2
Posté par MrTout . En réponse au journal Nosicalight version 0.2. Évalué à 1.
Utiliser la délégation à la place de l'héritage multiple à un impact très fort : il remplace la notion du "est un" par la notion du "contient un". Je ne dis pas que c'est mauvais ou non mais je pense que c'est à creuser.
"Nosica est un langage objet, et tout est objet."
Tout est vraiment objet ?... vraiment tout ? Les structures de controle aussi (à la SmallTalk) ? Le code ? les méthodes ? les classes sont-il des objets ? :)
"Garbage collecting tres simple mais efficace via un reference counting automatique"
Attention aux circuits :p
A
|
v
B <- C <- _D
\_______/|
count B = 2
count C = 1
count D = 1
si jamais on nettoie A, on décrémente le count de B
comme count B> 0, on s'arrete
résultat : on a un circuit BCD dans le tas accroché à rien.
Langage de type. Par exemple en Eiffel on peut écrire
foo(a: A; b: like Current): like A
comme prototype de méthode
"A", "like Current" et "like A" sont des types valides, le premier disignant un objet instance de la classe A, le second désigant un objet instance de la même classe que le receveur ("Current"en Eiffel = "this" en C++/Java = "monpingouin" en GOTO++ = "self" en les autres langages) et le troisième désignant un objet instance de la même classe que le premier argument
les interets sont multiples : rendre inutile la généricité dans la majorité des cas, profiter à fond de la covariance, éviter les perte d'information de types, etc.