J'ai pas dit que ce framework n'est pas faisable en C++ , juste qu'il n'existe pas a ma connaissance.
Si il existe merci de me dire le site ou je peut le télécharger .
J'ai pas dit que ce framework n'est pas faisable en C++ , juste qu'il n'existe pas a ma connaissance.
Si il existe merci de me dire le site ou je peut le télécharger .
ha ha ha ha ha ha ha !!!
Quake 1 utilisait très exactement ce mecanisme pour gerer les mods... 96... la même année que Java... finalement, c'etait une belle avancé de sun
si tu veut, tu peu télécharger le code source de quake, il est dispo...mais je doute que tu y comprenne quelque chose, carmack inside
et sinon, tu ne t'est jamais posé la question de savoir comment il faisait en Java pour gérer ca ? il on fait une jolie partie de la JVM, en C++, qui se charge de ça... donc pour un truc pas faisable en C++, je trouve ça pas mal
donc si on fait un poin, on a maintenant :
- introspection et chargement de code à la volé possible en Java et C++ (enfin, pour quake, c'est du C)
pour le C++, ca demande du boulot, mais on a le choix. En java, c'est intégré au langage, mais en dehors des mecanismes proposé pour ça par le langage... on ne peut rien faire.
essaye de faire de l'introspection et du chargement de code à la volé SANS utilisé les mecanisme du langage, c'est à dire, faire un tel système par toi même... c'est impossible en Java, alors que c'est possible en C++
allez, et maintenant, pour en revenir à un point qui fait mal à Java, je demande des générics turing complet après tout, pourquoi faire générer du code par un programmeur ou à l'execution quand le compilo peut s'en charger
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
On parle de fonctionnalités offertes par le langage, pas de ce que le binaire final peut faire. Dans ce cas, compare C++ avec l'assembleur et ose dire que le C++ n'a rien apporté...
Même remarque...
Si tu veux recoder les compilateurs ou VM des autres langages dans ton code C++, c'est ton choix. Mais ça n'en fait pas vraiment un avantage pour C++. Tu sais, on peut implémenter un compilateur C++ en Java et dire que C++ n'apporte aucune fonctionnalité par apport à Java. Avec ce genre d'arguments, je comprends que le débat n'avance pas.
Bon, si j'ai écrit une classe en C++, quelle est la fonction à appeler pour afficher les méthodes de cette classe ?
En utilisant autant de mauvaise foi que toi, on peut : il suffit de recoder un compilateur et une VM.
Pareil.
Que veux-tu dire par là ? Les generics sont une fonctionnalité, pas un langage.
Les generics ne génèrent/dupliquent pas le code, contrairement aux templates. Si tu veux générer du code, utilise un préprocesseur.
Moi j'attend toujours un site pour télécharger un framework c++ pour créer des fonctions c ou des classes c++ à l'éxecution.
de nulle part elle est peut-être faussée c'était pour voir si quelqu'un suivait..
ceci dit si on regarde les specs de la Java Virtual Machine cela ne m'étonnerait pas que si on déclare un int il ne soit pas réellement stocké en tant que int ce qui est un gachis dans l'optimisation
Très bien.
Et pendant votre temps libre vous tous vous avez pour projet de redévelopper une JVM en C++ ou faire un compilateur C++ avec environnement de développement Java ?
j'aimerais bien avoir votre temps libre.
Les type primitifs Java sont une concession du "tout Objet" à la performance.
Donc les types primitifs ne sont pas transformés en objets, et ne prennent pas plus de place.
Il est possible qu'un byte simple prenne 2 octets, ... comme c'est le cas aussi en C selon le compilateur et les options #pragma, pour être aligné sur la mémoire, et donc encore pour les perfs.
Par contre, on ne maitrise pas l'encodage d'un objet en mémoire, il y a forcément + ou - 8 octets alloués pour contenir uniquement le type de classe, bref des données techniques spécifiques à la JVM. (qu'en est-il en C++)
Quoiqu'il en soit, la maitrise de la mémoire est une des différences majeure entre Java et C++, ce qui fait par exemple qu'on est incapable de dire la taille d'un objet en mémoire (pas de sizeOf), ce dont j'ai eu besoin pour gérer un cache réglable en taille mémoire.
Un sizeof me parrait une opération bien compliquée si on veut obtenir sur un objet sa taille ainsi que celle de tous ses champs récursivement, sans compter les cycles possibles.
Oui, c'est potentiellement faux car on n'as pas les notions d'aggrégation ou association (pour arrêter la récursion) c'est néanmoins parfaitement possible par introspection (il y a plusieurs sources qui trainent sur le Web pour ça) (NB2: pour contrer les cycles: une Map de références, comme tout bon algo récursif sur un réseau)
On a bien souvent besoin de connaître la place occupée par la création d'un objet en cache, par exemple en mesurant la mémoire libre avant et après création: le résultat de cette méthode est hasardeux à cause du garbage, et évidemment des autres thread qui interviennent sur la mémoire.
Je crois que tu as mal compris mon propos : je m'étais en évidence l'absurdité des arguments. Ce n'est pas parce que Java peut être écrit en C++ que C++ possède nativement toutes les fonctionnalités de Java.
Pour ma part, j'essaie de l'utiliser intelligemment et j'évite de perdre mon temps avec C++ ou Java. Il y a des langages qui me permettent d'être autrement plus productif.
Et 10 ans avant ca, je faisais deja du code automodifiant en assembleur sur mon atari ST... Est-ce pour autant que l'assembleur du 68000 est mieux que Java ?
Comme ca a été dit, on peut toujours ecrire un compilateur C++ en Java et une JVM en C++. Mais, comme ca a été dit aussi, ca n'a aucun interet, a part reinventer (en moins bien) la roue.
Le but de cette discussion c'etait de savoir quel langage (syntaxe+compilateur+librairie) est le mieux adapté selon la problematique rencontrée. Pas de savoir si on peut quand meme prendre le langage le moins adapté.
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
je crois que personne n'a compris que je repondais à ceci :
j'ai tout simplement voulu montrer par un contre exemple que c'est possible, pas que c'etait simple (d'ailleurs, en passant, les deux etant Turing complet, on doit donc pouvoir faire la même chose avec les deux )Et ca en C++ c'est pas possible.
sinon, pour revenir au debat, j'utilise regulierement les 2 langages, et pour mon boulot, Java n'est pas utilisable car :
- par de control fin sur l'occupation memoire. On a en permanence besoin d'optimiser l'occupation memoire de nos structures de données, notamment quand on doit les envoyer à la carte graphique
- Les generics manquent clairement de puissance par rapport au templates, ont les utilisent quotidiennement, et le mecanisme proposé par Java n'est finalement qu'un bete systeme pour cacher les cast (bof) et pour faire de la verification à la compile (déjà beaucoup plus utile )
- Le garbage collector non deterministe... Lui il est vraiment embettant pour les perf
* Il est infiniment plus simple de faire rapidement un code qui marche que de faire un code rapide qui marche
* pour faciliter les recherches, n'oubliez pas de voter pour les réponses pertinentes
Mes articles
si tu restes dans une même méthode, c'est bien un int qui est stocké... après avec le passage en paramètres, il y a un boxing vers la classe Integer
mais dans le code de la KVM (Java embarqué), ce n'est pas le cas... tout est stocké sur l'espace "standard" qu'on attend (int, long, float, double ou pointeur)
?? Ah bon ? la spec. du bytecode a changé ? On ne peut plus empiler des types primitifs sur la pile d'appel ?
Il faudrait prévenir Sun car leur documentation n'est plus a jour.
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Non c'est toi. Je parle de la même chose qu'eux.
xLOAD et xSTORE, utilisés dans ASM, tu crois que c'est quoi ?
Pour un modo tu ferais mieux de commencer par te modérer toi même.
Le seul problème c'est que ton premier message ne parlait pas de xLOAD et xSTORE mais uniquement d'ASM qui est en premier lieu pour un programmeur l'acronyme d'assembleur... Un peu hors sujet de ce point de vue. Si tu veux donner un sens différent à une abréviation couramment utilisée en informatique, précise ce dont tu parles (la librairie suivante dans notre cas) et ne t'offusque pas si tu n'es pas immédiatement compris.
--
Jedaï
1 point partout:
@nicØB: tu devrais dire "objectweb-asm" pour eviter les confusions
@Jedai: il avait précisé de quoi il parlait au post 899 (et meme avant)
Peace And Love.... ce n'est que de l'informatique.
ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.
Non, c'était SuperNavide et il disait bien ObjectWeb Asm, du coup je n'ai pas fait le lien... Ca m'apprendra à écrire quand je suis fatigué (et pas de bonne humeur). Enfin pour la suite du débat il serait préférable d'utiliser le nom complet de la librairie pour éviter les confusions.
--
Jedaï
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