Journal C++ a été créé pour augmenter le salaire des programmeurs

Posté par  (site web personnel) .
Étiquettes :
-2
13
déc.
2010
Salut à toi journal,
je viens de tomber sur une interview absolument surréaliste de notre ami Bjarne Stroustrup qui explique benoitement qu'il a créé C++ pour rendre la programmation si difficile que les compétences resteraient suffisamment rares afin qu'elles restent payées chèrement.

En effet, d'après lui (et c'est pas vraiment faut), trop de programmeurs étaient devenus très bon en C, ce qui les rendaient moins rare et donc moins cher : programmeur devenait un métier payé avec un salaire de base.

Pour inverser cela, il a inventé C++ !

Il va carrément affirmer que : "object-oriented programming is counter-intuitive, illogical and inefficient.." !!!

L'interview est tellement énorme qu'on me demande vraiment si c'est une blague.
Si l'on fait une recherche avec quelques mots-clés dont fake, elle est signalée comme étant un fake

Donc apparemment c'est un fake bien connu du net et démenti par l'auteur du bloat language lui même http://www.chunder.com/text/tellmeitaint.html
J'imagine que beaucoup d'entre vous le connaissent.

Les opinions exprimées dans cette fausse interview ne sont pas tout à fait fausse :
- Plus il y a de programmeurs disponible pour les langages mainstream, plus ils sont traités comme de simples ouvriers et traités comme tel.
- Les ingénieurs aiment la complexité car cela les rassurent de maitriser ce que peut de gens peuvent comprendre.

On peut aussi noter que C++ est application bizarre du Worse is Better.

Bref ce journal n'était qu'un prétexte à un gros troll, et j'espère à traiter les futurs algorithme de détection de troll que nos moules thésards en IA ne manquerons pas de nous créer ! ;-)
  • # Il y a une autre compétence devenue rare

    Posté par  . Évalué à 9.

    Sé la métrise 2 lortograf !
  • # Re: C++ aété créépour augmenter le salaire des programmeurs

    Posté par  . Évalué à 10.

    Ce qui est amusant c'est de voir que tu t'es rendu compte que c'est un fake au
    fur et à mesure que tu écrivais le journal :)
  • # Version UNIX et C

    Posté par  . Évalué à 4.

  • # Pas si faux

    Posté par  (Mastodon) . Évalué à 5.

    J'explique sans arrêt à mes étudiants que l'informatique, c'est un domaine de feignants et d'escrocs. Feignants parce qu'à la base, ça consiste à automatiser des traitements répétitifs (donc expliquer à la machine comment faire pour qu'elle le fasse à notre place). Escrocs parce que de tout temps, les informaticiens ont réussi deux choses : vendre des fonctionnalités bidons à prix d'or (au début de l'Internet 1.0 et du Javascript, mettre une horloge sur un site web pouvait se payer très cher, plusieurs centaines de francs à l'époque, maintenant, on pourrait trouver des équivalents) et produire suffisamment de bugs pour faire survivre le métier.

    Je crois que peu importe le langage ou les méthodes ou même l'époque, ça reste toujours vrai.
    • [^] # Re: Pas si faux

      Posté par  . Évalué à 10.

      Oui et non...

      Parce que les "compétences de base" pour un "informaticien" sont quand même très large.

      Base de réseau
      Base de Windows/Microsoft
      Base de Linux
      Base de html
      Base de sécurité
      Base de hardware

      Cela s'affine quand on avance dans un domaine. Donc, oui, c'est simple une horloge javascript, mais seulement, une fois que l'on à quelque base de :
      Réseau
      Linux ou Windows (selon le serveur)
      HTML (voir PHP ou ce que tu veux pour un site dynamique)
      javascript
      connaissance des implémentations de javascript sur les navigateurs du moment.

      Donc oui, l'informatique, c'est simple, mais quand tu connais :)
      • [^] # Re: Pas si faux

        Posté par  . Évalué à 5.

        "
        Réseau
        Linux ou Windows (selon le serveur)
        HTML (voir PHP ou ce que tu veux pour un site dynamique)
        javascript
        connaissance des implémentations de javascript sur les navigateurs du moment.
        "
        L'horloge en JavaScript, elle se contente de demander la date au navigateur, donc au poste client...
        • [^] # Re: Pas si faux

          Posté par  . Évalué à 6.

          Ok, mais comment tu te connectes au serveur ?
          Aller, le réseau est la seul compétence presque pas requise pour les cas "simple".

          Ensuite, compétence Linux/Windows :
          Si tu as un accès SSH seulement, afin de ne poser les fichiers qu'en scp ? ça demande des compétence Unix (déplacer dans l'arborescence, systèmes de droit d'accès (chmod, acl), etc...)
          Si tu as un serveur Windows, pareil, il faut connaitre un peu le système, le path pourrit, droit d'accès, etc...

          Ensuite, le serveur web, si tu connais bien apache, mais que c'est du tomcat sans apache ?
          Va retrouver ton war en lisant tes fichiers de conf xml :)

          Ensuite, pourquoi PHP ou autre ?
          Et si le site est dynamique et qu'aucune page statique n'est servi, tu peux être obligé de suivre la logique qui t'amènes à la page qui sert l'horloge.

          Alors oui, c'est simple quand tu connais, mais quand tu es en face du client, tu ne peux pas dire, ah mais heu en fait je n'ai jamais fait ça sur version, vous pouvez appeler le mec qui vous a installé le serveur pour qu'il m'explique blabla...
          • [^] # Re: Pas si faux

            Posté par  . Évalué à -1.

            Houla! mais c'est pas le dev qui fait ça malheureux!

            Le dev, il a un point de montage sur son poste de travail, il pose les fichiers dessus et ce sont des admin (voir des script même!) qui déposent le tout sur le serveur de dev! Encore mieux : là où je bosse, ils ont une page web pour uploader leurs codes! Pas question de ssh où de scp!

            Et faut pas confondre utilisation et compétence : je sait conduire une voiture, c'est pas pour ça que j'ai des compétences de base en mécanique! Utiliser un browser web, c'est pas une compétence réseau, c'est une base de l'informatique utilisateur.

            En plus, là tu sous entend que le dev fait l'implémentation de son application : c'est rarement le cas.
            • [^] # Re: Pas si faux

              Posté par  . Évalué à 3.

              Dans l'exemple de base, qui était coller une horloge JS sur un site facturé bonbon! (genre de chose que j'ai fait (et facturé bonbon)), généralement, le client t'appel pour un site dont il ne connait rien à part que c'est le sien !

              Il te dit :
              Fais moi un devis pour un truc et généralement, tu tatonnes et tu comprend que tu dois faire toutes les choses. C'est rarement compliqué (serveur dédié ou mutualisé PHP/MySQL), mais tu dois pas lui fournir un .js, il veut que quand tu lui dis que c'est fait, il regarde sur le site, et c'est fait.

              C'est souvent comme ça que ça se passe pour les petits clients qui s'adressent au petites boite (ou au noir). Ensuite, les SSII, la c'est commercial, avant-vente, réalisation par équipe mutalisé etc..., mais ça, c'est une autre histoire :)
            • [^] # Re: Pas si faux

              Posté par  . Évalué à 3.

              Et faut pas confondre utilisation et compétence : je sait conduire une voiture, c'est pas pour ça que j'ai des compétences de base en mécanique! Utiliser un browser web, c'est pas une compétence réseau, c'est une base de l'informatique utilisateur.

              Tout dépend de la taille de l'écurie. J'imagine que les pilotes de F1 ont une vue simpliste de la mécanique ("On ajoute ou je retire une cale et on gagne la course", y a des cinéphiles ? ^^ ) alors que des amateurs ou semi-pro font les 2.
              • [^] # Re: Pas si faux

                Posté par  . Évalué à 6.

                Je pense que tu imagines mal, parce que ton pilote de F1, sans aller jusqu'à dire qu'il va connaître les moindres recoins de sa voiture, c'est pas juste un expert en conduite: il sait aussi ce qui risque de casser s'il fait trop le con sur tel ou tel virage, s'il accélère de telle manière dans telle situation, etc. Sans parler du fait que très souvent, le pilote pro a aussi pas mal trifouillé les voitures ou les karts quand il était pas encore pro ... :)
                • [^] # Re: Pas si faux

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

                  J'ai un doute tout de même.

                  D'un coté un kart et son moteur 2 temps de tondeuse, de l'autre, une F1 avec 10 powerPc avec du code généré depuis du simulink, des réglages moteurs transmis par satellites, et il y a qq années, il y avait une boite auto et des amortisseurs pilotés qui changeait aussi selon chaque virage.

                  Je pense surtout qu'il apprennent le comportement de la machine en essais car en déduire qqch uniquement d'après la téchnique doit être quasi impossible (genre prédire l'augmentation réelle de l'accélération après le changement de forme du nez de la voiture, qui modifie la charge mais aussi la trainé).

                  "La première sécurité est la liberté"

                  • [^] # Re: Pas si faux

                    Posté par  . Évalué à 3.

                    «genre prédire l'augmentation réelle de l'accélération après le changement de forme du nez de la voiture, qui modifie la charge mais aussi la trainé».

                    Tout ça, c'est du vent :-)

                    Envoyé depuis mon lapin.

      • [^] # Re: Pas si faux

        Posté par  . Évalué à 5.

        Bin voyons...Je connait des informaticiens qui n'ont aucune connaissances réseau et/ou linux, et quand je dit aucune, c'est rien, de chez rien!
        Ne parlons pas des bases en sécurité, rien qu'a voir certains admin mettre 123456 comme mot de passe root/administrateur... Quand au Hardware, vu le nombre de fois que j'ai expliqué que retirer un disque à chaud d'une baie en RAID5 ne provoquai pas d'arrêt de service!

        Maintenant, les nouveaux administrateurs systèmes, ce sont juste des pousses boutons qui se contentent d'installer des masters. Les dev ne savent plus ce que c'est la gestion de la mémoire dans un programme...

        Les services de merdes vendus des mille et des cent, c'est monnaies courante dans les métiers de l'informatique, la preuve, y'en a encore qui installe des serveurs IIS! (Troll inside).

        Pour le coup de l'horloge, javascript suffit: on a pas dit que ça devait marcher sur tout tout de suite. Pour corriger, y'a des patches...Fait par d'autres personnes que le dev d'origine de préférence...
        • [^] # Re: Pas si faux

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

          Sauf que l'IT est vu comme une charge et non investissement, donc les boites n'ont pas envie de payer pour quelqu'un qui sait gérer la mémoire.

          Ou alors, il achète un programme externe à un éditeur qui lui fait attention...

          "La première sécurité est la liberté"

          • [^] # Re: Pas si faux

            Posté par  . Évalué à 2.

            Vraie vie d'un presta :

            --D-- Bonjour madame la Cellule Archi, j'ai besoin d'utiliser une librairie externe pour ajouter une horloge à mon (votre) application. Laquelle me conseillez-vous ?

            --CA-- Pour ajouter une librairie Js à votre (notre) application il faut passer le cycle de validation ce qui prendra six mois (voir plus).

            --D-- Mais je doit livrer demain (c'est imposé). Comment faire ?

            --CA-- Débrouillez-vous mais il est interdit d'ajouter une lib qui ne soit validée !

            --D-- Ah bon. Bin je vais faire un truc tout pourite à la manno vite fait pour demain.

            --CA-- OK.
            • [^] # Re: Pas si faux

              Posté par  . Évalué à 1.

              En même temps, utiliser une librairie à la place de 5 lignes de code ^^"

              Envoyé depuis mon lapin.

            • [^] # Re: Pas si faux

              Posté par  . Évalué à 2.

              Tien, c'est marrant ça, j'ai déjà vécu ça!

              Et pour du GNU/Linux en plus!
            • [^] # Re: Pas si faux

              Posté par  . Évalué à 1.

              En JS, il peut embarquer la "lib" directement dans le code... Donc dans son code d'horloge, il n'avait qu'a copier coller le code la "lib" :)
    • [^] # Re: Pas si faux

      Posté par  . Évalué à 2.

      et produire suffisamment de bugs pour faire survivre le métier.

      Comme http://freeworld.thc.org/root/phun/unmaintain.html ?

      (Une archive est disponible ici : http://web.archive.org/web/20071027111125/http://freeworld.t(...) )
    • [^] # Re: Pas si faux

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

      C'est triste ta vision de l'informatique.

      J'aurais plutôt formulé de la façon suivante :
      J'explique sans arrêt à mes étudiants que l'informatique, c'est un domaine ingénieux et en plein développement.

      Parce qu'en général, les programmes qui font les choses à notre place, ils sont loin d'être simple à écrire. Et puis bon, escroc[1], tu y vas un peu fort. C'est assez triste d'insinuer que les développeur font exprès de laisser des bugs dans leurs programmes. C'est juste un domaine très compliqué.

      [1] http://fr.wiktionary.org/wiki/escroquer
    • [^] # Re: Pas si faux

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

      Domaine de feignants ?

      Moi qui pensais que c'était le boulot des autres qu'on automatisait. Et que c'était nous qui mettions cette automatisation en place...
      • [^] # Re: Pas si faux

        Posté par  . Évalué à 2.

        Oué enfin tout ce que tu fais, si tu peux l'automatiser tu le fais aussi non ?
  • # Ten Things I Hate About Object-Oriented Programming

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

    Une autre entrée de blog contenant quelques citations qui devraient plaire aux c++ hateboys:

    http://blog.jot.fm/2010/08/26/ten-things-i-hate-about-object(...)
  • # une autre solution.

    Posté par  (Mastodon) . Évalué à 3.

    INTERCAL. The only one true wo language.
  • # C++ est vieux

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

    Un préprocesseur à la place d'une vrai gestion des packages, des compilateurs moyennement compatibles entre eux, une bibliothèque standard anorexique, aucune prise en charge de la compatibilité binaire...

    C++ traîne un tas de boulets, mais peut-on aujourd'hui le remplacer par D, ooc ou Go pour un nouveau projet?

    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

    • [^] # Re: C++ est vieux

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

      bah... Aucun préprocesseur en Java, donc impossible de faire deux "binaire" différents suivant les besoins (par exemple : une boucle lente mais qui fait quelques chose en plus, ou une boucle rapide, je comprend pas qu'on ne hurle pas à ce genre de truc de base qui manque dans d'autres langage), aucune compatibilité source entre Python 2 et 3 (faut un outil de conversion, qui ne marche pas à 100%, du coup on se retrouve avec 36 version de la VM Python installée sur sa machine, super) désolé, mais de mon côté je vois en C/C++ une puissance bien accrue et je ne supporte pas les manques des autres (oui, pas de compatibilité binaire en C++, mais en face pas de compatibilité source en Python, quelle blague!), ou encore un gentil dictateur comme Oracle (Java) ou Microsoft (C#) pour définir le langage la où la démocratie est de mise en C++ (ben oui, la démocratie c'est plus lent que la dictature, mais je préfère quand même, je préfère des langage où la spécification n'est pas un compilateur de référence), une lenteur où les gens s'extasient quand leur compilo affiche un +50% en rapidité entre deux versions (Python dans mes souvenirs, moi je réagis "ah, alors on m'a menti quand on me disait que Python était rapide...") et j'en passe.

      Alors certes il manque plein de choses en C++, mais ce langage n'est clairement pas le plus mal placé dans la bataille, chaque langage a des avantages et des inconvénients, pendant que certains crachent sur C++, C++ (et son pote C, avec lequel il est compatible) suivent leur petit chemin.
      • [^] # Re: C++ est vieux

        Posté par  . Évalué à 7.

        Le pire manque dans la plupart des langages à typage statique, à mon avis, c'est les typedef. Qu'est ce que tu me dit si jamais un jour je découvre que tes calculs en float que tu fait presque partout ne sont pas assez précis et qu'il faudrai utiliser des doubles ? En C++ tu aurai défini des typedef qui se dépendent les un les autres et il n'y aurai pas grand chose à changer. Le triptique généricité+typedef+typename, c'est vraiment quelque chose qui me manque dans les autres langages.
        • [^] # Re: C++ est vieux

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

          Le triptique généricité+typedef+typename, c'est vraiment quelque chose qui me manque dans les autres langages.

          C'est un autre exemple de ce que je ne comprend pas qu'on ne hurle pas que ça manque dans les autres langages (mais j'avoue ne pas assez l'utiliser, voire pas du tout l'utiliser, et c'est une énorme erreur qui me jouera un tour un jour). Mais bon, quand je vois le succès de PHP sans typage + des bidouilles à coup de == et === pour compenser, il ne faut s'étonner de rien...
          • [^] # Re: C++ est vieux

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

            Changer la déclaration "float" par "double". C'est compliqué ? J'ai un peu de mal à comprendre.

            J'ai du mal à comprendre ton exemple avec 2 version de boucle. Pourquoi ne pas faire un seul binaire avec les 2 boucles ?

            "La première sécurité est la liberté"

            • [^] # Re: C++ est vieux

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

              Changer la déclaration "float" par "double". C'est compliqué ? J'ai un peu de mal à comprendre.

              Je te laisse me montrer comment tu fais pour changer dans 1000 fichier "float" en "double", sachant que un "find and replace" ne peut pas fonctionner, vu qu'on veut changer qu'une fonction/méthode, et qu'il faut donc savoir exactement quelle variable va être utilisée par quelle fonction, et donc changer chaque occurrence en réfléchissant à quoi elle sert (tout mettre en double n'est pas une solution pour des raisons de taille en mémoire). Moi je sais qu'en 5 minutes j'ai fais le changement, je te laisse me dire combien de temps tu vas mettre. Sans compter qu'en terme de lisibilité c'est quand même mieux de savoir que telle truc correspond à telle chose (exemple de base avec une ouverture de fichier : "streampos" est utilisé, et je sais en permanence que ma variable est une position dans un flux rien qu'en passant la souris dessus il m'affiche son type précis, il est de 32-bits sur des systèmes ne gérant pas les fichiers de plus de 4 Go, il est de 64 bits sur des systèmes gérant des fichiers >4 GB. Et ce sans aucun changement dans le code source développé en 1990 quand les fichiers de 4 Go étaient inconnus, et ce sans rien changer au reste. Le jour où un fichier passera à à plus de 2^64 octets - on imagine pas ça maintenant, mais en 1990 on n'imaginait pas non plus des fichiers de 4 GB - 5 minutes de développement dans la bibliothèque standard et des millions de lignes de code sauront gérer des gros fichiers sans avoir de dommage colatéral)

              J'ai du mal à comprendre ton exemple avec 2 version de boucle. Pourquoi ne pas faire un seul binaire avec les 2 boucles ?

              Dans mon cas, j'ai plusieurs exemples d'utilisation :
              - Activation de traces de debug ou de fonctionnalité avancées : c'est lent, avec des #ifdef je désactive ces traces à la compilation finale, et c'est dans les 10x plus rapide du coup. Alors je pourrai mettre des if (Trace || JeVeuxTelleFonctionalité) {...] else {...} mais d'une c'est très chiant à écrire, et de deux la taille du binaire final double. Un #ifdef dans la définition de classe qui désactive le truc, et tout le code est à jour en un #define
              - Autre cas d’utilisation : désactiver des fonctionnalités pour gagner de la place. Dans mon cas, je développement principalement un produit audio et vidéo, mais certains l'utilisent sur des petites machines (déjà, ça élimine C# et Java et Python, poubelle, la VM passe pas, à la limite J2ME j'imagine passerait mais ils n'ont pas testé) et n'activent que la partie audio par exemple, et virent le reste. Ils peuvent décider entre taille, vitesse, et fonctionnalités.

              Avec C/C++, l'utilisateur peut jouer entre taille, vitesse, fonctionnalités, c'est maléable. Avec d'autres langages, point de choix, tu te tapes le choix du développeur (Java fait le bonheur des vendeur de disque durs).

              Mais la contrepartie de cette puissance du C++ (pas que les #define, ça c'est la base, mais les templates, l'OO...) est qu'il faut de "bons" codeurs, et que du coup je paye plus cher pour avoir un codeur C/C++ que pour un codeur PHP, et de loin.
              • [^] # Re: C++ est vieux

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

                je paye plus cher pour avoir un codeur C/C++ que pour un codeur PHP
                C++ a été créé pour augmenter le salaire des programmeurs

                CQFD.

                "It was a bright cold day in April, and the clocks were striking thirteen" - Georges Orwell

              • [^] # Re: C++ est vieux

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

                Je ne comprends vraiment pas ton histoire de float, cela n'a pas de sens. Si tu récupères un type "en cascade", tout ce que tu fais est simplement de changer float en double "globalement".

                Ce n'est pas en récupérant le type à un endroit que tu va faire des opérations en double d'un coté et en simple ensuite. Dans les 2 cas, tu dois te tapper ton algo.

                Je comprends l'intérêt d'activer ou d'enlever des trace de debug mais un simple 'if' fait le même boulot, si la VM n'est pas trop stupide, cela aura le même effet qu'un #ifdef en java.

                Pour le gain de place, je veux bien y croire. Quoiqu'avec les linker intelligent dans le cas des trucs compilé, le linker fait aussi le ménage dans les trucs inutiles.

                "La première sécurité est la liberté"

                • [^] # Re: C++ est vieux

                  Posté par  . Évalué à 1.


                  Je comprends l'intérêt d'activer ou d'enlever des trace de debug mais un simple 'if' fait le même boulot, si la VM n'est pas trop stupide, cela aura le même effet qu'un #ifdef en java.


                  Alors là, il faut que tu m'expliques comment la vm peut faire pour optimiser un if de ce genre... Dans le cas du #ifdef, le code est naturellement optimisé, dans le cas d'un if, même si tu t'amuses à retenir dans ta VM que tel type de conditionnelle est toujours évaluée à true, tu te retrouves quand même à devoir faire un jump derrière, et je pense pas que ça soit strictement équivalent en termes de perfs.
                  • [^] # Re: C++ est vieux

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

                    https://secure.wikimedia.org/wikipedia/en/wiki/Dead_code

                    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

                    • [^] # Re: C++ est vieux

                      Posté par  . Évalué à 0.

                      En java, oui, mais là on parle de language avec une VM (pas nécessairement d'un hybride comme java ou C# donc), ce qui veut dire que les langages interprétés ayant une vm ne profitent pas de ce genre d'optim (et mon propos n'a un sens que pour ces languages en fait).
                      • [^] # Re: C++ est vieux

                        Posté par  . Évalué à 3.

                        Ben de nos jours t'as les JIT ... et les JITs génèrent du code natif pour les chemins réellement empruntés, donc au pire les chemins jamais empruntés, ils s'en foutent un peu.

                        Au pire un jump ou un test c'est une optimisation pas forcément très significative ...
                • [^] # Re: C++ est vieux

                  Posté par  . Évalué à 1.

                  Si tu récupères un type "en cascade", tout ce que tu fais est simplement de changer float en double "globalement".

                  Non, un arbre ça n'est pas un fil.

                  Si il a une méthode PreciseCalculator::calculate prenant un PreciseCalculator::float_type, il n'y a que les fonctions qui utilisent ce calculate() qui utiliseront ce type. Sachant que ces fonctions peuvent très bien de leur coté redéfinir un typedef si jamais leur type doit être indépendant de PreciseCalculator::float_type.

                  les autres méthodes, comme FastCalculator::calculate() peuvent continuer à utiliser des floats si elle n'utilisent pas PreciseCalculator. Et si UberFastCalculator est trop lent avec des floats, alors il peut utiliser des FixedPoint à la place, sans impacter FastCalculator.

                  Mais ça, ça n'est que pour les typedef. Supposons que l'on soit intelligent, et que l'on définisse Calculator<FloatType> à la place. Les fonctions appelantes devront choisir quel Calculator utiliser. Et le plus simple pour ça, c'est encore de définir un typedef Calculator<FixedPoint> calculator_type;

                  La fonction appelante n'aura ensuite qu'a utiliser des 'typename calculator_type::float_type' (c'est trop long comme nom ? utilise un typedef ;) ) et elle pourra changer d'implémentation comme elle le veut, ses types seront mis à jour automatiquement. Elle pourra aussi exporter ces types vers les fonctions appelantes de la fonction appelante, ect .... sans impacter des fonctions qui n'ont rien à voir et qui utilisent Calculator<double>.
        • [^] # Re: C++ est vieux

          Posté par  . Évalué à 1.

          Est-ce que ce que tu decris, ca peut etre eviter par l'utilisation d'heritage ?

          Ben oui le typedef c'est bien, mais dans 90% des cas, on pourrait s'en passer ?
          • [^] # Re: C++ est vieux

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

            Quand on a le choix entre:

            a) le typedef

            b) utiliser le nom complet de la classe template générique:

            std::map<std::string, std::vector >::iterator it;

            Map.Entry<String, List>

            c) faire des classes qui sont des coquilles vides pour éviter ça

            class MaTrucMap extends Map.Entry<String, List> {
            };


            Alors j'utilise tout le temps en C++ le typedef pour donner un joli nom à mes templates. Je pense que "name_age_map_t" sera plus compréhensible que sa version développée.
      • [^] # Re: C++ est vieux

        Posté par  . Évalué à 3.

        Parce que justement le but est d'avoir un code qui te donne le meme binaire... Si tu dois reproduire un probleme trouve chez un client, c'est bien plus simple de ne pas avoir des binaires differents. Un code egale un binaire. Point.
        Sinon tu ne t'extasies pas devant llvm vs gcc ? toi surement pas mais plein de developpeur C++ le font...

        Par contre, la ou je te rejoins, chqaue langage a des avantages et des incovenients. les langages Java et .NET sont assez sympathique pour des methodes de programmations d'agiles, ils fournissent toutes les briques de bases pour en sortir un minimum d'information ou d'aller faire des trucs assez sympathique - regarde spring.net ou la programmation par aspect.

        Tout depend de ton projet. Par contre si je dois sous-traiter mon developpement en france ou ailleurs, je penses que j'y reflechis a deux fois, comme dit precedemment, Java/.Net permettent de faire des choses un peu moins crade que le C++ et ca, pour la maintenance c'est vraiment pas mal !
        Je te dirais aussi d'ailleurs que le C++ est plus elitiste que Java ou .NET. Je l'ai vecu sur des projets entreprises/industries ou l'utilisation des templates etaient interdites en C++, ou avec parcimonie parce que la boite n'avait pas les competences pour la maintenance, ou se retrouverait sans.

        Par contre, je trouves que la normallisation C++ est trop longue, que ce qui etait prevu avant 2010 (hint : c'etait la le nom C++0x) ben ne sont toujours pas la et pour moi la ca craint.
        Les evolutions attendue sont la pour ameliorer la visibilite du code, ce qu'a reussi a faire Java et surtout C#.
      • [^] # Re: C++ est vieux

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

        C'est pour ça que je n'ai pas parlé de Java/C#/Python comme remplaçants potentiels...

        Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

        • [^] # Re: C++ est vieux

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

          oui, mais bon, parler de langages "jouets" utilisé par personne, forcément je ne connais pas. L’intérêt d'un langage (comme d'une langue!) c'est d'être utilisé (et de préférence : pas que par une niche d'experts, cas pour certains langages, très utilisés dans certaines niches mais incapable d'être plus généraliste).

          Bref, avant d'être remplaçant, faudrait déjà que tes remplaçants potentiels soient un peu concurrent et arrive à un niveau d'utilisation visible, qu'ils démontrent leur intérêt.
          • [^] # Re: C++ est vieux

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

            C'est bien le problème. C++ est une grosse bouse, mais il n'a pas de concurrent sérieux.

            Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

            • [^] # Re: C++ est vieux

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

              Note que je n'ai pas dit le contraire ;-).

              Il y a pas mal de choses qui me plaisent dans C# par exemple, et que j'aurai bien aimé avoir dans C++ (pour pas me trimbaler une VM...), C++ est une grosse merde compréhensible parfois dans la façon de devoir écrire son code, on peut pas tout avoir malheureusement, donc je continue avec le pire langage que je connais, pire à l’exception des autres...
              • [^] # Re: C++ est vieux

                Posté par  . Évalué à 2.

                Question idiote d'un non développeur : est-ce que le fait d'utiliser C# astreint à l'utilisation d'une VM ?

                Est-ce qu'on ne pourrait pas développer un compilateur qui génère un binaire à partir d'un code C# ? Après tout, on peut le faire en Python, au moins sous Windows avec py2exe.

                Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

                • [^] # Re: C++ est vieux

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

                  à mon avis, un code est un code, on peut en faire ce qu'on veut derrière. Faut juste que quelqu'un se paluche le travail (modulo les brevets j'imagine), alors qu'il a du code C ou C++ et plein de compilateurs déjà existant pour faire "la même chose"
                  Mais comme c'est un gros travail avec peu d'interêt derrière (question retour sur investissement), m'étonnerai que quelqu'un s'y attelle... (c'est déjà un exploit qu'on ai Mono sous Linux de mon point de vue, ça pourrait être lâché du jour au lendemain).

                  Bref, il n'y a qu'à - Il faut qu'on.
                  • [^] # Re: C++ est vieux

                    Posté par  . Évalué à 2.

                    OK, donc C# en soit n'est pas réellement un problème.

                    Après, Mono est libre, n'importe qui peut donc se baser dessus pour en créer un compilateur (sous réserve d'avoir les compétences, bien sûr).
                    Si personne ne l'a fait, c'est qu'a-priori personne n'en voit l'intérêt, j'imagine donc que peu de monde considère l'usage d'une VM comme un inconvénient.

                    Article Quarante-Deux : Toute personne dépassant un kilomètre de haut doit quitter le Tribunal. -- Le Roi de Cœur

                    • [^] # Re: C++ est vieux

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

                      j'imagine donc que peu de monde considère l'usage d'une VM comme un inconvénient.

                      Les VM sont à la mode en effet, mais je pense aussi parce que ceux qui ne veulent pas de VM utilisent tout simple un langage qui a déjà des compilateurs (C++ et C ne sont pas morts, loin de là) plutôt que de dépenser des sous à faire un compilateur C#.
                    • [^] # Re: C++ est vieux

                      Posté par  . Évalué à 3.

                      > Si personne ne l'a fait, c'est qu'a-priori personne n'en voit l'intérêt, j'imagine donc que peu de monde considère l'usage d'une VM comme un inconvénient.
                      Non, juste que ceux qui considèrent que c’est un inconvénient se contentent d’aller voir ailleurs, C/C++/Objective-C, D, Go, ooc, Vala rien que pour des langages compilés qui produisent du code natif… le choix est large.
                • [^] # Re: C++ est vieux

                  Posté par  . Évalué à 2.

                  Théoriquement, c’est possible avec xmlvm [http://www.xmlvm.org/overview/]. Après, j’ai jamais essayé.
  • # "Worse" is /not/ C++

    Posté par  . Évalué à 5.

    > On peut aussi noter que C++ est [une] application bizarre du Worse is Better.

    C'est curieux, j'avais lu l'article original[0] de Richard P. Gabriel décrivant le principe et C++ ne me semble pas du tout rentrer dans la catégorie "Worse is better". Explications: R.P. Gabriel était un lisper et se gargarisait d'utiliser des interpréteurs/systèmes d'exploitation en Lisp aux fonctionnalités top-moumoutes alors que les développeurs d'Unix se contentaient juste de faire fonctionner la machine, sans porter grande attention aux cas extrêmes (comment mon programme va réagir si un interrupt intervient en plein milieu d'une communication avec un périphérique externe et chamboule par là-même tous mes registres ?).

    D'où l'expression "le pire est meilleur" : Unix ne gérait certes pas correctement les interrupts et avait donc moins de fonctionnalités mais il était plus simple à comprendre / coder et était utilisable là, de suite.

    Du coup, C ou Java, qui simplifient certains principes à l'extrême (genre pas de tail-call-optimisation et obligation de construire soi-même son trampoline, gestion de la mémoire incompréhensible "pour votre bien", etc. ) correspondent bien mieux à la définition du "worse is better".

    C++, bien qu'imparfait, s'efforce quand même de codifier et de fournir des outils pour gérer milles et un cas d'utilisations ésotériques (multiples smart-pointers, un pour chaque jour du mois, multiples possibilités niveaux héritages, un bon gros paquet de conteneurs et des opportunités de migraines infinies via les templates).

    Non, non, si quelqu'un cherche un langage a accroché au fronton du hall "worse is better", qu'il commence avec PHP ou bash, mais pas avec C++.

    [0] pour ceux qui auraient raté leur culture "wanabee-hacker", ça ce passe là-bas : [http://dreamsongs.com/WIB.html].
    • [^] # Re: "Worse" is /not/ C++

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

      C'est pour !a que je disais que C++ était une application bizarre du worse is better : ça colle pas trop avec le modèle.

      D'ailleurs dans son "Model of software acceptance" son explication de C++ est elle aussi bizarre.
      J'avoue que ça m'interroge : ce langage est franchement mauvais, complexe, peu prévisible.

      Mais il a une syntaxe à la C : donc facile à apprendre.

      En fait, la principale raison de son succès, AMHA, c'est qu'en fait C++ était à l'époque le seul langage à permettre de faire de l'objet avec des perfs. Smalltalk, c'était, c'est encore lent (interprété).
      ObjectiveC a l'air pas mal, mais je ne sais pas ce que ça vaut.

      Donc, comme C++ était seul sur cette niche du "objet mais rapide", il a pris son essor et est devenu bloat.

      D'ailleurs quand on utilise de l'objet en c++ ça devient lent en fait, mais ya débat : http://coldattic.info/shvedsky/pro/blogs/a-foo-walks-into-a-(...)

      « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

    • [^] # Re: "Worse" is /not/ C++

      Posté par  . Évalué à 3.

      >> Du coup, C ou Java, qui simplifient certains principes à l'extrême (genre pas de tail-call-optimisation et obligation de construire soi-même son trampoline, gestion de la mémoire incompréhensible "pour votre bien", etc. ) correspondent bien mieux à la définition du "worse is better". <<

      Tu as du te planter dans tes exemples: Java a un GC..

      Pour le TCO, quand je vois comment la plupart des examples qui utilisent TCO sont moches franchement cela ne me manque pas, beurk..

      Pour C++, ce n'est pas tellement "worse is better" mais "cheap is better" a mon avis le C++ doit son succès au fait qu'il a des performances plutôt bonne et a eu une compilateur gratuit rapidement, le DoD aurait dut sponsoriser un compilateur gratuit pour Ada beaucoup plus tôt: maintenant tout le monde utiliserait Ada au lieu de C++..

  • # Ya pire ......

    Posté par  . Évalué à 9.

    Java.
    • [^] # Re: Ya encore pire ......

      Posté par  . Évalué à -2.

      python
    • [^] # Re: Ya pire ......

      Posté par  . Évalué à 10.

      Puisque l'on nage en plein trolls je propose PHP comme le pire des langages utilisés dans l'industrie (je mets de coté des langages expérimentaux comme Lissac ou d'autres farfelues comme Brainfuck).

      Je qualifierai personnellement PHP d’aberration.

      Petit quiz, qu'affiche ce magnifique bout de code ? : http://www.gburri.org/bordel/php_c_de_la_merde/tests.php.txt
      • [^] # Re: Ya pire ......

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

        C'est dirigé contre moi ?

        « Il n’y a pas de choix démocratiques contre les Traités européens » - Jean-Claude Junker

      • [^] # Re: Ya pire ......

        Posté par  . Évalué à 7.

        typage faible + la gestion bizarre des conversion string -> int en php + la syntaxe abscons inspiré de perl = 42
      • [^] # Re: Ya pire ......

        Posté par  . Évalué à 1.

        ben 42 ...

        Le seul truc vraiment aberrant dans ton exemple c'est le 0 == "abc" qui renvoie TRUE. Le reste est assez cohérent avec les "axiomes" de PHP.
        On aime ou on aime pas, personnellement je n'aime pas, mais je ne trouve pas ça pour autant aberrant. Alors que la convention de nommage de la stdlib par exemple ...
    • [^] # Re: Ya pire ......

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

      “If Java had true garbage collection, most programs would delete themselves upon execution.” — Robert Sewell

      dsl...

      "La première sécurité est la liberté"

  • # Commentaire supprimé

    Posté par  . Évalué à 10.

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

  • # C++ est vieux mais l'article aussi…

    Posté par  . Évalué à 3.

    Bon, maintenant qu'on a bien disserté dessus, on peut p'tet dire que l'article en question date de 1998… :-)
  • # Non, mais perso ....

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

    Depuis que je fais du java, gcc d'utiliser le C++

Suivre le flux des commentaires

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