Envoyé par Tommy31
on parle pourtant beaucoup d'une nouvelle norme...![]()
D'accord, dans ce cas là C++ est supérieur au java, car tu peux exprimer des relations sans qu'elles donnent lieu à un code binaire (le résultat de l'expression sera calculé par le compilateur).Envoyé par super_navide
En java, il n'y a pas de préprocessing.
J'attends des nouvelles de la norme depuis des années (2000). J'attendrais encore quelques années avant qu'elle soit totalement implémentée par les différents compilateurs et les différentes plateformes...Envoyé par gorgonite
A mes yeux, ce qui fait aujourd'hui office de norme et de catalyseur, c'est boost, une oasis dans le désert...
il est clair que la majorité des compilateurs ne se forcent pas à suivre la norme...
M$ est l'exemple parfait du non-respect des normes), mais cela est un gros défaut qui hérite déjà du c, et du "chacun se fait son compilo pour que le code soit pas utilisable avec celui du voisin
mais aussi bien en c qu'en c++, si l'on s'en tient à la norme, on arrive souvent à porter son code entre les compilos![]()
Ca j'en sais quelque chose. J'ai eu une mauvaise expérience des compilateurs microsoft, notamment vc++ 6 qui étaient poussifs dans la reconnaissance de certaines formes de templates, pourtant parfaitement dans les normes.
Je pense que gcc s'en tire beaucoup mieux.![]()
Envoyé par aliasjcdenton
Pour du temps réel, le C++ est le choix le plus évident.
Pour apprendre la conception objet, Java me semble un meilleur choix.
Java donne par contre de mauvaises habitudes(au débutant) sur la gestion des ressources. On laisse travailler le GC, il faut pourtant l'aider si on veut améliorer les performances (mettre les objet inutilisé à null par exemple).
Le développement en Java est plus simple que celui en C++, il nous abstrait de pas mal de problèmes techniques.
Ce sont les techniciens de Sun qui fournissent les bibliothèque C++ maison.
En C++, c'est un véritable casse tête pour travailler avec des String si on inclu d'autres bibliothèque qui utilisent leurs propres implémentation de String(X11/Motif, etc).
Bref,
Normal, X11 et Motif (du moins il me semble, faudrait que je vérifie) sont des bibliothèques écrites en C et non en C++, ce qui n'a absolument rien à voir. Pour le reste, la classe string du C++ standart marche très bien (même si j'admets qu'il lui manque encore quelques fonction du style split(), mais bon).Envoyé par f273345
Sinon, en ce qui concerne l'évolution du C++ dont il est question plus haut, je crois que le problème est que le C++ est avant tout un standart ouvert et qu'il faut mettre tous le monde d'accord pour le faire avancer, contrairement à des langages comme java qui sont poussés par les gars de sun.
Je pense que pour un développement il vaut mieux faire une bonne conception Objet avec un proto en JAVA qui sera plus facile a tester et a debugger et ensuite si il y a des problème de performance le redévelopper totalement ou en partie en C++ ou de générer du C++.
Je trouve que la problèmatique de traduction entre langage est intéréssente
Peut traduire du C++ en Java et inversement ?.
Par contre il y a un domaine C++ ecrase JAVA c'est pour l'écriture de formule mathématique qui manipule des vecteurs ou des matrices.
avec les constructeurs par recopie et la surcharge d'opérateur on peut faire des programmes très lisible et performant alors quand JAVA il faut mettre des objets en cache et faire attention ne pas en allouer sans raison.
On peut aussi allouer des objets sur la pile d'execution ce que java ne peut pas faire.
Il y a gcj qui compile le java en natif, avec le résultat que l'on connait : des performances médiocres. A mon avis les traductions automatiques ne sont jamais bonnes car elles ne font jamais appel aux particularités des langages. Comment un traducteur utiliserai l'api Sun. Comment décider de prendre un HashSet, un LinkedHashSet par exempleEnvoyé par super_navide
Un ben ca c'est problème qu'il faut creuser, le cerveaux humain arrive bien a le faire , il faut réeussir a comprendre et à trouver comment ilfait.Envoyé par kpouer
Du boulot en perspective....
Je sais pas si c'est vraiment judicieux. Si c'est un prototype, ca se refait vite dans un autre langage, si c'est un mec qui aime développer en java et doit faire du c++ ou l'inverse on en revient un peu au concept de .NET. Pour ma part j'ai toujours trouvé ca con, l'informatique c'est pour les gens qui peuvent s'adapter, on doit faire du java, on fait du java, on va pas faire du cobol et chercher un convertisseur.Envoyé par super_navide
Non .NET compile vers un même byte codeEnvoyé par kpouer
La traduction de langage repose sur la sémantique d'un grammaire
Exact maintenant que j'y pense, ca repose sur l'api qu'ils ont développé dans les 36 langages qu'ils supportent, j'étais focalisé sur le coup de programmer dans n'importe quel langage pour obtenir le même résultat. Je trouve ca idiot quand mêmeEnvoyé par super_navide
![]()
Le problème c'est que Swing commence à vieillir, et on utilise des classes assez mal concues, par exemple pas de modèle pour un JTabbedPane, l'utilisation de collections synchronisée (de l'ancienne api) dans des modèles de liste ou de table (par défaut), alors qu'elles ne seront accedées que depuis 1 seul thread (l'EDT)...Envoyé par kpouer
On pourrait rajouter depuis la sortie de java 1.5 l'absence de généricité et l'utilisation d'entiers (ou pire, de Strings) pour une option, au lieu d'une enum (bon ça c'est pareil pour SWT).
Mais bon tout ça c'est facile d'arriver après et de critiquer, une fois qu'on le résultat finiC'est juste que ça serait sympa un Swing 2 qui soit fait en utilisant les dernières technologies (java 5-6).
Voilà c'était mon souhait du jour (du mois même)![]()
Oui c'est le problème de la compatibilité ascendante. Pas facile a gérer comme questionEnvoyé par ®om
Quelqu'un connaitrait un framework en C++ pour produire du code C a l'execution ?
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 typedef FC int (*fc)(int ) FunctionC f = new FunctionC("int f(int c) { return c+1 }" ); FC fc = (FC)f.ptrFct()
Non c'est pas trop ce que je veux
c'est plutot
Code c : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef FC int (*fc)(int ) FunctionC f = new FunctionC(); f.addArgument("int","c" ) ; f.addInstruction( new Return( new Add( new Var("c") , new Int(1) ))) ; FC fc = (FC)f.ptrFct()
le framework génere le binaire lui même sans parser un source .
Envoyé par super_navide
T'es sûr qu'il génère le binaire et pas qu'il interprète ? Pour l'interpretation, ça doit être trouvable... (enfin, j'en connais pas). Pour la compilation, avec une instruction comme : FC fc = (FC)f.ptrFct()
Il faudrait compiler dans un fichier et charger dynamiquement la fonction (avec dlopen et tout ça...). Ca doit être délicat à faire![]()
C'est pas top d'utiliser un fichier il faut générer le binnaire en mémoire sans
avoir a utiliser un executable avec des fichiers
En Java c'est possible
Partager