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 :

Qui peut le ++ peut le -- , non ?!


Sujet :

C++

Vue hybride

oxyaxion Qui peut le ++ peut le -- ,... 12/11/2010, 12h03
Astraya Tu peux tout à fait obtenir... 12/11/2010, 12h17
Goten C'est "culturel" si j'ose... 12/11/2010, 12h27
oxyaxion Donc vous confirmez il est... 12/11/2010, 13h07
Astraya Oui. ça c'est entièrement... 12/11/2010, 13h41
guillaume07 modulo que si tu te sers des... 12/11/2010, 13h50
koala01 Salut, Le problème n'est,... 12/11/2010, 14h19
Luc Hermitte Modulo que std::sort est... 12/11/2010, 14h24
3DArchi En développement embarqué ou... 12/11/2010, 20h23
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 26
    Par défaut Qui peut le ++ peut le -- , non ?!
    Bonjour,

    Voilà j'ai quelques questions qui vont paraître bêtes à certains d'entre vous, mais je n'arrive pas à obtenir l'information précise.
    Ma question est simple est-il possible de faire de la programmation système (linux/unix) au même niveau d'abstraction (cad en étant aussi proche du système avec l'un que l'autre) avec C++.
    En effet lorsque je recherche des cours de dev système Unix tous les cours proposés sont uniquement liés à C.
    L'une des évolutions majeurs (en plus de toute la sur-couche POO) du C++ par rapport au C et de ne plus faire utiliser de pointeurs (ou du moins de les cacher dans un autre mécanisme c'est exact ?!)

    Or dans des cas précis comme la prog sys par exemple, utiliser les pointeurs pour manipuler les adresses n'est-il pas au contraire un outil supplémentaire permettant d'être plus proche du système ?

    Enfin voilà puis-je obtenir le même niveau "d'embrassement" avec le C comme avec le C++ ?.

    Merci pour les compléments d'informations.

  2. #2
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Tu peux tout à fait obtenir le même niveau en C et C++. Des mauvaises langues diront toujours que C++ est plus lourd que C ou d'autres idées dans le genre fausses mais répandu.
    Beaucoup de drivers sont fait en C++.

    L'une des évolutions majeurs (en plus de toute la sur-couche POO) du C++ par rapport au C et de ne plus faire utiliser de pointeurs (ou du moins de les cacher dans un autre mécanisme c'est exact ?!)
    Du moins les cacher dans un mécanisme de sécurisation serais plus correct.

    Or dans des cas précis comme la prog sys par exemple, utiliser les pointeurs pour manipuler les adresses n'est-il pas au contraire un outil supplémentaire permettant d'être plus proche du système ?
    En C++, void* + reinterpret_cast et tu est a même le hardware si tu le désires.

  3. #3
    Membre Expert
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Par défaut
    C'est "culturel" si j'ose dire, le language de l'opensource à toujours été le C pour ce genre de chose. Et tu les en fera pas démordre. (balance le mot clef C++ sur une ML linux / *BSD etc et tu verras).
    Et pourtant je plussoie mon voisin du dessus qui dis que ce sont de fausses idée répandue .. (code bloat, complexité (quoique))

  4. #4
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 26
    Par défaut
    Donc vous confirmez il est tout à fait possible de développer au niveau de la couche noyau (voir même plus bas) avec C++ ?!

    Hormis quelques points comme un compilateur peut-être moins universels pour l'embarqué par exemple, ou quelques petits % de perfs en moins, le vrai fond du problème est qu'en fait utiliser du C++ avec ses nouvelles fonctionnalités et outils dans un environnement 100% C à la base, ça fait tâche et ça rend tout rouge les puristes qui voient des éléments impurs (issus de ce nouveau paradigme qu'est la POO ) se hisser dans leur bel algo impératif tout propre qui fait tourner Unix depuis le début ...
    Et c'est tout ?!! Mais c'est un pas un peu refracto/sectaire ça ?!!!

    Admettons, j'ai nécessité d'utiliser un pointeur dans un programme c++ pour x ou y raison particulière, je ne risque pas de me faire taper dessus par les collègues et me faire traiter d'incompétent car produisant une bouillie C/C++ ?!

  5. #5
    Membre Expert Avatar de Astraya
    Homme Profil pro
    Consommateur de café
    Inscrit en
    Mai 2007
    Messages
    1 048
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Consommateur de café
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 1 048
    Par défaut
    Donc vous confirmez il est tout à fait possible de développer au niveau de la couche noyau (voir même plus bas) avec C++ ?!
    Oui.
    ou quelques petits % de perfs en moins
    ça c'est entièrement faux. je peux faire un code C plus lent que le C++ et inversement, le mauvais codeur te sortiras l'argument des performances.

    le vrai fond du problème est qu'en fait utiliser du C++ avec ses nouvelles fonctionnalités et outils dans un environnement 100% C à la base, ça fait tâche et ça rend tout rouge les puristes qui voient des éléments impurs (issus de ce nouveau paradigme qu'est la POO ) se hisser dans leur bel algo impératif tout propre qui fait tourner Unix depuis le début ...
    Si tu n'es pas le seul à travailler la dessus, tu n'auras pas le choix. Si tu as la possibilité de faire une DLL personne ne verra si c'est du C ou C++.


    Admettons, j'ai nécessité d'utiliser un pointeur dans un programme c++ pour x ou y raison particulière, je ne risque pas de me faire taper dessus par les collègues et me faire traiter d'incompétent car produisant une bouillie C/C++ ?!
    Et bien ça vas dépendre de tes collègues . Le mélange C/C++ n'est pas vraiment une bonne chose, pas pour des questions de performance ou autres. Mais plus pour des questions d'unicité du code.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Citation Envoyé par Astraya Voir le message
    Oui.
    ça c'est entièrement faux. je peux faire un code C plus lent que le C++ et inversement, le mauvais codeur te sortiras l'argument des performances.
    modulo que si tu te sers des features C++ comma la STL les exceptions, alors oui le C++ sera "plus lent"

  7. #7
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 635
    Par défaut
    Salut,

    Le problème n'est, à l'extrême limite, pas l'utilisation de pointeurs, car, bien que l'on tende à les éviter au maximum, il y a malgré tout des situations dans lesquelles il n'est, purement et simplement, pas possible de faire autrement.

    Il n'y a donc, a priori, aucune raison pour que l'on te lance des pierres pour la seule raison que tu utilise des pointeurs, si, du moins, tu les utilise à bon escient.

    De plus, la programmation hardware / kernel est un domaine tout à fait à part, où les performances revêtent un aspect tout à fait primordial.

    Même les puristes devraient donc être en mesure de comprendre que l'approche "moderne" du C++ n'est pas forcément adaptée, au vu de certaines possibilités qui présentent des performances dégradées.

    Je pense entre autres à l'utilisation des flux qui, il faut l'avouer, sont globalement beaucoup moins performantes que les solutions issues du C

    Mais, si les performances d'une possibilité particulière peuvent servir de prétexte à l'écartement de celle-ci, ce n'est, malgré tout, pas une raison pour virer bébé avec l'eau du bain...

    Pour autant que tu soies en mesure de justifier valablement ta décision d'utiliser un des mécanismes issus du C au lieu du mécanisme équivalent issu du C++, il n'y aura, sans doute, pas grand chose à dire une fois que tu auras fait part de cette justification

    Si, par contre, tu fais effectivement une "infâme bouillie" de C / C++ sans que cela ne soit justifié ni justifiable, il n'est pas exclu que tu obtienne quelques remarques bien senties et au demeurant justifiées

    Il est cependant difficile de donner des règles générales sur le sujet, car la réaction des uns et des autres dépendra fortement du contexte dans lequel ils se situeront

    Mais, quoi qu'il en soit, que risques tu réellement à présenter un code qui *risque* d'être considéré comme incorrect par les puristes, à par de te donner l'occasion d'obtenir un code plus sécurisant et tout aussi efficace
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  8. #8
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 292
    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 292
    Par défaut
    Citation Envoyé par guillaume07 Voir le message
    modulo que si tu te sers des features C++ comma la STL les exceptions, alors oui le C++ sera "plus lent"
    Modulo que std::sort est généralement plus rapide que qsort.
    Modulo que les derniers compilos font du très bon boulot pour les chemins nominaux en cas d'exception -- avec que le code C sera totalement bloated de if pour propager l'erreur (ou alors non robuste, c'est un choix, que celui d'aller vite sans air bag).

    Citation Envoyé par oxyaxion Voir le message
    Donc vous confirmez il est tout à fait possible de développer au niveau de la couche noyau (voir même plus bas) avec C++ ?!
    http://wiki.osdev.org/Main_Page
    http://wiki.osdev.org/C%2B%2B
    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...

  9. #9
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Par défaut
    Citation Envoyé par Luc Hermitte Voir le message
    Modulo que std::sort est généralement plus rapide que qsort.
    Modulo que les derniers compilos font du très bon boulot pour les chemins nominaux en cas d'exception -- avec que le code C sera totalement bloated de if pour propager l'erreur (ou alors non robuste, c'est un choix, que celui d'aller vite sans air bag).


    http://wiki.osdev.org/Main_Page
    http://wiki.osdev.org/C%2B%2B
    je pensais aussi tout bêtement à std::string versus char*

  10. #10
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Citation Envoyé par oxyaxion Voir le message
    Admettons, j'ai nécessité d'utiliser un pointeur dans un programme c++ pour x ou y raison particulière, je ne risque pas de me faire taper dessus par les collègues et me faire traiter d'incompétent car produisant une bouillie C/C++ ?!
    En développement embarqué ou système, on utilise souvent des pointeurs en pensant ne pas avoir le choix. Si cela peut être vrai, il y a aussi de nombreux cas où on oublie l'utilité des références :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    typedef uint32_t volatile device_register;
    device_register &device = *reinterpret_cast<device_register*>(0xFFFF1000);
    //
    device = DEVICE_CMD_1;
    //
    status = device&DEVICE_MSK;
    // etc...
    cf par expl Memory-mapped devices as C++ classes

Discussions similaires

  1. Réponses: 2
    Dernier message: 15/01/2014, 11h43
  2. Session qui fonctionne avec Firefox et non avec IE
    Par epeichette dans le forum Langage
    Réponses: 3
    Dernier message: 19/12/2007, 17h35
  3. texte qui ce répète et Height non respecté sur IE6
    Par Strix dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 20/04/2007, 16h16
  4. Réponses: 9
    Dernier message: 12/10/2006, 00h36
  5. control de formulaire qui marche avec IE et non mozilla
    Par epeichette dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/03/2005, 16h47

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