a- Concernant le deuxième point, la portabilité que tu peux t'accorder en C++ s'arrête au source "annoté". Il faut en effet ajouter des instructions de pré-compilations pour avoir un source "multi-plateforme". Et impossible d'avoir un .o ou .so ou .dll portable. Sur les systèmes UNIX avec la gestion des dépendances, ca peut se gérer (et encore !) mais pour Windows t'es marron.
Et franchement reconstruire un produit pour pouvoir l'utiliser c'est tout de même assez "con" comme principe.
b- Tu n'obtiendras pas la même portabilité rien qu'au niveau des sources et absolument aucune au niveau binaire.
c- L'interdiction de l'héritage multiple paraît assez naturelle car elle évite de nombreux problèmes d'utilisation, que cela n'ajoute finalement pas grand chose, ca clarifie le code et que ca simplifie/optimise la compilation et l'exécution. Si on met dans une balance, ca penche beaucoup plus en faveur de l'interdiction que l'autorisation.
d- koala> base OO == substituabilité
On dit "polymorphisme" :zoubi:
e- Où est l'hérésie de dire que dans un langage objet tout est objet ?
Pour autant que je sache, je peux tous les deux les décrire, les toucher et les
manipuler.
f- Non ce n'est pas rare et c'est pourquoi il y a les interfaces. Le vrai problème c'est de déterminer le code à exécuter dans le cadre de l'héritage multiple (voir le
problème du diamand).
g- Dans le paradigme objet, il n'y a pas de fonction et tout comportement est rattaché à un objet ... Java utilise le paradigme impératif uniquement pour décrire les comportements et ce n'est pas général à l'OO.
h- Une map permet de créer une association non structurelle entre deux objets, donc oui, c'est normal que tout puisse être clé d'une map ... C'est une forme simpifiée d'inversion de contrôle.
i- Pourquoi ne pas le faire si c'est nécessaire ? D'ailleurs tu fais comment un code générique si tu n'acceptes pas un point commun ?
D'ailleurs avec un nom comme boost::any, je vois pas trop la différence avec java.lang.Object ???
void* n'est ni plus, ni moins qu'un java.lang.Object sans comportement. Quand tu vois la part de code Java qui sont basés sur les méthodes de "base", tu te rends bien compte du temps gagné !
k- Super si tu manipules des objets qui viennent de deux framework différents !
l- koala01, je voudrais juste finir en m'excusant si tu le prends mal. Je n'ai rien contre toi mais tes remarques m'ont fait bondir ^^