Recherche des bogues et fuites de mémoire

Posté par  (site web personnel) . Modéré par trollhunter.
Étiquettes :
0
17
mar.
2002
Doc
Suite à une dépêche sur Slashdot à propos des fuites de mémoire dans Mozilla, et comme je cherchai un ersatz libre à Purify (de Rational), l'outil le plus connu pour la détection de bogues de mémoire, j'ai jeté un oeil aux divers projets sur le sujet que j'ai pu trouver (voir la pièce jointe).

Si quelqu'un les a déjà essayés ou connait leurs limites/avantages/inconvénients, je suis preneur.

dmalloc http://dmalloc.com/
ccmalloc http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/
Electric Fence (efence) http://perens.com/FreeSoftware/
Valgrind http://developer.kde.org/~sewardj/
Boehm Collector http://www.hpl.hp.com/personal/Hans_Boehm/gc/
Parallel Collector on Message Passing Environment http://www.yl.is.s.u-tokyo.ac.jp/gc/dgc/
LeakTracer http://www.andreasen.org/LeakTracer/
MemWatch http://www.linkdata.se/sourcecode.html
Memprof http://people.redhat.com/otaylor/memprof/

Aller plus loin

  • # La pièce jointe qui n'est pas passée

    Posté par  (site web personnel) . Évalué à 10.

    LeakTracer
    http://www.andreasen.org/LeakTracer/(...)
    Fuites de mémoire
    Linux et d'autres Unix
    Domaine public
    Sans recompilation
    C++
    Version 2.2

    MemWatch
    http://www.linkdata.se/sourcecode.html(...)
    Fuites de mémoire
    Domaine public
    Nécessite une recompilation
    C
    Version 2.67

    Memprof
    http://people.redhat.com/otaylor/memprof/(...)
    Profil de la mémoire allouée et détection des fuites (avec GUI)
    GPL
    C. C++ ?
    Sans recompilation
    Version 0.4.1

    dmalloc
    http://dmalloc.com/(...)
    libre
    Multi-plateforme
    C/C++
    Nécessite une recompilation
    Supporte le multi-thread
    Version 4.8.2

    ccmalloc
    http://www.inf.ethz.ch/personal/biere/projects/ccmalloc/(...)
    Fuites de mémoire et problèmes de mémoire
    GPL
    Linux et Solaris
    Nécessite une recompilation
    Version 0.3.9

    Electric Fence (efence)
    http://perens.com/FreeSoftware/(...)
    GPL
    Détection des dépassements de limites
    C
    Version 2.2.2

    Valgrind
    http://developer.kde.org/~sewardj/(...)
    Problèmes de mémoire (dont fuites)
    Pour x86 linux.
    Sans recompilation
    Pas de support multi-thread
    C/C++
    Disponible seulement en snapshot

    Boehm Collector
    http://www.hpl.hp.com/personal/Hans_Boehm/gc/(...)
    Garbage collector et détecteur de fuites
    Licence compatible Debian en tout cas
    Multi-plateforme
    C/C++

    Parallel Collector on Message Passing Environment
    http://www.yl.is.s.u-tokyo.ac.jp/gc/dgc/(...)
    Licence inconnue (pas de téléchargement)
    Adresse de téléchargement invalide
    • [^] # Re: La pièce jointe qui n'est pas passée

      Posté par  . Évalué à 2.

      >Boehm Collector
      >www.hpl.hp.com/personal/Hans_Boehm/gc/
      >Garbage collector et détecteur de fuites
      >Licence compatible Debian en tout cas
      >Multi-plateforme
      >C/C++

      A verifier, mais je crois que c'est le GC utilise par gnustep et gobjc (compilateur gcc pour objective-c)
    • [^] # j'en rajouterai un

      Posté par  (site web personnel) . Évalué à 10.

      mpatrol
      http://www.cbmamiga.demon.co.uk/mpatrol/(...)
      GPL
      Peut s'utiliser avec ou sans recompilation,
      Possibilité d'utiliser l'option -fcheck-memory-usage de gcc
      Un joli manuel bien fait:
      http://www.cbmamiga.demon.co.uk/mpatrol/files/mpatrol.pdf(...)
      Multi-plateforme, C/C++

      Il a l'air très complet, pour l'instant je ne l'ai utilisé que sur wmc², et il a été efficace ;)
      • [^] # Re: j'en rajouterai un

        Posté par  (site web personnel) . Évalué à 6.

        Mpatrol est vraiement tres bien. Je l'utilise souvent au bureau sur de gros projets (plus de 50k lignes) et les logs sont tres instuctifs.

        J'ai du les tester a peu pres tous et je n'avais retenu que trois :
        - Memprof. Peu performant mais tres simple d'utilisation, souvent suffisant pour tracker les memory leak sur de petits projets
        - Dmalloc. Tres puissant mais trop complexe a maitriser. Hors les exemples d'utilisation decris dans la doc, c'est quasiement inutilisable.
        - Mpatrol. Tres complet et finalement pas trop dur a utiliser.

        Par contre, aucun ne permet de tester l'utilisation de variables non initialisees (fonction tres pratique de purify).

        Il manque une derniere reference c'est Insure++ de Parasoft. Mais, honnettement le produit est tres cher et assez decevant (pas tres intuitif lorsqu'on travaille en C++, tres verbeux, et moins complet que Purify). Je ne mets pas de reference, cela serait de la pub indirecte :-)

        Laurent
  • # Tests persos

    Posté par  (site web personnel) . Évalué à 10.

    Des outils de ce genre sont indispensables dès qu'on commence à manipuler des grosses quantités de mémoire dynamique. J'ai été amené à en utiliser quelques uns:

    -electric fence: sans doute le plus connu/utilisé. Il marque les zones mémoires libérées de telle sorte que si on essaie de lire à un endroit libéré, le programme plante à coup sûr. Après, un coup de gdb suffit à repérer l'erreur. Inconvénient: la mémoire ne peut être utilisé qu'une fois. Autant dire qu'avec un gros programme, il en faut des quantités pharaoniques...

    -memprof: petit outil très sympa écrit en Gtk. Pas besoin de linker avec quoi que ce soit. Il affiche les leaks qu'il a trouvés et sert aussi de profiler. C'est sans doute l'outil qui m'a permis d'en repérer le plus - le plus sympa à utiliser aussi. Par contre, ca fait un bail qu'il n'a pas été mis à jour...

    -je n'ai jamais utilisé Valgrind, mais il a une très bonne réputation. Notamment celle d'etre utilisé pour KDE.

    Pour le reste, je ne connais pas vraiment. La news m'en a fait découvrir quelques uns. D'après des potes Windowsiens, aucun de ces outils n'est aussi bon que Purify, que je n'ai jamais testé personnellement, il m'est donc impossible de me prononcer. En tout cas, je me suis toujours passé de Purify, et tous ces outils me satisfont pleinement...
    • [^] # Re: Tests persos

      Posté par  (site web personnel) . Évalué à 10.

      J'ai l'impression que Purify regroupe les avantages des divers logiciels cités (enfin sauf qu'il est propriétaire et non disponible sous GNU/Linux quand même) : interface texte ou X au choix, pas besoin de recompiler (chsais plus qui avait même tester Purify sur une certaine suite bureautique majoritaire sur le marché, et avait trouvé un paquet de bogues et de fuites), détection des dépassements de limite (en lecture et écriture), double libération de mémoire, détection des utilisations incompatibles (malloc/new/new[] contre free/delete/delete[]), utilisation de mémoire non initialisée, etc, etc. Un logiciel libre aussi puissant, ça serait vraiment cool. C'est pour ça que j'ai posté cette dépêche, pour voir si un effort avait déjà été fait dans ce sens.
      • [^] # Re: Tests persos

        Posté par  (site web personnel) . Évalué à 10.

        Purify permet aussi de repèrer pas mal de bugs dès la compilation: il balance des warnings pleins de bon sens sur des choses que gcc ne signale pas !

        Et sinon, c'est vrai que l'instrumentation du code pour vérifier les accès aux tableaux, c'est assez capital.. j'ai toujours pas compris si l'option '-fcheck-memory-usage' de gcc est plus ou moins équivalente à ça [j'ai pas réussi à l'utiliser avec mpatrol].. D'ailleurs cette option avait été originalement créée pour http://www.gnu.org/software/checker/checker.html(...) , programme que je n'ai jamais réussi à utiliser et qui a l'air d'être mort...
    • [^] # Re: Tests persos

      Posté par  (site web personnel) . Évalué à 10.

      je viens de tester valgrind (devinez sur quoi ;), et c'est une merveille !

      il detecte absolument tous les accès aux variables non initialisées, c'est vraiment la catégorie au-dessus des mallocs debuggers :) Après avoir survolé en diagonale le manuel, j'en ai retenu qu'il fonctionne en émulant le processeur (un pentium du base) ce qui lui permet de chopper absolument tous les trucs bizarres. Et le programme continue à fonctionner à une vitesse tout a fait acceptable.

      Y'a juste les signaux qui foutent un peu le bordel, mais vu que c'est un programme en développement (release valgrind-20020315b), il marche déjà formidablement bien.

      Bref, je suis très très enthousiaste ! je crois c'est la vraie alternative à purify.

      Et sinon, comme dit plus bas, je pense aussi que cette news mériterait de passer en première page.
      • [^] # Re: Tests persos

        Posté par  (site web personnel) . Évalué à 6.

        dommage qu'il ne marche que sur Linux x86...
      • [^] # Re: Tests persos

        Posté par  (site web personnel) . Évalué à 3.

        Ahhh ! Enfin un clone de purify correct sous Linux. C'etait le seul que je n'avais pas teste/trouve. Je vais suggerer ca tout de suite a nos admin-sys.

        Merci pour le test.

        Laurent
      • [^] # Re: Tests persos

        Posté par  (site web personnel) . Évalué à 1.

        Trop fort, en me balladant sur les machines de test OmniPcx (serveur telephonique alcatel fonctionnant sous linux), je trouve un binaire valgrind => ca boost bien.

        Y'a des mecs qui l'utilise donc en interne pour debugger les serveurs!
    • [^] # Purify n'est pas sans défaut..

      Posté par  . Évalué à 10.

      Avec purify quand on appelle une fonction en lui passant une structure avec certains champs non-initialisés, purify signalera "lecture de champ non-initialisés" même quand on n'utilise pas ces champs dans la fonction..

      On peut filtrer bien sur ce type d'erreur, mais c'est dommage: s'il y a vraiment une lecture de variable non-initialisée on risque de ne pas la voir..

      D'après ce que j'ai lu valgrind n'a pas ce probleme (il en a d'autres: multi-threading)..
    • [^] # Re: Tests persos

      Posté par  . Évalué à 1.

      Pour ceux qui ne sont pas sectaires, il y en a un par defaut dans Win2000 qui s'appelle PageHeap.

      Il se trouve dans le resource kit et/ou le SDK.

      Ca permet de modifier les allocations pour n'importe quel executable(faut juste lancer l'outil en specifiant le nom du soft avant de lancer ledit soft) de plusieurs manieres:
      - "full": chaque allocation est placee a la fin d'une page avec une guard page apres --> AV direct si il y a un ovverun, et il detecte les underrun en remplissant le debut de la page avec un pattern
      - "light": plusieurs alloc par page, mais avec des pattern pour detecter les overrun/underrun, defaut: le probleme n'est detecte qu'au moment du free. Avantage: ca bouffe vachement moins de RAM.

      Pas besoin de torcher ca a coup de [-], ca pourrait servir pour les softs libres developpes sous Windows.
      • [^] # Re: Tests persos

        Posté par  . Évalué à 2.

        ça ressemble à electric fence, qui permet de choisir où tu mets ta page bloquée (avant, après, sur les zones 'free')
  • # Commentaire supprimé

    Posté par  . Évalué à 5.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: Je vote pour cette news en première page [++++]

      Posté par  . Évalué à 10.

      Je vote pour aussi!
      Depuis une semaine ou deux, les seules news interessantes sont dans la boite Autres, c'est bien triste.
    • [^] # Re: Je vote pour cette news en première page [++++]

      Posté par  . Évalué à -8.

      Ben moi je vote pas, mais je suis plutot contre.

      Je m'explique, pour moi cette news c'est quasi du chinois, meme en lisant les posts (si, si, j'essai de me culturer, qui sait un jour j'serais peut etre programmeur !) donc si tu veut faire fuir le neewbie ya pas mieux !
      Et deusio, ce post est la preuve meme que les news autres sont quand meme lu (a defaut d'etre compris!) AUTRES ne veut pas dire moins bien, ca veut juste dire autres (elle est facile celle là)

      Voilou, j'espere que tu comprends mon point de vue qui n'est surement pas d'exclure les news comme celle là qui pourtant me passe largement au dessus de la tête.
      • [^] # Re: Je vote pour cette news en première page [++++]

        Posté par  . Évalué à 4.

        Ben moi je vote pas, mais je suis plutot contre.
        Je m'explique, pour moi cette news c'est quasi du chinois, meme en lisant les posts (si, si, j'essai de me culturer, qui sait un jour j'serais peut etre programmeur !) donc si tu veut faire fuir le neewbie ya pas mieux !


        Franchement, je trouve que le problème est le même avec les news qui passent sur la page principale en ce moment. Personnellement, j'aime les news techniques. Et la plupart des news juridiques, economiques, politiques (cf alenvers dans la news du virus linux) ne m'intéressent que très peu, et me donnent en général mal à la tête.

        Tu trouves que les news techniques risquent de rebuter le newbie ? Je ne trouve pas les news actuelles de la page principale très abordables non plus pour un newbie. Regarde celles portant sur l'ICANN, Lessig, les articles sur les brevets, etc.

        Attention, je n'ai pas dit qu'elles n'étaient pas importantes pour la communauté. Juste qu'elles n'entrent pas forcément dans mes centres d'intérêts personnels.

        Donc, mon avis, c'est que cela manque un peu de technique, effectivement. Bon, ceci dit, on a la faille OpenSSH, ou encore d'excellentes interventions sur Le Hurd aussi. Si je pouvais avoir les nerws de la boîte Autres dans le canard, ce serait déjà un plus.

        -1 pour hs total.
        • [^] # Re: Je vote pour cette news en première page [++++]

          Posté par  . Évalué à 3.

          Eh ben moi, pour simplifier la vie de pouaite et parce que je le vaux bien, je vote pour un backend de la boite autre...
          Comme ça, le canard, il intègre ça vite fait bien fait, en plus, ca permettra même d'avoir les news de deux sites différents pour ceux qui se foutent (existent-ils) de la boite autre...
          Allez, je me met pas -1, parce que je veux que les modéros me disent pourquoi ce serait pas possible, ou bien qu'ils le fassent !

          C'était ma minute nécessaire...

          Co1n Co1n !
          • [^] # Re: Je vote pour cette news en première page [++++]

            Posté par  (site web personnel) . Évalué à 10.

            > les modéros me disent pourquoi ce serait pas possible, ou bien qu'ils le fassent !

            Euh les modéros modèrent et les développeurs daCode développent... En ce moment, nous (les développeurs daCode) bossons plutôt sur la sortie de la version 1.4. Maintenant si tu fournis le patch/correctif, pas de problème.

            (l'ordre « qu'ils le fassent ! » est un peu déplacé. Certains pourraient te dire d'aller te faire f..tre)
      • [^] # Commentaire supprimé

        Posté par  . Évalué à 7.

        Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: Je vote pour cette news en première page [++++]

      Posté par  . Évalué à 0.

      Bon OK les gars, frappez pas !

      Ce que je voulais dire c'est que la boite autre n'est pas une poubelle !
      Chacun ses centres d'intéret, moi la prog c'est pas mon truc mais ca me choquerais pas outre mesure si la news passait en première page.
      Réciproquement une news politicojuridicoeconomico... me gènerais pas dans la boite autre, mème si souvent c'est rudement important (l'avenir du libre se joue parfois).

      Mais le gros problème, c'est que tout ne peut pas passer en première page. La solution idéale serait de personaliser ses choix comme propose alenvert, mais en attendant...

      Quoiqu'il y a peut-etre une solution simple:
      Si le nombre de commentaires dépasse une certaine limite disons 27, la news zappe directement à la première page (et réciproquement, si une news principale n'attire pas plus de 5 commentaires=>case autres)
      C'est possible ?

      ---> -1 car désolé les gars de poluer votre news avec ce "débat".
  • # fonctions de la libc

    Posté par  . Évalué à 10.

    Il y a aussi des fonctionnalités propres à la libc. Pour plus d'information, reportez vous à la doc : info libc (installez le paquet glibc-doc)
    Memory -> Memory Allocation -> Allocation Debugging

    En gros, vous appelez une fonction mrtrace() au début de votre programme. Et vous définissez une variable d'environnement MALLOC_TRACE qui contiendra le nom d'un fichier où vous allez logguer les traces.
    Pour de petits programmes, ça vaut peut-être le coup d'utiliser ça.
    • [^] # Re: fonctions de la libc

      Posté par  (site web personnel) . Évalué à 7.

      c'est mtrace() et muntrace() a la fin

      ex:
      int
      main(void)
      {
      mtrace();
      do_the_rest_tm();
      muntrace();

      return 0;
      }

      ensuite on lance le programe:

      $ MALLOC_TRACE=log.mtrace ./mon_prog

      ca genere un fichier de log

      on le consulte avec:

      $ mtrace ./mon_prog log.mtrace


      Ca permet de voir où (la fonction) a été allouer la memoire qui n'a pas été libéré au moment de l'appel a muntrace().

      Le probleme c'est que si vous avez une fonction
      d'allocation (qui appelle malloc()) c'est toujours cette fonction qui sera indiqué par
      mtrace: ca montre pas quelle fonction
      a fait la demande d'allocation, mais la fonction
      qui a appelé malloc().

      Ca reste pratique quand meme, mais il faut savoir
      distingué les "fuites" provoqué par la libc elle meme.
  • # au XXI ème siècle ?

    Posté par  . Évalué à -10.

    Y'a toujours des dinos pour programmer en C ...

    c'est marrant, Smalltalk normalisé en 1980 n'a pas ce problème.

    j'ai ma petite liste d'outils à moi :
    Lisp
    Scheme
    Smalltalk
    O' caml
    objective C
    Java
    Perl
    Python
    Haskell
    ...

    à compléter

    Le premier qui me parle de GC en C ou en C++ je l'éclate ; je parle de vrais outils !
    • [^] # Re: au XXI ème siècle ?

      Posté par  (site web personnel) . Évalué à -5.

      Ruby ?
      BrainFuck ?
    • [^] # Re: au XXI ème siècle ?

      Posté par  . Évalué à 0.

      Eiffel (j'aime bien celui d'ISE [1] mais bon, la version libre [2] se défend sur certains points).

      [1] http://www.eiffel.com(...)
      [2] http://smalleiffel.loria.fr(...)
    • [^] # Re: au XXI ème siècle ?

      Posté par  (site web personnel) . Évalué à 7.

      Oh, le troll!

      Allez, j'y participe:
      Va faire un programme rapide dans un des langages que tu cites - ou un truc bien critique genre un système d'exploitation ou une librairie graphique... Il y aura toujours des dinos pour programmer en C tant que ca sera utile. Devoir gérer la mémoire soi même ca peut paraître lourd - ben ouais mais au moins c'est *efficace*.

      Pourquoi pas Visual Basic tant que t'y es, tsss...

      C++ roulaize d'abord.

      -1
      • [^] # Re: au XXI ème siècle ?

        Posté par  (site web personnel) . Évalué à 5.

        allez, moi aussi je participe, un beau troll comme ça, y a pas de raison!

        Au risque de paraître complètement archaïque, il paraît qu'il y a même encore des gens qui programment en assembleur! T'y crois à ça toi? Des bouts de code en assembleur qui marchent?
        Bon c'est sûrement des rumeurs tout ça...

        -1 car vraiment trollesque
        • [^] # Re: au XXI ème siècle ?

          Posté par  (site web personnel) . Évalué à 0.

          Meuh non. Plus personne ne connaît l'assembleur, depuis que nos bons gouvernants ont interdit aux terroristes d'étudier les programmes compilés pour les déporter sur des systèmes intégristes...

          De toute facon, le seul assembleur légal sera bientôt le code .Net, alors...

          -1
      • [^] # Re: au XXI ème siècle ?

        Posté par  . Évalué à 3.

        Mouis, mais le probleme c'est que même des démons dont les performances ne sont pas critiques sont écrit en C/C++ d'ou un nombre important de problemes de sécurités..

        Pour résoudre ce probléme a mon avis il faudrait 2 choses:
        - changer le modele de sécurité (pas seulement root et le reste): les modeles de sécurité "a jeton" cf Eros par exemple (non ce n'est pas cochon) permettent de diminiuer les risques..
        - utiliser d'autre language que le C: Ada, Modula, Eiffel serait pas mal: compilé (donc relativement performant), avec un GC (évite les problèmes liés à la mauvaise gestion de la mémoire cf zlib par exemple).

        D'apres ce que j'ai lu un programme avec GC utilise environ 2* la mémoire d'un programme ou la mémoire est gérée manuellement, ce qui est moins un problème maintenant que le prix de la mémoire a baissé.
        • [^] # Re: au XXI ème siècle ?

          Posté par  (site web personnel) . Évalué à 8.

          C'est avec ce genre de raisonnement qu'on se retrouve obligé d'avoir 512Mo et un P80 10Ghz pour faire tourner 3 pauvres executables programmés par des programmeurs qui ne font plus attention a rien sous pretexte que le langage utilisé automatise tout grace a son garbage collector dernier cri et a sa machine virtuelle qui le rend executable partout meme sur le vibromasseur de votre meuf.
          </feed the troll>

          --
          Edouard Gomez

          Java, je t'aime, Java je t'adore...
          • [^] # Re: au XXI ème siècle ?

            Posté par  (site web personnel) . Évalué à 4.

            Mouai, c'est aussi avec le raisonnement oppose (tout en C, vive le bas niveau ou on controle tout) qu'on se retrouve avec des applications minables, moches, qui plantent souvent, a qui ils manquent la moitie des trucs utiles, tout simplement parce que le developpeur a choisi un langage et une bibliotheque ou il passe plus de temps a faire des trucs inutiles (debugger la memoire) pris en charge par d'autres bibliotheques/langages que utiles (faire son appli). Perso, je prefere privileger l'efficacite de developpement dans ce que je fais, et c'est pour ca que je choisis Qt ou python.

            Ca veut pas dire que tout ce que je fais prends necessairement des centaines de Go de memoire, juste que c'est une consideration qui passe apres l'efficacite.
            • [^] # Re: au XXI ème siècle ?

              Posté par  . Évalué à 3.

              Je ne suis pas d'accord avec l'affirmation 'Le C c'est dépassé', et encore moins avec les opinions prônant le C partout. On a la chance de bénéficier de dizaines de langages différents plus ou moins adaptés à certaines tâche. Autant en profiter.

              Personnellement, j'utilise autant du C que du Java, des shell scripts, etc... selon les circonstances.

              [Le premier qui trolle sur les langages que j'ai cité prend la porte.]
      • [^] # Re: au XXI ème siècle ?

        Posté par  (site web personnel) . Évalué à 0.

        Oh, le troll!
        ouais, trollons ...

        Va faire un programme rapide dans un des langages que tu cites
        c'est possible (cf. OCaml)

        Il y aura toujours des dinos pour programmer en C tant que ca sera utile.

        Bien sûr. Le problème c'est que c'est de plus en plus rarement utile mais certains ont apparemment du mal à s'en rendre compte.

        Devoir gérer la mémoire soi même ca peut paraître lourd
        ça l'est, on est d'accord.

        mais au moins c'est *efficace*.
        bof, les bugs aussi ils sont efficaces.

        C++ roulaize d'abord.
        beurk ...
        • [^] # Re: au XXI ème siècle ?

          Posté par  . Évalué à 3.

          c'est esr qui quelque part a dit qu'il devenait de moins en moins utile d'utiliser des langages de bas niveau comme C dans la programmation, parce que le temps perdu dans la programmation de la gestion de la mémoire et le débugage était plus cher que le cycles d'horloge processeur.
          alors pour un logiciel dont la rapidité est essentielle, d'accord mais pour le reste...

          J'ajouterais même que la solution que j'aime beaucoup c'est le mixage de langages :
          du C pour ce qui est long et du python pour le GUI par exemple. quelqu'un connaît une bonne référence sur la programmation multi-langages ?


          PS : allez voir de ce côté , vous verrez de beaux lanagages de programmation ;o) http://www.tuxedo.org/~esr/retro/(...)
    • [^] # Re: au XXI ème siècle ?

      Posté par  (site web personnel) . Évalué à 5.

      Question:

      Les interpreteurs/runtime de ces langages sont
      écrit en quoi ? ;)
      • [^] # Re: au XXI ème siècle ?

        Posté par  . Évalué à 0.

        BOOTSTRAP, ça s'écrit avec 2 'O' et un 'P'

        et _c'est_ rapide, sauf si c'est un programmeur C qui écrit.

        Il faudrait peut-être s'attaquer à la complexité avant de dire que c'est lent.
        Il faudrait aussi éliminer les préjugés (cf. le modèle de mémoire minable de OpenCascade).

        Je crois que l'image du hacker inculte, chevelu et borné n'est pas prête de disparaître.

        Tous les benchs sérieux que j'ai vu plaident pour des langages de haut niveau (même ceux de gens qui avaient des intérêts économiques contraires).
    • [^] # Re: au XXI ème siècle ?

      Posté par  . Évalué à 9.

      Bah, il en faut pour tous les goûts :

      - des programmeurs en assembleur, que c'est des hommes des cavernes qui parlent directement à l'électronique, c'est totalement néandertalien comme attitude ; mais on est bien content d'avoir des driver à chaque nouveau périphérique qui sort

      - des programmeurs de script ; bien entendu, c'est hyper méga plus cool de faire du perl que du bash, mais je me souviens plus pourquoi ? Ah oui, la syntaxe est plus claire :)

      - des programmeurs en C, des hommes, des vrais, qui n'hésitent pas à faire des malloc et des free, mais maintenant ça fait has been

      - des programmeurs en C++, c'est la classe, ça roXor grave, top rock&roll ! bon ça compile pas partout mais c pas grave

      - des programmeurs en java, c'est le fin du top, c'est hyper portable, sauf quand t'as pas le bon jdk. Plus besoin de faire des free, c'est géant, c'était la difficulté majeure dans la programmation !

      Non sérieusement, pourquoi ce snobisme qui pousse à croire que seul les outils les plus récents doivent être utilisés ? Pourquoi un langage devrait-il en démoder un autre ? Pourquoi un concepteur d'application dénigrerait-il ceux qui ont conçu les couches inférieures de son appli ?

      Inversement, pourquoi un programmeur en c ou en asm serait un vieux dinosaure et devrait abandonner ces langages ? Il est programmé en quoi le noyau de Linux ? hmmm ?

      Amis lecteurs qui avez une vision partielle des langages de programmation, prenez garde, car vous allez être démodés dès l'apparition du prochain nouveau super langage de la mort.

      Amis lecteurs qui considerez les nouveaux outils comme des pratiques suspectes, non élégantes et inflationnistes, prenez votre clavier et concevez-en de nouveaux !
      • [^] # Re: au XXI ème siècle ?

        Posté par  (site web personnel) . Évalué à 1.

        moi j'aime bien l'asm.
        j'ai moins de problèmes avec, qu'avec le C.
        C sapulpaté mais je suis obligé de passer par là :-(

        et ton post n'a pas parlé de
        LISP
        SMALLTALK
        EIFFEL
        ADA
        COBOL
        PASCAL
        FORTRAN
        et tous ces langages qui ne servent que dans les livres...

        franchement, moi maintenant je m'éclate au VHDL :-P
        ça c'est un langage de mecs qui pensent et qui FONT de VRAIES choses.

        non mais, moi aussi je peux troller ;-)
      • [^] # Re: au XXI ème siècle ?

        Posté par  (site web personnel) . Évalué à -1.

        Non sérieusement, pourquoi ce snobisme qui pousse à croire que seul les outils les plus récents doivent être utilisés ?

        Au hasard : parce qu'en général ils ont tendance à mieux marcher que les anciens.

        On code plus vite en C++ qu'en C, et encore plus vite en Java. A moins d'être forcé pour une raison quelconque d'utiliser C, quel est l'interet ?

        C'est pas parce qu'une solution marche qu'on ne peut pas en trouver une meilleure.
        • [^] # Re: au XXI ème siècle ?

          Posté par  . Évalué à 3.

          > On code plus vite en C++ qu'en C, et encore plus vite en Java. A moins d'être forcé pour une raison quelconque d'utiliser C, quel est l'interet ?

          On code plus vite dans le langage qu'on maîtrise le mieux, et il en va de même au niveau du débugage, et de la relecture.

          Pourquoi alors faire du prosélitisme pour tel ou tel langage ? Je n'arrive pas à comprendre ce snobisme pour la progression des langages.

          C'est pas parce qu'il y a une solution plus récente qu'elle doit éradiquer une solution bien connue.

          Et je le répète, méfiez-vous des modes. Il y a 10 ans, celui qui ne faisait pas du Ada était naze ; il y a 5 ans, point de salut sans le c++, maintenant c'est du java à tous les étages ; et demain ?

          Le C, ça fait 30 ans que ça existe, c'est une valeur sûre.
          • [^] # Re: au XXI ème siècle ?

            Posté par  (site web personnel) . Évalué à 1.

            On code plus vite dans le langage qu'on maîtrise le mieux, et il en va de même au niveau du débugage, et de la relecture.

            Non, c'est faux. C'est le genre d'argument bidon qu'on sort pour pouvoir refuser d'évoluer la conscience tranquille.

            Je maitrise Java moins bien que C++ et pourtant je code plus vite en Java, simplement parce que le langage a un GC et une librarie bien plus complète que celle de C++.

            Je n'arrive pas à comprendre ce snobisme pour la progression des langages.

            Ça s'appelle le progrès. Chaque nouveau langage tire les leçons des précédents. C'est flagrant quand tu passe de C++ à Java, et de Java à C#.

            C'est pas parce qu'il y a une solution plus récente qu'elle doit éradiquer une solution bien connue.

            Si, c'est pour ça qu'on crée de nouvelles solutions.

            Le C, ça fait 30 ans que ça existe, c'est une valeur sûre.

            Le cheval existe depuis des millénaires, c'est une valeur sûre. L'automobile n'est qu'une mode.
            • [^] # Re: au XXI ème siècle ?

              Posté par  . Évalué à 1.

              C'est peut-être pas la peine de répondre, quand tu vois le niveau.
              Du style : "Le C, ça fait 30 ans que ça existe, c'est une valeur sûre"
              le LISP a été inventé en 1958, Smalltalk en 1972, scheme pareil, ça fait 44 ans que ça existe mais ça doit être à un mec de 15 à qui tu répond.

              d'autre part, y'a un bon bench :
              http://www.bagley.org/~doug/shootout/(...)
              (faites gaffe, les listes n'en sont pas, sinon les fonctionnels exploseraient les autres)

              Mais tout ça c'est de la merde parce que c'est pas C !

              D'autre part, ici personne ne développe d'application 'généraliste", on n'a que des développeurs de drivers, de temps-réel (mal informés) et de noyaux.
    • [^] # Efficacité des compilateurs

      Posté par  . Évalué à 3.

      J'avais retenu que ce qui prend du temps c'est de
      mettre au point un compilateur efficace pour un
      langage donné; Le simple fait que le
      gcc, compilateur C sous le frontend GCC, soit encore amélioré malgré
      son grand age prouve que ce n'est pas chose facile
      et justifie a lui seul le choix d'un langage comme
      le C.

      Maintenant, est-ce que vous savez s'il existe une estimation
      quantitative du degr&eacute; d'optimisation
      du code genere par les compilateurs de la distribution GCC ?

      C'est une question tres vague, et qui depend enormement de
      la plate-forme pour laquelle on compile, mais supposons
      qu'on veuille ecrire un programme toto qui execute
      une serie de taches t. Supposons en plus qu'on soit pote avec le
      meilleur programmeur en assembleur sur i386, et que celui-ci
      nous ait donne le listing du meilleur code assembleur possible ass
      qui execute t.

      On peut ecrire un programme qui execute t dans n'importe
      quel langage. A priori, si je choisis d'ecrire mon programme en c,
      je peux esperer que le code genere par gcc se rapprochera
      tres pres de ass. Mais si je choisis par exemple objective-c,
      y a-t-il un moyen de savoir en quoi le code genere par le compilateur objective-c de gnu
      differera de ass ? Idem pour g++, gcj, etc...

      Pour resumer, aussi vague la question soit-elle, est-ce qu'on peut avoir
      une idee de l'efficacite relative du code genere par les compilateurs
      de la distribution GCC ?

      A+
      Bob

      --
      desole, j'ai fini par lacher les accents, mais j'ai un clavier qwerty et les eacute and co ca me les brise menu...
    • [^] # Re: au XXI ème siècle ?

      Posté par  . Évalué à 2.

      Mon Dieu ! Un troll tchernobyllien !

      Bon c'est super tous les langages que tu cite, mais pour de l'embarque ou des drivers par exemple c'est pas bien terrible.
      Certes gerer une application sous environnement graphique en C ou C++, en etant oblige de passer par un Visual %^#^*^&@ c'est mauvais et peu elegant (en general). Mais pour de l'embarque, ou le CPU ne fonctionne bien souvent pas au-dela de 500 Mhz (consommation, chaleur, densitee...), et ou la memoire est une ressource rare rien ne vaut un bon vieux C++.
      Pour les drivers rien de tel que du C (c'est prevu pour: adresage direct ,de la memoire, codage en quasi-asm...).
      Faut pas tout melanger. Le langage unniversel n'existe pas et n'existera jamais. C'est un concept pour les feignants intellectuels et les etroits d'esprits (et boum re-troll).
      • [^] # Re: au XXI ème siècle ?

        Posté par  . Évalué à -2.

        C'est un site de temps-réel ou d'embarqué ici ?
        C'est un site de développeur du noyau ?

        La plupart du temps c'est la flemme d'apprendre un langage qui conduit à utiliser le C.
        Quand tu vois le ramassi de conneries au dessus (ça prends plus de mémoire, c'est plus lent, on utilise le C pour écrire les compilos [et alors ?], la meilleure : je développe des drivers ou le noyau [à temps plein ?]).
        Surtout que la plupart des langages permettent une interconnexion avec le C pour les fonctions critiques.

        C'est dommage de discréditer ainsi un site pas mal par ailleur.
        • [^] # Re: au XXI ème siècle ?

          Posté par  . Évalué à 1.

          Si je ne m'abuse, ici c'est un site sur Linux et sur le libre au sens large. Et jusqu'a preuve du contraire cela comprend aussi le developpement de drivers ou de temps-reel. Certes au dessus on peut voir pas mal de betises, la premiere etant celle a laquelle je repondais, qui disait en substance "Dehors les langages de dinos, ya que Python/Perl/Java/etc... qui ro><or !". Je me suis contente de dire que c'etait n'importe quoi et d'apporter un exemple. Je me suis contente de dire qu'il fallait voir plus loin que le bout de son nez. C'est pourquoi je ne comprend pas ton commentaire.

          -1 HS
        • [^] # Re: au XXI ème siècle ?

          Posté par  . Évalué à 2.

          La plupart du temps c'est la flemme d'approfondir le C, ou encore le manque d'expérience, qui conduit à utiliser d'autres langages :)

          A propos de java, je suis toujours subjugué par les programmeurs qui se battent pour ne pas lancer trop de machines virtuelles en même temps (mais c'est pas parce que ça consomme trop de mémoire, bien sûûûûûûûr), ou par la beauté intrinsèque d'un appel système en plein milieu d'un prog java (hopefully noone will notice :)

          En quoi comparer des performances de langages jette-t'il le discrédit sur DLFP ? Il me semble que c'est le bon endroit, non ? En plus il y a des informaticiens de tout age, de tout expérience, des gens qui savent de quoi ils parlent, parfois des gens objectifs :)

          Il y a même des gens qui se passent très bien des derniers langages !
          • [^] # Re: au XXI ème siècle ?

            Posté par  (site web personnel) . Évalué à 2.

            La plupart du temps c'est la flemme d'approfondir le C, ou encore le manque d'expérience, qui conduit à utiliser d'autres langages :)

            Je serais curieux de savoir quelle expérience tu as toi pour affirmer une annerie pareille.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.