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 :

Le C/C++ Me Conviendrait-il ?


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre extr�mement actif
    Avatar de kedare
    Homme Profil pro
    SRE
    Inscrit en
    Juillet 2005
    Messages
    1 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Espagne

    Informations professionnelles :
    Activit� : SRE

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 549
    Par d�faut Le C/C++ Me Conviendrait-il ?
    Salut a tous !

    je programme actuellement en python ,
    mais je cherche un second langage de programmation (orient� objet), qui permette de faire du "natif" (sans interpreteur) , pour pouvoir distribuer plus facilement mon application (10mo une fenetre en python pour cr�e un exe ...) , je compte surtout faire des petites applications au debut
    j'h�site entre l'ocaml (dur dur le fonctionnel) , et le C/C++ (dur dur les pointeurs)

    j'ai essayer de faire un peut de C , je comprend presque tout ... sauf ... les pointeurs , la c'est l'horreur , je n'en vois pas l'utilit� et je n'y comprend pas grand chose
    j'ai entendu dire que l'on pouvais faire du C++ sans utiliser les pointeurs , c'est vrais ?
    c'est mieu de commencer par le C avant le C++ ou pas ? parceque j'ai du mal sans Programmation Orient� Objet (j'en ai toujour fait )
    quelle est le meilleur cours d'apres vous pour l'apprendre ?

    merci !

  2. #2
    Membre chevronn� Avatar de aziz jim
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Novembre 2005
    Messages
    455
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 455
    Par d�faut
    tu trouveras des r�ponses � toutes ces questions ici
    http://c.developpez.com/faq/cpp/

  3. #3
    R�dacteur/Mod�rateur
    Avatar de JolyLoic
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2004
    Messages
    5 463
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 51
    Localisation : France, Yvelines (�le de France)

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

    Informations forums :
    Inscription : Ao�t 2004
    Messages : 5 463
    Par d�faut
    Citation Envoy� par kedare
    j'ai entendu dire que l'on pouvais faire du C++ sans utiliser les pointeurs , c'est vrais ?
    C'est souvent un peu exag�r�. Je dirais Plut�t qu'il permet d'isoler l'utilisation de pointuers nu en quelques endroits bien d�finis, de fa�on � ce que la majorit� du code ne les manipule pas directement. Mais comprendre ce qu'est un pointeur reste � mon avis indispensable avant de pouvoir �crire un vrai programme (pour des programmes d'apprentissage, on peut s'en passer un certain temps).
    Ma session aux Microsoft TechDays 2013 : D�velopper en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage � la d�couverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'h�sitez pas � me contacter.

  4. #4
    Expert confirm�
    Avatar de Luc Hermitte
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2003
    Messages
    5 296
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyr�n�es)

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : A�ronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Ao�t 2003
    Messages : 5 296
    Par d�faut
    Et arriv� � la POO, les pointeurs sont vite indispensables.
    Par contre, c'est clair que dans l'apprentissage ils ne sont pas une notion cl� de la premi�re le�on de C++, contrairement au C.

    PS: je te d�conseille vivement tout ouvrage, tuto, ... qui cherche � t'enseigner le C/C++. C Tr�s bien. C++, tr�s bien aussi. Mais C/C++ -> chemin�e.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne r�ponds � aucune question technique par le biais de ce m�dia. Et de toutes fa�ons, ma BAL sur dvpz est pleine...

  5. #5
    tut
    tut est d�connect�
    Membre �clair�
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    D�tails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Par d�faut
    faut pas se faire une montagne des pointeurs... ce n'est pas si compliqu�. C'est juste une adresse en m�moire...

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    F�vrier 2005
    Messages
    183
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2005
    Messages : 183
    Par d�faut
    Le probl�me avec les cours traitant des pointeurs se sont le manque d'exemple permettant d'en voir l'int�r�t. Mais bon, au fure et � mesure des d�veloppements, on se rend compte vite que l'on en a besoin et �a fini effectivement par �tre compris un jour ou l'autre.

  7. #7
    Membre chevronn�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par d�faut
    Citation Envoy� par loacast
    Le probl�me avec les cours traitant des pointeurs se sont le manque d'exemple permettant d'en voir l'int�r�t. Mais bon, au fure et � mesure des d�veloppements, on se rend compte vite que l'on en a besoin et �a fini effectivement par �tre compris un jour ou l'autre.
    A condition d'avoir le temps...
    A d�faut, il risque de se retrouver vite coinc� avec des bugs li�s plus ou moins directement aux pointeurs, et si le sujet n'est pas maitris� ce sera tr�s rapidement l'impasse.

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Par d�faut
    Les pointeurs vont tr�s vite te devenir utiles lorsque tu aura besoin d'allouer de la m�moire dynamiquement. Le probl�me c'est qu'en g�n�ral, les allocations dynamiques viennent bien apr�s le cours sur les pointeurs dans la plupart des cours c++.
    En c++ il existe aussi les r�f�rences, qui permettent dans certains cas de remplacer les pointeurs.

    Mais un pointeurs, �a n'a rien de bien compliqu�, une fois que tu auras compris comment �a marche, tu va trouver �a tr�s simple (et tr�s utile).

    On ne peut pas vraiment dire qu'on peut ne pas se servir des pointeurs en c++. Cepandant, ils sont en g�n�ral beaucoup moins utilis�s qu'en C.

    Vu que j'ai le temps, je vais essayer de t'expliquer le principe d'un pointeur:

    Ton PC � de la m�moire vive (RAM). Quelque soit ton language de programmation, lorsque tu cr�e une variable, elle est stock�e � un endroit de la RAM. Par exemple, � l'adresse 100 (� la case 100 en gros).

    Un pointeur, ce n'est rien qu'une variable, qui occuppe une case en m�moire (par exemple l'adresse n�500).

    Cepandant, ton pointeur va contenir une valeur particuli�re (dit toi que c'est un nombre) qui correspond � l'adresse d'une autre variable.

    Par exemple, si notre pointeur (� l'adresse 500) pointe sur notre variable, il aura pour valeur 100.

    Pour modifier la variable on pourra �crire "*pointeur = nouvelle_valeur".
    Ce qui veut litt�ralement dire : "Ce que pointe "pointeur" = nouvelle_valeur".
    Ca revient � �crire "variable = nouvelle_valeur" mais tu verra que dans certains cas tu devra travailler avec des pointeurs (ou des r�f�rences en c++).

    Sinon, le c++ est un tr�s bon langage mais bien que �a va te changer de Python. Enfin une fois que tu maitrisera le concept de biblioth�ques, si tu sais utiliser Google, il se r�v�lera bien plus puissant que la plupart des autres langages.

  9. #9
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    Les pointeurs vont tr�s vite te devenir utiles lorsque tu aura besoin d'allouer de la m�moire dynamiquement.
    Ce qui est essentiellement utile pour faire des conteneurs de taille variable.
    Et pour �a tu utilises des classes sp�ciales, pas des pointeurs.

    Les ressources pour apprendre le C++ sur internet ne sont pas tr�s bonnes.
    Il est plut�t conseiller d'acqu�rir des livres.

  10. #10
    Membre �m�rite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par d�faut
    Bon, je vais aussi essayer de d�crire un peu ce que sont les pointeurs.
    Tout d'abord, les pointeurs c'est inutile. Ben ouais, avec du python tu n'en a pas et pourtant tu as la un langage permettant beaucoup plus de choses niveau syntaxe.

    Mais alors pourquoi on en utilise en C++? Ben... tu dois surement savoir qu'il y a une assez grosse diff�rence de performances entre le C++ et le python, c'est ca l'explication. En fait, le python utilise des pointeurs, il n'utilise m�me que ca, sauf que tu ne le vois pas. Quand tu passes un objet en argument d'une fonction et que cette fonction va modifier ton objet, apr�s la fin de cette fonction l'objet reste modifi�. Ceci s'explique par le fait que ce n'est pas une copie de l'objet qui a �t� pass� � la fonction, c'est une copie du pointeur de l'objet (qui permet donc de retrouver l'objet en lui m�me, ce dernier n'ayant jamais �t� copi�). En plus le python (tout comme le java, le c# et tous les autres langages purs objets) utilise un syst�me pour d�truire automatiquement l'objet quand il n'est plus utilis�.

    Or tous ces syst�mes, bien que g�niaux pour programmer, font perdre consid�rablement en optimisation. Le C++ est plus vieux et bien plus proche de la machine. En C++ quand tu d�clares une variable elle n'a pas de pointeur, tu y acc�des directement. Quand tu la passes � une fonction c'est une copie de la variable que tu passes. Donc tu peux modifier ta variable autant que tu veux ca ne sert � rien (m�me si le compilateur te laisse faire, j'ai toujours trouv� ca un peu idiot d'ailleurs), une fois la fonction termin�e la copie de la variable est d�truite point � la ligne.

    Quand tu utilises un pointeur, tu r�cup�res un "truc" qui permet de retrouver ta variable et pas une fulgaire copie. Si tu passes ce pointeur � une fonction c'est une copie du pointeur qui est effectu�e, mais cette copie te permet toujours de retrouver la variable elle m�me.

    Ca c'�tait pour le C, en C++ c'est bien diff�rent (les r�f�rences pour commencer, puis toutes les classes qui te filent un coup de main pour les op�rations de base). Mais on les utilise encore pour r�gler d'autres probl�me (surtout pour faire de l'orient� objet, car non, en C++ l'orient� objet ne tombe pas du ciel, il faut le simuler).

    Voila, j'�sp�re t'avoir aid� � comprendre. Accroche toi, il te reste encore un bout de chemin � parcourir pour arriver � faire du c++

  11. #11
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

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

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    En plus le python (tout comme le java, le c# et tous les autres langages purs objets) utilise un syst�me pour d�truire automatiquement l'objet quand il n'est plus utilis�.
    L'utilisation d'un ramasse-miettes n'est aucunement li�e � la caract�risation objet d'un langage.
    D'ailleurs le fait d'utiliser un ramasse-miettes pour tous les objets est une mauvaise id�e : cela n'aide qu'a g�rer la m�moire, pas les autres ressources avec lesquelles le d�terminisme du RAII (idiome de base de la gestion des ressources - et donc de la m�moire - en C++) est bien plus robuste.

    (surtout pour faire de l'orient� objet, car non, en C++ l'orient� objet ne tombe pas du ciel, il faut le simuler).
    Il ne faudrait pas exag�rer non plus.
    Bien qu'il soit n�cessaire de r�ferencer d'autres objets (avec des r�f�rences ou des pointeurs) pour faire du polymorphisme, parler de simulation de l'objet est extr�mement exag�r�.
    En C, �a l'est n�anmoins car l'h�ritage rel�ve du bidouillage et il y n'y a pas d'encapsulation.

    Le C++ est plus vieux et bien plus proche de la machine.
    Les deux affirmations ici ne sont pas n�cessairement vraies.
    Java date de 1996, C++ de 1998, m�me s'il existait avant sous une forme exp�rimentale depuis 1983. Enfin, c'est une simple histoire de versions.
    Et C++ dispose de fonctionnalit�s d'abstraction plus elev�es que Java, bien que C++ ait aussi des fonctionnalit�s bas niveau.

  12. #12
    Membre �m�rite
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 064
    D�tails du profil
    Informations personnelles :
    �ge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 064
    Par d�faut
    Citation Envoy� par loufoque
    L'utilisation d'un ramasse-miettes n'est aucunement li�e � la caract�risation objet d'un langage.
    D'ailleurs le fait d'utiliser un ramasse-miettes pour tous les objets est une mauvaise id�e : cela n'aide qu'a g�rer la m�moire, pas les autres ressources avec lesquelles le d�terminisme du RAII (idiome de base de la gestion des ressources - et donc de la m�moire - en C++) est bien plus robuste.
    Le ramasse miette (ou l'utilisation de smart pointer - ca revient au m�me) est indirectement mais in�luctablement li� au concept de l'orient� objet. En C++, tous les variables sont plac�es sur la pile, ce qui signifie que leur taille doit �tre connue � la compilation. Or l'orient� objet sp�cifie clairement qu'un objet peut � n'importe quel moment �tre de n'importe quelle taille - c'est parfaitement incompatible. Dans des langages purs objets on ne se pr�ocupe d'ailleurs jamais de l'occupation m�moire, mais il est ind�niable qu'on y perd en optimisation.

    Citation Envoy� par loufoque
    Il ne faudrait pas exag�rer non plus.
    Bien qu'il soit n�cessaire de r�ferencer d'autres objets (avec des r�f�rences ou des pointeurs) pour faire du polymorphisme, parler de simulation de l'objet est extr�mement exag�r�.
    En C, �a l'est n�anmoins car l'h�ritage rel�ve du bidouillage et il y n'y a pas d'encapsulation.
    Prenons un exemple en langage Java. Imaginons des classes A et B qui ne sont pas de notre conception (pas de possibilit� de les modifier). Une m�thode de A prend comme argument un objet B, puis cette m�thode appelle quelque m�thodes de B. En Java, on peut si on le veut faire une classe d�rivant de B, red�finir ses methodes et passer un objet de cette nouvelle classe � la methode de A. Tout ca fonctionnera � tous les coups.
    Par contre en C++... le nombre de conditions � remplir pour permettre ceci est faramineux. Il faut que toutes les m�thodes qu'on veut red�finir soient virtuelles, que la classe A n'aie pas la mauvaise id�e de copier l'objet de B,... Autant dire qu'� moins que ce ne soit sp�cifi� dans la doc c'est impossible.
    Autre exemple: on d�marre un projet, on se cr�e une petite classe qu'� priori on a pas l'intention de faire h�riter, on en fait des copies par valeur ect... On passe deux mois � faire son applic puis on finit par se rendre compte qu'on doit faire une classe d�riv�e de notre petite classe, sauf qu'on en a d�ja fait une utilisation intensive partout dans le code. Il faut donc v�rifier quasi tout son code pour �tre sur que ca colle bien � la nouvelle fa�on de s'en servir.
    Ou alors on concoit direct toutes ses classes pour faire de l'h�ritage mais ca personne ne le fait jamais
    Non, le C++ c'est du pseudo objet. Ca reste possible d'en faire mais c'est beaucoup trop intrusif. Ca n'en reste pas moins un langage interessant, pour d'autres raisons.

Discussions similaires

  1. Lequel me conviendrait ? Java , Python ou OCaml
    Par kedare dans le forum Langages de programmation
    R�ponses: 13
    Dernier message: 25/06/2006, 19h26

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