Pourquoi il y aurait un problème ?Citation:
S'il y a le moindre problème, on a du mal à savoir ce qui s'est mal passé.
Les macros font derrière appel a connect.
Version imprimable
Pourquoi il y aurait un problème ?Citation:
S'il y a le moindre problème, on a du mal à savoir ce qui s'est mal passé.
Les macros font derrière appel a connect.
Le problème, ce n'est pas l'appel à connect, c'est tout ce qui est attenant aux macros, les erreurs qui peuvent en découler, l'obligation d'avoir une macro pour le début de la table, pour la fin et s'il y a le moindre souci, le message d'erreur est incompréhensible.
Ce que je ne comprend pas , c'est pourqoi il y aurait une erreur.
Au mieu il ya une erreur dans le type d'argument que la fonction recoit ou plus con on a oublie de définir la fonction.
Mais en 1.5 and d'utilisation de wx , je n'ai jamais eu de problème de ce coté.
Il peut y avoir une erruer :
- s'il y a un type template
- s'il y a une opération à effectuer sur la variable
- si on oublie de fermer la table
- ...
[QUOTE=Miles]Il peut y avoir une erruer :
- s'il y a un type template
On utilse peut/aps de template avec les composant de wx.
http://www.wxwidgets.org/manuals/sta...html#templates
Après pour les partie crée de toutes pièces , ca c'est une autre hsitoire.
?? .On la fait , c'est tout.Citation:
Envoyé par Miles
Ca ce voit sans difficulté pour put qu'on indente correctement sa table.Citation:
Envoyé par Miles
c'est hors sujet, mais
c'est quand meme un peu du foutahe de tronche ca. Ca sent la vieille excuse pour dire j'ai pas envie d'en faire.Citation:
Envoyé par Doc WX
GCC (meme la version mingw) et Visual 2003 sont tous les deux assez proche au niveau de la gestion des templates (meme si j'ai note des differences irritantes).
En code template j'ai souvent atteint les limites de visual C++ 2005 (erreurs de compil alors que ca devrait marcher, etc) mais j'ai toujours trouve un moyen de faire du code compatible gcc/comeau/intel C++/visual C++. Et pourtant mon code templatise est pas trivial.
Boost fait des trucs bien pire que mes templates et leurs trucs sont portables sur de nombreuses platformes
Qt a admis avoir fait un preproc parce que a l'epoque de Qt le support des templates etait moisi. Depuis ils en sont revenus.
L'explication est vaseuse, sérieusement...
Et rien n'empêche d'utiliser un widget maison template qui pourra avoir un souci (faut rajouter des parenthèses pour que ça passe)
Le truc, c'est que si on passe a+b, on n'est pas sûr du résultat, et je ne parle pas de a++. C'est typiquement pour ce genre d'erreur qu'on déconseille les macros.
Il aurait été plus facile d'utiliser d'une certaine manière le RAII pour cela, mais bon.
+1...
Je me sers souvent des templates (trop ? :aie:) depuis un bon moment, et j'ai du pour des petits projets ou simplement par défi faire en sorte que mon code soit accepté par des compilateurs pas assez à jour sur le sujet.
La preuve vivante que c'est possible est Boost. ASL et Loki se servent aussi pas mal des templates, et pourtant aucun soucis.
Et pourtant, comme Qt le montre, le policy-driven development pour des GUI ça se passe très bien, par exemple.
Ca sent la decision faite au debut du projet pour des raisons vraies a ce moment-la (1992) et qu'on commence (un peu tard peut etre) a remettre en cause.
A part que le preprocesseur est toujours necessaire.Citation:
Qt a admis avoir fait un preproc parce que a l'epoque de Qt le support des templates etait moisi. Depuis ils en sont revenus.
Memes causes, memes effets. On vit avec le passe.
Comme quelqu'un l'a deja ecrit, gtkmm est plus proche de ce qu'on concevrait maintenant.
Oui , mais c'est rare d'avoir besoin de templétiser des widgets de base.Citation:
Envoyé par Miles
Euh la heule des macros dans les table d'event c'est ca :Citation:
Envoyé par Miles
Et celle des fonction c'est ca :Code:
1
2 EVT_BUTTON (BUTTON1,MyFrame::OnButton1)
[/CODE]Code:
1
2 void MyFrame::OnButton1(wxCommandEvent & event){/*... */}
Il aurait été plus facile d'utiliser d'une certaine manière le RAII pour cela, mais bon.[/QUOTE]
On peut : Connect dans le constructeur , Disconnect dans le destructeur.
Edit : je commence a avoir mare de répondre surtout qu'il y personne pour m'aider a argumenter mais plusieurs pour argumenter contre moi :cry: .
Je vais donc tier ma conclusion partielle:
Pour des applications bureautique 'normale' : wx vaut Qt.
Pour une utilisation plus poussé : Qt a un avantage car il définit plus de widgets de base et son sytème d'event est dans doute légerement plus modulable.
En conclusion , je mettrai 4.5/5 a Qt et {3.5|4}/5 a wx (3.5 car certain widgets de Qt sans pas dispo chez wx).
C'est lorsque l'on donne la possibilité de personnaliser le comportement des classes. Ceci est fait grâce aux templates.
Pour plus d'infos, mon article :)
Si mes souvenirs sont bons, on peut faire cela pour le redimensionnement (comportement lors d'un redimensionnement -> personnalisable), et quelques autres endroits que je ne me rappelle plus.
Pas forcément, on peut aussi faire ça avec un héritage, on palre alors plus de pattern stratégie, mais c'est en gros la même chose.
C'est la même chose sauf que l'un est déterminé à l'exécution, l'autre à la compilation.
En combinant les deux, on peut avoir quelque chose de sympa, dont une partie est fait à la compilation, et l'on peut cependant changer le comportement pendant l'exécution.
C'est parce que tu n'utilises pas les bons outils.
Au contraire, C++ est bien plus adapté pour faire ce genre de choses que les langages de script populaires.
En particulier, du côté performance et extensibilité, en C++, les applications web peuvent réellement être écrites de manière asynchrone, sécurisée, et très réactive, en décomposant l'acceptation, le chargement et la gestion des requêtes.
Bien évidemment ce n'est possible qu'avec FastCGI ou SCGI.
Voir par exemple Boost.CGI, bibliothèque en cours de développement.
Il y a aussi simplement des abstractions de haut niveau simples pour créer facilement des "scripts CGI" en C++, et non pas des serveurs complets, come cgicc.
tu perds aussi pas mal de temps à recompiler le projet quand tu veux simplement corriger un bug, C++ est p-e bien, mais oublie borland à ce niveau là.
Je préfère de loin m'amuser à développer en D pour obtenir la même qualité.
Le problème que j'ai, est que j'utilise de mauvais outils, que mes classes C++ sont partagées avec Delphi, et Java via un binding SWIG.
D'ailleurs, je me demande si le partage de classes via un connecteur C++->Delphi écrit en C++ est intéressant par rapport à des outils comme COM, & Co.
Tout est intéressant pas rapport à COM... En fait, le binding entre COM et le C++ est une horreur à gérer, même si ATL améliore un peu les choses. Le plus rageant, c'est qu'on se dit qu'en fait, il aurait peut être suffit de peu por avoir un binding presque transparent...
maintenant que j'ai ici resume tous les arguments evoques plus haut il serait temps de grandir au dela de "je prefere le C++ au Java".Code:
1
2
3
4
5
6
7 LANGAGES = [C++, java, python, perl, C#, C, Haskell, Delphi, PHP, LaTeX, LISP, D ] LANGAGES += LANGAGESOUBLIES for L1 in LANGAGES for L2 in LANGAGES if L1 != L2 print "mon %(L1) et ben il est achement mieux que ton %(L2)!!!"
Comme je l'ai deja dit, on peut tout faire en C++ si ca vous chante. Mais vous vous privez d'utiliser les meilleurs outils disponibles. Je ne supporte pas ce genre d'argumentaire ou on retrouve toujours les memes idees preconcues de gens qui preferent le C++ par rapport a TOUT ce qui existe, sans comprendre que 3 lignes de Java peuvent etre equivalents a 25 lignes de C++ tout comme 3 lignes de C++ peuvent etre equivalent a 25 lignes de Java.
Vous preferez utiliser les mauvais outils, vous rencontrerez des problemes de taille dans vos applications que les autres n'ont pas.
Java est particulierement adapte aux serveurs car par exemple java ne "crash" pas, il est beaucoup plus robuste que C++. Faites une access violation en C++ et vous devrez aller sur le serveur relancer le programme. Faites un leak memoire et vous devrez redemarrer le serveur tous les matins.
Les programmes Java et les bibliotheques sont prevues pour resister a ce genre de programme, pas le C++.
je refuserai categoriquement d'engager dans ma boite un "fanboy" du C++ qui passera son temps a repeter qu'"on peut le faire en C++" sans comprendre les avantages du Java.
Et je suis pas un fan du java, je connais assez mal le langage! je prefere le C++. Mais il faut savoir sortir de sa boite a outils le meilleur outil pour travailler, et pas juste le seul outil que vous connaissez...........
enfin une réponse que j'aime lire.
au boulot, C++ est de rigueur.
Pour m'aider à avancer dans mon développement, je me crée des petits outils basés sur Ruby pour me générer du code car les outils dont j'aurais réellement besoin me semblent inaccessible, et non de ma propre faute.
En C++ tu peux te créer des outils qui te permettent de programmer de la même manière que tous les autres langages, et avec une performance égale sinon mieux.Citation:
Comme je l'ai deja dit, on peut tout faire en C++ si ca vous chante. Mais vous vous privez d'utiliser les meilleurs outils disponibles.
C'est ce qui fait la puissance de C++ par rapport aux autres langages : tu peux construire des abstractions de complexité arbitraire par dessus des concepts de bas niveau.
Un programme Java peut parfaitement planter, ou avoir un comportement mauvais, ou même de ne pas libérer la mémoire (très fréquent).Citation:
Java est particulierement adapte aux serveurs car par exemple java ne "crash" pas, il est beaucoup plus robuste que C++. Faites une access violation en C++ et vous devrez aller sur le serveur relancer le programme. Faites un leak memoire et vous devrez redemarrer le serveur tous les matins.
Ce genre de problème n'arrive aucunement en C++ en suivant les bonnes pratiques de base.
je n'ai pas envie de rentrer dans le debat de ton langage contre le reste du monde mais
je ne parle pas de comparer du java mal ecrit a du C++ bien ecrit. C'est typiquement le genre d'arguments avances qui n'ont de sens que pour ceux qui les ecrivent.Citation:
Un programme Java peut parfaitement planter, ou avoir un comportement mauvais, ou même de ne pas libérer la mémoire (très fréquent).
Ce genre de problème n'arrive aucunement en C++ en suivant les bonnes pratiques de base.
C++ est un tres bon langage, s'en servir partout c'est couper un steak avec un couteau suisse, on peut le faire mais c'est plus dur.
Même si tu as raison (à propos des langage), on ne parle du C++ parce que l'ont est dans le forum C++... Mais cela ne veut pas dire que les gens sont spécialement des fanatiques du C++ qui ne savent pas faire autre chose. C'est un peu prendre les gens pour des ...bip...
Le mieux serait de faire un post sur quels langage pour quel problème. Ou pour le forum C++, C++ vs les autres. Si t'es motivé...
les 9 pages de discussion ont ete generees par ma simple remarque "C# est plus adapte pour les IHM"
donc il n'y a absolument aucune chance que je fasse un post qui me mettrait a dos les utilisateurs de C++, de python, de Java, de Ruby... etc.
Je pense que certaines personnes ne sont pas pretes a apprendre que d'autres concepts de programmation, comme Prolog, existent dans le monde.
lol,
Non, mais faut juste arrêter de dire que les gens n'y comprennent rien. C'est en partie pour cela que j'avais fait le poste C et le C++ mythe et realité .
J'aime pas non plus les extremistes :mouarf:
je vois ce que tu veux dire, donc désolé, pardon aux fammilles toussa ^^
Ta réponse montre clairement que tu n'a pas compris les propos et l'argument de loufoque qui consiste à dire que programmer en C++ n'est pas utiliser ce fameux couteau suisse pour couper la viande ; mais par nature, permet de construire un "coupeur de steak" plus efficace.
Argument et discours auquel j'adhère totalement !
Certes.
Le souvenir que j'en garde est que cela reste bien plus agréable à manipuler que les bindings Corba. Je dois faire trop de Corba dans des situations dégradées (tests de robustesse avec pertes de machines, cables réseaux débranchés, process tombés, etc), et j'avoue que je n'étais pas allé aussi loin dans mon utilisation de COM (je n'avais pas utilsé DCOM/COM+ à l'époque)
Pour Java, c'est bien gentil, mais les problèmes que l'on connait en C++ se rencontrent toujours : fuites, plantage de machine (windows, pas juste le programme), ... Certes, c'est plus rose, mais ce n'est pas la panacée. Une erreur de programmation reste une erreur de programmation. Java est un petit peu plus Idiot-proof, c'est vrai.
Mais bon.
+1 "à utiliser l'outil adapté" sinon.