IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Interface graphique C ou C++


Sujet :

C++

  1. #1
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2017
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par d�faut Interface graphique C ou C++
    Bonjour � toutes et � tous,

    Je vous �cris ce message car je suis un peu perdu � vrai dire ... Je souhaite d�velopper un logiciel avec interface graphique. On nous enseigne g�n�ralement � l'�cole que le mieux pour faire une interface graphique est le C++. Je l'avais donc pris pour acquis. Toutefois, pr�f�rant le C au C++ j'ai fais quelques petites recherches pour ce projet et je me suis aper�u qu'il existait des API en C pour programmer des interfaces graphiques (sur Visual Studio 2010 sur Windows je pr�cise). D'apr�s les diverses discussions que j'ai pu voir, j'aurais tendance � partir sur GTK+. Ma question est donc la suivante : Quelle est l'int�r�t de programmer en C par rapport au C++ ? Dans quel cas je dois programmer en C et dans quel cas je dois programmer en C++ ? D'autant plus que j'ai parfois l'impression qu'on peut inclure du C dans du C++ m�me si g�n�ralement les programmeurs crient lorsque l'on dit ca ... Pourriez-vous m'orienter s'il vous pla�t ? Me donner une raison peut-�tre est-ce d� � la portabilit� du C par rapport au C++ ou ...
    Merci d'avance pour votre aide,

    Cordialement,
    esc39

    PS : je sais que cette discussion fait doublon avec elle poster sur le forum C mais je souhaiterais �galement avoir l'avis des experts en C++ ^^

  2. #2
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    PS : je sais que cette discussion fait doublon avec elle poster sur le forum C mais je souhaiterais �galement avoir l'avis des experts en C++ ^^
    C'est tr�s bien, il faut avoir les 2 sons de cloches.

    On nous enseigne g�n�ralement � l'�cole que le mieux pour faire une interface graphique est le C++.
    C'est un peu du nimportenawak.

    Le fait de facilement faire une interface graphique, c'est l'existante de biblioth�ques graphiques ou pas.
    Or C et C++ ne d�finissent pas de biblioth�ques graphiques "standards", contrairement � bien des langages comme JAVA ou VB6.

    Il existe des biblioth�ques graphiques aussi bien en C quand C++.
    Et, en tant que C++iste, je trouve les biblioth�ques graphiques C++ plus "concises".

    L'avantage du C sur le C++, c'est que son interop�rabilit�, donc, il est possible (mais pas recommand�) de facilement utiliser une biblioth�que graphique C en C++.
    L'inverse, c'est beaucoup plus chaud (quasi rien de fiable et d'utile).

    (sur Visual Studio 2010 sur Windows je pr�cise).
    Bin, d�sol� de te le dire mais Visual Studio, MSVC pour �tre pr�cis, est un compilateur C++ et non C.
    Vous ne pourrez pas compiler du code C avec MSVC. En C, les VLA (Variable Length Arrays) sont autoris�s et MSVC ne les supporte pas et ne les supportera jamais (l'�quipe de VS a ent�rin� qu'ils ne cherchent "que" la compatibilit� avec les standards C++ et aucunement les standards C) .
    Mais vous pouvez utiliser les API C en C++ de mani�re presque transparente.

    j'aurais tendance � partir sur GTK+
    GTK+ a �t� impl�ment� en C, il dispose des connecteurs � toute une ribambelle de langage, donc le C++.

    Si c'est pour faire que du C++, GTK+ n'est pas forcement ce qu'il y a de plus "naturel".
    C'est plus pour des projets C ou multi-langages, car C++ dispose de biblioth�ques graphiques nativement C++ et "portable" comme Qt.

    Quelle est l'int�r�t de programmer en C par rapport au C++ ?
    Beaucoup de plate-forme, surtout dans l'embarqu�, ne dispose pas de compilateur C++ (ou le constructeur le vend beaucoup plus cher).

    Dans quel cas je dois programmer en C
    Si vous devez faire des modules interop�rables avec plusieurs langages et que vous ne connaissez pas toutes les subtilit�s du C++, par exemple.

    qu'on peut inclure du C dans du C++
    Non, mais on peut avoir du code qui ce compile aussi bien en C qu'en C++, car il utilise que les choses communes aux 2 langages.
    Le r�sultat de la compilation de ce m�me code par 2 compilateurs peut �tre tr�s diff�rent (m�me si le l'ex�cution est tr�s souvent proche).

  3. #3
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2017
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par d�faut
    Tout d'abord merci beaucoup du temps pass� et de toutes ces explications. Une autre question : on a tendance � nous vendre le C++ mieux que le C je suppose parce que c'est un langage de Programmation Orient�e Objet mais est-ce si mieux que le C ? En terme de performance etc.

    Concernant Visual Studio je ne suis pas d'accord avec toi. Il est possible de d�finir son compilateur lorsque tu vas ici : Project Properties -> C/C++ -> Advanced -> Compile As -> C
    A moins que ce ne soit que illusoire ^^

    Une autre question revient donc : est-il possible de compiler du C avec un compilateur C sur MSVC ?
    Merci d'avance,

    Cordialement,
    esc39

  4. #4
    Membre averti Avatar de no. 26
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2017
    Messages
    13
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2017
    Messages : 13
    Par d�faut
    Citation Envoy� par esc39 Voir le message
    Tout d'abord merci beaucoup du temps pass� et de toutes ces explications. Une autre question : on a tendance � nous vendre le C++ mieux que le C je suppose parce que c'est un langage de Programmation Orient�e Objet mais est-ce si mieux que le C ? En terme de performance etc.
    En terme de performance, le C++ est quasi comparable au C.

    Historiquement, le C++ n'est que du "C with class", c'est � dire du C sur lequel on a "greff�" un ensemble de mot cl� permettant de r�aliser de l'orient� objet. L'extension de cela est que le C++ int�gre nativement toute les "features" du C, avec son lot de facilit� et de m�salliance ( coucou les pointeurs ). De ce fait, on avait tendance � dire qu'un d�veloppeur C pouvait facilement faire du C++ car " c'est la m�me chose ".

    Par contre, avec l'arriv� du C++ moderne ( C++11 et plus ), la donne change. Il y a toute une pile de classe et d'�l�ment qui ont fait leur arriver pour permettre une utilisation du C++ plus "orient� objet", et se d�tacher +/- compl�tement de ce qu'est le C.

    Le C et le C++ �tait � l'origine assez semblable dans la mani�re de travailler, mais �a c'�tait avant. Il n'y en a pas un qui est meilleure que l'autre, juste un langage plus adapt� � r�aliser un objectif que l'autre.

    Concernant Visual Studio je ne suis pas d'accord avec toi. Il est possible de d�finir son compilateur lorsque tu vas ici : Project Properties -> C/C++ -> Advanced -> Compile As -> C
    A moins que ce ne soit que illusoire ^^
    �a l'est. Un compilateur C++ est tout � fait capable de compiler un code C. La syntaxe du C et du C++ sont assez similaire. Un compilateur C++ conna�t toute la syntaxe du langage C. Ce qui va changer c'est le fait de compiler vers une cible "C++" ou vers une cible "C". Sans rentrer dans le d�tail, le fait de compiler vers une cible C++ va forcer le compilateur � cr�er de nouvelle structure (pour supporter l'orient� objet, ce genre de chose).

    Une autre question revient donc : est-il possible de compiler du C avec un compilateur C sur MSVC ?
    Merci d'avance,
    Cordialement,
    esc39
    Oui. Il n'existe pas de compilateur C attitr� fournit par Microsoft. Il propose un compilateur C++ qui, par extension, peut compiler vers du C.

  5. #5
    R�dacteur/Mod�rateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 153
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 38
    Localisation : Canada

    Informations professionnelles :
    Activit� : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 153
    Billets dans le blog
    4
    Par d�faut
    - VS est un IDE, tu peux mettre le compilo de ton choix en modifiant les param�tres de ton projet
    - le compilo par d�faut, msvc, est C++
    - le C est en gros un sous-ensembles du C++, tant que tu n'utilises pas de fioritures (coucou les VLA), tu peux inclure du C dans du code C++, il sera compil�
    - la POO est tout autant possible en C, class et h�ritage ne d�finissent pas POO
    - on ne va pas refaire le d�bat C vs C++, je te laisse googler les millions de r�sultats � ce sujet
    - le choix du langage est ton choix
    - tu trouveras des lib graphiques en C comme en C++
    - les performances � code �quivalent sont �quivalentes, les pertes de performances de l'un ou l'autre viennent d'une mauvaise utilisation (dynamic_cast, virtual dans tous les sens, ...), sans parler des mauvais algorithmes
    Pensez � consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation r�seau ?
    Aucune aide via MP ne sera dispens�e. Merci d'utiliser les forums pr�vus � cet effet.

  6. #6
    Expert confirm�
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    F�vrier 2005
    Messages
    5 505
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 53
    Localisation : France, Val de Marne (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 5 505
    Par d�faut
    Concernant Visual Studio je ne suis pas d'accord avec toi. Il est possible de d�finir son compilateur lorsque tu vas ici : Project Properties -> C/C++ -> Advanced -> Compile As -> C
    A moins que ce ne soit que illusoire ^^
    https://visualstudio.uservoice.com/f...23-c99-support
    https://herbsutter.com/2012/05/03/re...ut-vc-and-c99/
    T'as plus qu'� tester un VLA (norme C99) dans un code "C" avec MSVC, pour voir.

    on a tendance � nous vendre le C++ mieux que le C je suppose parce que c'est un langage de Programmation Orient�e Objet
    C++ est multi-paradigme (proc�durale (oui JAVA est POO mais pas proc�dural), POO, fonctionnel, g�n�rique et peut-�tre encode d'autre).

    mais est-ce si mieux que le C ? En terme de performance etc.
    Je crois que @Bousk a bien r�pondu � cela.

    est-il possible de compiler du C avec un compilateur C sur MSVC ?
    Qui n'existe pas LOL.

    Par contre, avec l'arriv� du C++ moderne ( C++11 et plus ), la donne change.
    LOL, la tronche du compilateur C quand il se prend une classe ou un template dans les dents. (m�me "struct" C++ ne passe pas dans du C, et cela m�me avant 1990).

    �a l'est. Un compilateur C++ est tout � fait capable de compiler un code C.
    Non, cf. la documentation des compilateurs C++ les plus courant donc aucun ne support le STANDARD C99.
    Sinon, � ce prix l�, un compilateur C++ est capable de compiler du JAVA, du moment que le code n'utilise pas les fonctionnalit�s sp�cifiques JAVA.

    La syntaxe du C et du C++ sont assez similaire.
    Aussi similaire que JAVA et C#.

    Un compilateur C++ conna�t toute la syntaxe du langage C.
    BIN NON, C99 etc... et comment une struct est interpr�t�e ? � la C ou � la C++ ???

    c'est le fait de compiler vers une cible "C++" ou vers une cible "C"
    La cible d'un compilateur, c'est un code binaire, pour la plateforme cible, pas un langage.

    Sans rentrer dans le d�tail, le fait de compiler vers une cible C++ va forcer le compilateur � cr�er de nouvelle structure (pour supporter l'orient� objet, ce genre de chose).
    Moi, j'aimerai que tu entres dans les d�tails, parce que le "Hello Word" en C ou en C++, il n'y pas de "nouvelle structure" dans la version C++. (Le RTTI, c'est pas de base en C++).
    C'est le genre d'argument compl�tement foireux qu'il faut arr�ter de propager.

    Il propose un compilateur C++ qui, par extension, peut compiler vers du C.
    Non, la cible d'un compilateur n'est pas un langage, bordel.

    EN RESUME, LE C ET LE C++, C'EST PAS PAREIL !!!

    tu peux inclure du C dans du code C++, il sera compil�
    Comme on peut aussi inclure de l'assembleur dans du code C ou C++.

  7. #7
    Membre chevronn�
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 252
    Par d�faut C vs. C++, langage de balisage et plates-formes
    Faut choisir aussi en fonction de ton exp�rience ou tes envies. Plut�t C ou C++ ? Par contre c'est pas un hasard si la majorit� des biblios sont en C++ et perso je trouve ce dernier bien plus naturel et adapt�. Un tout autre d�bat et pas limit� � l'IHM !

    Une bonne pratique de toutes fa�ons serait de privil�gier la d�finition de ton interface � l'aide d'un langage de balisage. Par exemple avec GTK+/GTK-- il y a Glade XML. On trouve des �quivalents du c�t� de Qt, wxWidgets & Cie. Avantages : Ind�pendance du langage, s�paration avec son code, pas besoin de recompiler en cas de changement mineur�

    Enfin les plates-formes vis�es sont � consid�rer donc je rejoins un commentaire pr�c�dent. Application de bureau ? Pour du mobile ? Qt est tr�s multi par exemple.

    PS : Pourquoi pas avoir plut�t post� dans un forum C et C++ ? Celui des biblios par exemple�

  8. #8
    Membre habitu�
    Homme Profil pro
    �tudiant
    Inscrit en
    Mai 2017
    Messages
    11
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Jura (Franche Comt�)

    Informations professionnelles :
    Activit� : �tudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2017
    Messages : 11
    Par d�faut
    Merci beaucoup de m'avoir �clairer sur tous ces sujets. Je constate �galement que la communication faites autour du sujet C/C++ n'est pas des meilleurs au vue des divergences des r�ponses ^^ En tout cas, j'ai compris ce que j'avais � comprendre et je vous en remercie.

    Cordialement,
    esc39

  9. #9
    Expert �minent

    Femme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    D�tails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par d�faut
    En fait pour commencer, comprends que "C/C++" est une grosse erreur. C et C++ sont deux langages distincts, diff�rents, et aucun des deux ne contient int�gralement l'autre.

    Le fait est qu'une grande partie du C est int�gr�e dans le C++, et qu'elle repr�sente une petite partie des possibilit�s du C++.
    Par exemple, l'ajout des fonctions membres (des classes ou structures) en C++ a permis l'ajout du constructeur et du destructeur.
    On pourrait croire cela n�gligeable, mais cette seule capacit� permet la cr�ation des "smart pointers" qui clarifient et simplifient �norm�ment la gestion de la m�moire. Les fuites de m�moire deviennent quasiment impossible

  10. #10
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par d�faut
    Si ta question est de savoir lequel des deux langages permet de faire du code le plus facilement maintenable pour une interface graphique, je vais me risquer � donner un point de vue assez tranch� : globalement, le C++ est meilleur.

    Mais si tu es plus heureux en programmant en C qu'en C++ et que tu pr�f�res d�crocher des stages et des jobs en langage C, fais ton programme en C.
    Moi, personnellement, si je me suis orient� vers du C++ plut�t que vers du Java (par exemple), c'est parce que je pr�f�rais programmer en C++.

    Ceci �tant dit, il faut que je justifie pourquoi que pense qu'une interface graphique serait plus maintenable en C++ qu'en C :
    • Le C++ permet d'�crire du code plus concis qu'en C :
      • Le C++ offre les espaces de noms et la surcharge. Ainsi, � la place d'une fonction du style MonProjet_MonType_getMachin en langage C, la m�me fonction s'appellera simplement getMachin en C++.
      • En C++, � la fin d'un bloc, les destructeurs des objets automatiques sont automatiquement appel�s. En langage C, il faut appeler explicitement les fonctions qui lib�rent les ressources.
      • Le C++ offre les exceptions pour lesquelles il n'y a pas besoin d'�crire explicitement du code pour les repropager. En C, quand une fonction retourne un code d'erreur qu'on a besoin de repropager, il faut �crire un bout de code explicite. On se retrouve alors avec des if(codeErreur == 0) ou if(codeErreur != 0) un peu partout dans tout le code.
      • Le C++ permet de surcharger les op�rateurs.
    • Le C++ permet de faire de la POO (programmation orient�e objet) plus facilement qu'en C. Pour les interfaces graphiques, c'est souvent tr�s pratique.
    • Le C++ permet aussi de faire de la programmation g�n�rique avec des templates. En C, quand on fait de la programmation g�n�rique, soit on utilise des void* qui ne sont pas type-safe, soit on �crit tout un amas de macros ind�boguables. A propos de ces macros, voici un article sur la programmation g�n�rique en C �crit pas un pro-C avec un bout de code associ�.
    • En C++, on peut plus facilement demander au compilateur de nous taper dessus quand on ne respecte pas les r�gles.
      Par exemple, l'encapsulation est mieux support�e par le C++, avec le mot-clef private. En C, le seul moyen de faire de la vraie encapsulation sans pouvoir gruger le compilateur, c'est d'utiliser des pointeurs opaques, mais �a r�duit un peu les performances.

    Il y a aussi d'autres raisons, mais je vais m'arr�ter l� pour l'instant.

    J'ajoute cependant une nuance : Pouvoir tirer profit des avantages du C++ demande de bonnes pratiques et de l'entra�nement. Par exemple :
    • L'h�ritage (de la POO) peut �tre un pi�ge s'il est mal utilis�. Par exemple, des d�veloppeurs font de l'h�ritage l� o� le mieux aurait �t� de l'encapsulation.
    • Il faut ma�triser le RAII. Sinon, on se retrouve facilement avec des ressources non lib�r�es, surtout si le code peut lancer des exceptions.

  11. #11
    Membre tr�s actif Avatar de Matthieu76
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mars 2013
    Messages
    568
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (�le de France)

    Informations professionnelles :
    Activit� : Consultant informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mars 2013
    Messages : 568
    Par d�faut
    En tout cas pour des programmes en C++ je te recommenderai l'utilisation de Qt pour faire tes interfaces graphiques. Je trouve que la prise en main ce fait tr�s rapidement. Avec Qt Creator, pas besoins de coder les fen�tres, boutons et autres �l�ments graphiques, il suffit simplement de les ajouter et les placer via une interface puis d'aller � la fonction associer dans ton code comme par exemple la fonction qui se d�clenche � l'appuis de ton bouton. Ca fait gagn� un temps fou et c'est plus "propre".

Discussions similaires

  1. R�ponses: 2
    Dernier message: 29/03/2004, 18h29
  2. interface graphique utilisateur, que faut-il utiliser?
    Par Missvan dans le forum PostgreSQL
    R�ponses: 3
    Dernier message: 01/03/2004, 12h18
  3. Application multiplateforme avec interface graphique
    Par TNorth dans le forum Choisir un environnement de d�veloppement
    R�ponses: 2
    Dernier message: 31/01/2004, 18h55
  4. [Kylix] Interface graphique pour lognes de commande linux
    Par lecharcutierdelinux dans le forum EDI
    R�ponses: 6
    Dernier message: 29/08/2003, 10h20
  5. plugin interface graphique
    Par jocelyn dans le forum Eclipse Java
    R�ponses: 2
    Dernier message: 13/08/2003, 09h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo