Newsletter Developpez.com

Inscrivez-vous gratuitement au Club pour recevoir
la newsletter hebdomadaire des développeurs et IT pro

Débat : que choisir, Qt ou Microsoft .NET ?
C++ ou C# ? Le C# garde-t-il des avantages ?

Le , par vandamme, Membre confirmé
Salut,

Programmant depuis longtemps en .NET (C#), je m'interesse de plus en plus a la plateforme Qt depuis que celle - ci a ete reprise en main par Nokia en license LGPL.

Et du coup, je me demandais, devant la richesse de l'API Qt (GUI mais aussi threads, bases de données, XML, sockets, smart pointers), quels étaient encore les avantages de développer en C#, étant donné que la portabilité est le maître mot de Qt, ainsi que la puissance, grâce au C++...

Voilà, tout ceci fait partie de ma réflexion pour un nouveau projet de dev (client lourd), même si je pense pour l'instant ne l'implémenter que sous Windows.

Je ne sais pas quoi choisir entre Qt et .NET/C#...

Si vous avez des idées (pros et cons de chaque framework) pour me convaincre de basculer dans l'un ou l'autre monde je suis preneur...


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Alp Alp - Expert éminent sénior https://www.developpez.com
le 23/11/2009 à 20:20
Citation Envoyé par dev01  Voir le message
Euh ... très hasardeux .., Soit cela fait longtemps que tu n'as essayé Mono, soit tu n'as pas eu de chance

Dixit celui qui ne connait pas le status de Qt depuis les 5 dernières années.

Citation Envoyé par dev01  Voir le message
<mode provoc="on">
.NET/mono est bien plus portable que QT, il supporte IPhone et bientot Android
</mode>

Qt est PLEINEMENT SUPPORTÉ (sans restriction aucune) sur Linux, Mac OS, Windows, Symbian OS, l'OS actuel des Nokia et de manière non encore officielle iPhone et Android, et d'autres encore.

Merci.
Avatar de vandamme vandamme - Membre confirmé https://www.developpez.com
le 23/11/2009 à 20:31
Citation Envoyé par dev01  Voir le message
Une dernière chose à prendre en compte c'est l'outillage autours. Je ne connais pas bien les debugger et les EDI qui vont autours de QT mais la dernière fois que j'ai utilisé KDevelop, il n'était pas du tout à la hauteur de VS (ou même MonoDevelop), tant au niveau conception graphique des GUI, que par exemple debuggage des applications.

J'oubliais bien sur.
Etant un fan de VS, il existe bien sur un plugin (gratuit) permettant d'utiliser Qt avec VS pour les GUI, le debugger, intellisense, etc etc ... si on ne veut pas utiliser Qt creator.
Avatar de yan yan - Rédacteur https://www.developpez.com
le 23/11/2009 à 21:21
Citation Envoyé par dev01  Voir le message
<mode provoc="on">
.NET/mono est bien plus portable que QT, il supporte IPhone et bientot Android
</mode>

A preuve du contraire, monotouch n'est pas un portage .net sur iphone. Mais un binding de l'api de iphone en .net. D'ailleurs je ne suis même pas sure que tu puisse faire autre choses que du C#. Tu ne trouvera donc aucun outil de base du framework .net. C'est juste pour ne pas faire de l'objectif-C. Par contre, ils ont fait cela super bien.
Le portage de Qt exploite l'api mais garde l'interface du framework. Donc ton code écrire en Qt sera compilable sans modif sur Iphone.

Pour ce qui est de la portabilité, je veux bien une liste de plateforme supporté par mono pour m'en convaincre.

Départager l'un ou l'autre n'est pas chose aisée, mais personnellement, je base mon choix sur la richesse de la plateforme. .NET est, à mon sens, bien plus riche en fonctionnalité (surtout avec le Fx 4.0 qui va arriver) que ne peut l'être Qt. Le framework .NET ne vise pas seulement les applications GUI, il prend en charge l'ensemble des types d'applications possible : Web, Windows, Service Windows, Service webs, mobile, etc, etc, etc. Le framework est un ensemble cohérent de classe permettant de manipuler les données, le GUI, la configuration, l'installation, etc, etc, etc

si tu enlève la partie web, les deux framework ont la même richesse. Et chaqu'un leur points fort et point faible. Qt comme GTK ou wxwidget, ce n'est pas que de l'ihm.

A coté de cela, réduire .NET à C# n'est pas correct. Comme QT à ces binding, .NET à ses langages : C#, VB.NET, F#, etc, etc, etc. De plus .NET, même si c'est effectivement une machine virtuelle, est largement optimisé (il est vrai que l'expérience de Java à bien aidé les devs de .NET à ne pas refaire les même erreurs ), ce qui implique que la perte de performance est faible (attention je ne parle pas d'application Haute performance ou temps réel ou il faut le reconnaitre le C(++) demeure maitre). En plus d'une machine virtuelle bien foutue et performance, .NET c'est également un ensemble de fonction permettant de gérer la mémoire, les exceptions et toute ces choses qui font que le C++ peut être/ est un enfer

c'est Qt et non QT :p sinon, j'ai rien à contre dire.

Une dernière chose à prendre en compte c'est l'outillage autours. Je ne connais pas bien les debugger et les EDI qui vont autours de QT mais la dernière fois que j'ai utilisé KDevelop, il n'était pas du tout à la hauteur de VS (ou même MonoDevelop), tant au niveau conception graphique des GUI, que par exemple debuggage des applications.

VS est certainement le meilleur outil de dev. Ne serai-ce que pour faire du c++, mingw/gdb est bien moins agréable(quelque soit l'ide). Pour du dev Qt, vs marche très bien. Qt Creator deviens vraiment de plus en plus exploitable, et commence à faire concurrence à VS. Ils ont même amélioré considérablement l'exploitation de gdb.

Donc, pour revenir à la question, comme je l'avais demander, sans savoir pourquoi .net ne t'est pas suffisant, difficile de trouver des arguments.
Avatar de dourouc05 dourouc05 - Responsable Qt https://www.developpez.com
le 23/11/2009 à 22:00
Citation Envoyé par yan  Voir le message
Pour ce qui est de la portabilité, je veux bien une liste de plateforme supporté par mono pour m'en convaincre.


Pour Mono : http://www.mono-project.com/Supported_Platforms

Pour Qt : http://qt.developpez.com/doc/4.5/supported-platforms/

Qt supporte plus de plateformes que Mono, à ce que j'en peux voir.

Citation Envoyé par yan  Voir le message

si tu enlèves la partie web


Qu'entends-tu par "partie web" ? Pour l'affichage de pages web, Qt dispose d'un moteur wrappé : WebKit. Je n'ai entendu parler de rien de tel du côté dotNet/Mono.

S'il s'agit plus d'un côté serveur, DotNet propose d'utiliser du C# ou du VB.net dans l'ASP.NET, alors que je n'ai jamais entendu parler de quelque chose de semblable du côté Qt.
Avatar de yan yan - Rédacteur https://www.developpez.com
le 23/11/2009 à 22:16
Citation Envoyé par dourouc05  Voir le message
Qt supporte plus de plateformes que Mono, à ce que j'en peux voir.

et y as pas tous. Comme les deux os temps réelle supporté depuis peu.

Qu'entends-tu par "partie web" ? Pour l'affichage de pages web, Qt dispose d'un moteur wrappé : WebKit. Je n'ai entendu parler de rien de tel du côté dotNet/Mono.

.NET de microsoft, y as IE , et mono y as surement webkit(peut être grâce à gtksharp)

Citation Envoyé par dourouc05  Voir le message
S'il s'agit plus d'un côté serveur, DotNet propose d'utiliser du C# ou du VB.net dans l'ASP.NET, alors que je n'ai jamais entendu parler de quelque chose de semblable du côté Qt.

c'est de ca que je parlais. Pour un truc similaire, y as bien ca :
http://labs.trolltech.com/blogs/2009...th-qwebclient/
ou
http://www.webtoolkit.eu/wt qui est un framework proche de Qt.
mais bon, je ne pense pas que ce soit aussi puissant.
Avatar de dev01 dev01 - Rédacteur https://www.developpez.com
le 24/11/2009 à 8:53
Citation Envoyé par Alp  Voir le message
Dixit celui qui ne connait pas le status de Qt depuis les 5 dernières années.



Citation Envoyé par Alp  Voir le message
Qt est PLEINEMENT SUPPORTÉ (sans restriction aucune) sur Linux, Mac OS, Windows, Symbian OS, l'OS actuel des Nokia et de manière non encore officielle iPhone et Android, et d'autres encore.

Hum, comme quoi les blagues faut arrêter, les gens ne les comprennent pas ...

Citation Envoyé par Alp  Voir le message
Je ne relèverai rien de ce que tu as dit ici, dont la majeure partie témoigne du fait que tu es juste venu ici pour troller un bon gros coup plutôt que pour débattre technique. Si tu veux participer à ce débat, merci de te mettre au courant sur ce qu'est Qt aujourd'hui, ensuite on pourra discuter tranquillement.

C'est bien dommage, si je me trompe sur Qt alors je suis prêt à entendre tout les arguments, d'ailleurs les autres posts ont clairement montré que je suis passé à coté d'un ensemble de chose sur Qt au niveau de la richesse du framework. Maintenant je ne pensais que cette partie de ma réponse puisse être considéré comme un "troll", j'y expose un ensemble d'arguments cohérents et construits. A moins que je n'ai rien compris à Qt ( ) je ne crois que cela soit "troller" que de parler des langages utilisable avec le framework (Qt ou .NET). Bref comme dit la critique est facile ....

Citation Envoyé par yan
c'est de ca que je parlais. Pour un truc similaire, y as bien ca :
http://labs.trolltech.com/blogs/2009...th-qwebclient/
ou
http://www.webtoolkit.eu/wt qui est un framework proche de Qt.
mais bon, je ne pense pas que ce soit aussi puissant.

Effectivement je parlais bien d'ASP.NET et consort (webservice & WCF principalement), mais le projet du lab de trolltech à l'air assez intéressant.

Pour répondre à la question : Si les deux framework sont aussi équivalent alors il ne reste pour faire un choix que :
- le langage (même si Qt à son binding C#)
- Les outils
et surtout l'état actuel des connaissances et le temps d'apprentissage.
Avatar de xlegalles xlegalles - Nouveau Candidat au Club https://www.developpez.com
le 25/11/2009 à 11:57
J'ai l'expérience de .NET, Java et C++ mais je n'ai malheureusement jamais utilisé Qt: "malheureusement" parce que le peu que j'en ai vu est très intéressant ... Pourtant, j'ai tendance à penser que même si Qt est un excellent framework, il ne peut pas concurrencer .NET/Java dans le domaine de la productivité: même un très bon développeur C++ sera toujours moins productif qu'un bon développeur .NET/Java. Et ça, c'est vérifié dans les faits, vous pourrez dire ce que vous voulez. Qui plus est, je fais bien le distinguo entre "trés bon" d'un coté et "bon" de l'autre parce que là aussi il y a un bémol: le ticket d'entrée du C++ est bien plus élevé que .NET/Java, c'est bien pour ça que C++ perd du terrain. Attention! Je ne cautionne pas, je constate.

Donc perso, je jonglerais entre les 2 en fonction du contexte.

Ce qui me fait sourire, c'est ce débat sur la portabilité: faites du Java dans ce cas ! On s'en fout de la portabilité (en général) ! D'ailleurs dans ce cas, vous ne parlez pas de Chrome OS
Ce qui est important de mon point de vue, c'est l'interopérabilité. Et comme elle est en général bien assurée, cela permet de bien choisir les technos pour chacun des tiers de son architecture ...

Bref.
Avatar de dj.motte dj.motte - Inactif https://www.developpez.com
le 04/12/2009 à 22:51
Bonjour,

Je pense que le portage de .Net sur Linux reste une entreprise hasardeuse. Rien que pour installer MonoDevelop sur Linux on se retrouve avec des barrières de mises à jour.

Mono sur Linux prévient qu'il est incapable de gérer les dernières fonctionnalités de .NET.

Et comme il faut la dernière mouture de .NET mono sur Linux reste anachronique.
Avatar de 3DKermit 3DKermit - Membre à l'essai https://www.developpez.com
le 15/12/2009 à 10:45
Bonjour,

le post commence à vieillir, mais je voudrais ajouter un point qui m'a décidé :

travaillant dans l'image et la simulation 3D, je me retrouve souvent avec des formats exotiques.

il est facile en général de trouver une bibliothèque en C++ pour la lecture donc utilisable avec QT

Pour le .Net et le C#, c'est une autre histoire

C'est plus un choix de langage que de plateforme.

En revanche, j'ai un fort doute sur mes capacités à exploiter une lib C++ en .Net, donc mon argument est peut être caduque

Kermit
Avatar de MenshaKaine MenshaKaine - Membre régulier https://www.developpez.com
le 16/12/2009 à 10:48
Citation Envoyé par xlegalles  Voir le message
Pourtant, j'ai tendance à penser que même si Qt est un excellent framework, il ne peut pas concurrencer .NET/Java dans le domaine de la productivité: même un très bon développeur C++ sera toujours moins productif qu'un bon développeur .NET/Java. Et ça, c'est vérifié dans les faits, vous pourrez dire ce que vous voulez. Qui plus est, je fais bien le distinguo entre "trés bon" d'un coté et "bon" de l'autre parce que là aussi il y a un bémol: le ticket d'entrée du C++ est bien plus élevé que .NET/Java, c'est bien pour ça que C++ perd du terrain. Attention! Je ne cautionne pas, je constate.

Je ne connais pas assez bien les 3 frameworks pour les comparer mais je pense qu'on peut déjà trouver pas mal de chose de sympa dans Qt. Ensuite je pense que son développement va se poursuivre.

Après je suis d'accord sur la différence de productivité entre Java/C# contre C++ et aussi sur le "ticket d'entrée". Mais c'est aussi une différence d'esprit dans le métier.

Citation Envoyé par xlegalles  Voir le message
Ce qui me fait sourire, c'est ce débat sur la portabilité: faites du Java dans ce cas ! On s'en fout de la portabilité (en général) ! D'ailleurs dans ce cas, vous ne parlez pas de Chrome OS
Ce qui est important de mon point de vue, c'est l'interopérabilité. Et comme elle est en général bien assurée, cela permet de bien choisir les technos pour chacun des tiers de son architecture ...

J'ai participé à plusieurs projets industriels jusqu'à maintenant où la portabilité autant que l'interopérabilité était des problèmes important. Et je pense que le portabilité va être de plus en plus prépondérant.

Avatar de dourouc05 dourouc05 - Responsable Qt https://www.developpez.com
le 16/12/2009 à 11:26
Citation Envoyé par MenshaKaine  Voir le message
Je ne connais pas assez bien les 3 frameworks pour les comparer mais je pense qu'on peut déjà trouver pas mal de chose de sympa dans Qt. Ensuite je pense que son développement va se poursuivre.


De belles choses sont prévues pour Qt 4.7, comme les interface déclaratives. Mais aussi quelques API qui sont actuellement en test : notamment la suite du Network Framework, qui permettra d'envoyer nativement des messages depuis Qt (mail, SMS, MMS depuis tout OS supporté).

Citation Envoyé par MenshaKaine  Voir le message
J'ai participé à plusieurs projets industriels jusqu'à maintenant où la portabilité autant que l'interopérabilité était des problèmes important. Et je pense que le portabilité va être de plus en plus prépondérant.


Qt a déjà prévu l'affaire : plusieurs sociétés (voir news dans ce forum) préfèrent utiliser Qt, car cela leur permet de n'avoir qu'un seul code source pour toutes leurs plateformes.

Aussi, est-ce que Qt n'a pas une footprint plus légère sur les performances ? I.e. on peut apparemment l'utiliser sur un certain nombre de plateformes mobiles, mais permet-il d'obtenir les mêmes performances que le .Net FX pour mobiles (je ne me souviens plus du nom exact).
Offres d'emploi IT
Responsable protection des données H/F
Safran - Ile de France - Magny-les-Hameaux (78114)
Ingénieur conception en électronique de puissance H/F
Safran - Ile de France - Moissy-Cramayel (77550)
Responsable transverse - engagement métiers H/F
Safran - Ile de France - Corbeil-Essonnes (91100)

Voir plus d'offres Voir la carte des offres IT
Responsable bénévole de la rubrique Qt : Thibaut Cuvelier -