C++ mélange un peu tout(transmission par valeur = expansion, transmission par pointeur = box).
Cela détermine qui gère la mémoire. La destruction d'un arbre d'objet "boxed" nécessite un GC pour savoir ce qui peut être réellement effacer. Une structure en expension avec les valeurs dedans sont détruit ensemble d'un seul coup.
En java int n'est pas boxer, Integer l'est. Cela permet par exemple d'utiliser des conteneur qui utilise le type de base Object, qui ne peut pas prendre un int. Cette blague existe pour tous les types de base.
En Ocaml, la box est complètement masquée. Les integer et les pointeurs sont codé avec un bit pour les distinguer, le reste est boxé. Le compilo peut savoir unboxer automatiquement les flottant et les tableaux de double. La box ne fait pas trop de perte de performance en Ocaml, car par défaut, une valeur n'est pas modifiable, on peut ainsi utiliser le pointeur sur la donné de base à la place, sans risque.
[^] # Re: boxed/unboxed ou expansion
Posté par Nicolas Boulay (site web personnel) . En réponse à la dépêche Encore une couche de rouille avec Rust 0.11. Évalué à 2.
C++ mélange un peu tout(transmission par valeur = expansion, transmission par pointeur = box).
Cela détermine qui gère la mémoire. La destruction d'un arbre d'objet "boxed" nécessite un GC pour savoir ce qui peut être réellement effacer. Une structure en expension avec les valeurs dedans sont détruit ensemble d'un seul coup.
En java int n'est pas boxer, Integer l'est. Cela permet par exemple d'utiliser des conteneur qui utilise le type de base Object, qui ne peut pas prendre un int. Cette blague existe pour tous les types de base.
En Ocaml, la box est complètement masquée. Les integer et les pointeurs sont codé avec un bit pour les distinguer, le reste est boxé. Le compilo peut savoir unboxer automatiquement les flottant et les tableaux de double. La box ne fait pas trop de perte de performance en Ocaml, car par défaut, une valeur n'est pas modifiable, on peut ainsi utiliser le pointeur sur la donné de base à la place, sans risque.
"La première sécurité est la liberté"