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 :

Henrique Bucher : « C++ aujourd’hui est comme Fortran : il a atteint ses limites »


Sujet :

C++

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    8 455
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 8 455
    Points : 197 767
    Points
    197 767
    Par défaut Henrique Bucher : « C++ aujourd’hui est comme Fortran : il a atteint ses limites »
    C++ aujourd’hui est-il comme Fortran ? Aurait-il a atteint ses limites ?
    Un ingénieur explique pourquoi il ne s'adonne plus beaucoup au C++ moderne

    C++ est l'un des langages de programmation les plus largement utilisés dans le monde d’après de nombreux baromètres, mais également notre sondage lancé en 2015 où le langage conservait une place dans le peloton de tête des langages préférés des développeurs. Grâce à la flexibilité du langage, il est possible de l’utiliser pour créer une large gamme d’applications, mais également des jeux. Depuis, C++ a évolué via plusieurs itérations.

    Henrique Bucher est un ingénieur spécialisé dans la conception de logiciels scientifiques qui travaille dans le secteur des services financiers. Partageant son expérience dans un billet blog, il a expliqué les raisons pour lesquelles il ne s’adonne plus beaucoup au C++ moderne.

    Une perte de performance : selon lui, le C++ moderne intègre une potentielle perte de performance à cause des structures qui deviennent de plus en plus complexes et qui sont passées au compilateur. « C’est ici que Fortran excelle », affirme-t-il en expliquant que « grâce à un langage plus simple, les compilateurs sont en mesure de l’optimiser plus efficacement que s’il s’agissait d’un code C/C++ équivalent ». Se basant sur son expérience sur les transactions à haute fréquence (qui désignent l’exécution à grande vitesse de transactions financières faites par des algorithmes), mais aussi dans l’industrie du jeu, il estime que c’est une utopie de croire que les templates vont être plus rapides parce que le code C++ va s’évanouir comme par magie durant la compilation. « C’est même l’opposé : de plus petits octets de code peuvent être compilés, débogués et optimisés en observant l’assemblage généré de façon bien plus efficace que les templates ».

    Les temps de compilation : Il affirme que les templates augmentent de façon significative le temps de compilation à cause de la recompilation d’un plus grand nombre de fichiers impliqués. « Tandis qu’une simple classe traditionnelle C++ sera recompilée si les fichiers en-tête directement inclus sont modifiés, dans un paramétrage en moderne C++, un simple changement va souvent provoqué une recompilation globale. Il n’est pas rare de voir des applications développées en C++ moderne qui prennent 10 minutes pour être compilées, tandis qu’avec le C++ traditionnel cette durée se compte en secondes pour un changement simple ».

    La maintenance : citant Edger Djikstra, un mathématicien et informaticien néerlandais du XXᵉ siècle, qui a déclaré que « la simplicité est une condition préalable à la fiabilité », il estime que ce mantra peut être appliqué directement aux templates : « ce n’est pas que la fonctionnalité en elle-même est mauvaise, mais sa structure inhérente conduit à un code complexe qui pourrait éventuellement faire perdre la caractéristique la plus désirée d'un code source: la facilité de compréhension ». « Lorsque vous programmez des systèmes de transactions qui peuvent envoyer 100 000 commandes par seconde depuis des plateformes avec des stratégies qui sont implémentées en production sur un cycle de production de deux jours, vous VOULEZ la simplicité, vous avez BESOIN de la simplicité. Ce qui me conduit à la règle suivante : “si vous êtes incapables de déterminer en une minute ce que fait un fichier C++, supposez que le code est incorrect” ».

    Il continue en disant que la véritable raison pour laquelle il ne s’adonne plus au C++ moderne, bien qu’il reconnait qu’il est plutôt efficace dans certains cas de figure, est « qu’il y a tellement de choses développées en industrie sur lesquelles je dois porter mon attention ». « C++ aujourd’hui est comme Fortran : il a atteint ses limites. De nos jours, il y a des interfaces si rapides que la notion de “cycle fermé” cesse d’exister dans certaines parties du système. La vitesse est telle que si deux octets sont envoyés au même moment depuis deux canaux adjacents, ils vont probablement se désynchroniser après avoir parcouru moins d’un mètre. Pour gérer ce type de vitesse qui est livré en masse par les entreprises technologiques, C++ ne peut plus être utilisé parce qu’il est intrinsèquement en série, même dans des systèmes massivement multithread comme les GPU ».

    « Aujourd’hui, le “technologue moderne” doit se fier à un nouvel ensemble de langages : Verilog, VHDL. Les nouveaux technologues doivent être en mesure de concevoir leurs propres CPU, créer leur propre carte mère virtuelle, autrement ils vont être emportés par l’avalanche d’avancements technologiques qui arrive dans les prochaines années ».

    « Ce n'est pas pour dire qu'il est impossible de créer des plateformes basées sur le C++ moderne avec une faible latence et rapides, mais cela crée de nombreux obstacles qui peuvent paralyser une équipe ou générer des graphiques extrêmement difficiles à optimiser avec lesquels les compilateurs C++ auront des difficultés ».

    Il conclut en disant que, de son point de vue, C++ est un langage comme Fortran : il montre des signes de vieillesse. Pour lui C++ est génial, mais n’est juste « plus suffisant » : un nouveau technologue ne saurait donc plus être restreint à un tel environnement sérialisé et garder son esprit ouvert pour pouvoir profiter de nouveaux outils et nouvelles techniques afin de gérer la nouvelle génération de technologies qui seront livrées durant les prochaines décennies.

    Source : blog Henrique Bucher

    Et vous ?

    Partagez-vous son point de vue ?

    Voir aussi :

    Quel est votre langage de programmation préféré en 2015 ? Partagez votre expérience sur le langage de votre choix

    Forum C++

    Rubrique C++
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 503
    Points : 5 705
    Points
    5 705
    Par défaut
    Il faut reconnaitre que comparé à des langages modernes et bien foutus comme par exemple Java, C# ou Swift : C++ ca reste un énorme casse tête .
    Mais bon pour faire un logiciel commercial ou un jeux qui demande des performances C++ reste le plus souvent encore incontournable, mais pour le reste en grandes entreprises Java et C# ont pris le plus gros du marché, ça se voie d'ailleurs car c'est sur ces deux langages qu'il y à le plus d'offres d'emploi, ici par exemple : http://emploi.developpez.com
    « L’humour est une forme d'esprit railleuse qui s'attache à souligner le caractère comique, ridicule, absurde ou insolite de certains aspects de la réalité »

  3. #3
    Membre extrêmement actif
    Homme Profil pro
    Graphic Programmer
    Inscrit en
    Mars 2006
    Messages
    1 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Graphic Programmer
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 549
    Points : 3 948
    Points
    3 948
    Par défaut
    je suis fan du c++ et je suis plutôt d’accord avec lui. heureusement quand on eut faire plus simple et plus spécifique pour l'optimisation il y a le c

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 138
    Points : 407
    Points
    407
    Par défaut
    Je trouve la critique un peu radicale même si c'est vrai que le C++ est un peu une usine à gaz. On comprend mieux en lisant le billet original car son argument est surtout pourquoi passer un temps fou à essayer de devenir un gourou du C++, alors qu'en terme de perf le passage à des technos à base de fpga est beaucoup plus intéressant. Mouais. C'est pas faux. Juste un peu radical quoi.

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Ouh là, ça va troller fort...

    Précisons juste que C++ a beaucoup de domaines d'application très différents, chose que peu de langages peuvent prétendre. Faut bien avoir ça en tête avant de tirer des généralités à partir de ce qui peut être constaté dans un milieu particulier, d'autant plus quand il s'agit du trading haute fréquence (qui est assez... particulier quand même). Pour rappel, il ne prône pas d'utiliser swift ou Go à la place, mais VHDL : "un langage de description de matériel destiné à représenter le comportement ainsi que l'architecture d’un système électronique numérique"...

    Un langage spécialisé sera toujours plus simple et efficace qu'un langage généraliste. Ca ne veut pas dire que les langages généralistes ont fait leur temps. Enfin, je ne pense pas.

  6. #6
    Inactif  

    Homme Profil pro
    NR
    Inscrit en
    Juin 2013
    Messages
    3 715
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : NR
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2013
    Messages : 3 715
    Points : 1 184
    Points
    1 184
    Billets dans le blog
    9
    Par défaut
    C'est l'une des raisons qui m'a poussé à abandonné complètement le c++ il y'a quelques années déjà.

    Aujourd'hui je me suis reconvertie dans le python, le coté développement très rapide me plait beaucoup dans ce langage. Et pour les performances on arrive à contourner le problème avec les bibliothèques codé en C nativement, ou bien on peut aussi mettre du C dans son code python si c'est nécessaire.

  7. #7
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 138
    Points : 407
    Points
    407
    Par défaut
    Citation Envoyé par Mingolito Voir le message
    ... comparé à des langages modernes et bien foutus comme par exemple Java, C# ou Swift ...
    Java un langage moderne!? non non pas taper!

    Mis à part les librairies et framework Java je ne vois pas trop l'intérêt de ce langage (qui a maintenant plus de 20 ans) si on se limite au design du langage.

  8. #8
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 565
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 565
    Points : 7 648
    Points
    7 648
    Par défaut
    Je pense que l'évolution du C++ en veut trop.
    * amélioration des performances avec une meilleure maîtrise des opérations de bases (x-value, atomic, ...) pour les logiciels de bas niveaux optimums.
    * simplification des notations pour le logiciel de haut niveau (lambda, concepts, ...)
    Le tout en restant compatible avec le C++ d'il y a 30 ans et même avec le C !
    La maîtrise du C++ oblige à en comprendre tous les rouages. L'apprentissage du C++ est de plus en plus long.
    La concurrence des langages de haut niveaux d'un côté et des codes FPGA de l'autre, force le C++ a un grand-écart qui risque de lui être fatal.
    Je ne le rejoint pas quant à la perte de performance. Si on en connait bien les concepts, on pourra écrire un code d'assez haut niveau qui pourra être optimisé. Et le fortran ou le C ne font pas mieux, peut-être un nouveau langage de bas niveau mieux adapté au multi-processing?

  9. #9
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 503
    Points : 5 705
    Points
    5 705
    Par défaut
    Citation Envoyé par ParseCoder Voir le message
    Java un langage moderne!? non non pas taper!

    Mis à part les librairies et framework Java je ne vois pas trop l'intérêt de ce langage (qui a maintenant plus de 20 ans) si on se limite au design du langage.
    Bjarne Stroustrup a développé C++ au cours des années 1980. Le langage Java reprend en grande partie la syntaxe du langage C++, néanmoins, Java a été épuré des concepts les plus subtils du C++ et à la fois les plus déroutants, tels que les pointeurs et références, ou l’héritage multiple contourné par l’implémentation des interfaces. Les concepteurs ont privilégié l’approche orientée objet de sorte qu’en Java, tout est objet à l’exception des types primitifs (nombres entiers, nombres à virgule flottante, etc.). Le langage Java est issu d’un projet de Sun Microsystems datant de 1990 : l’ingénieur Patrick Naughton n’était pas satisfait par le langage C++ utilisé chez Sun.

    Donc Java est plus "moderne" que C++, mais effectivement moins moderne que C# ou Swift, c'est une simple vérité historique et technique le reste c'est du troll mais ce débat est fait pour ça

    A quoi sert Java ? à gagner sa vie, http://emploi.developpez.com :
    - Offres C++ : 722 résultats
    - Offres Java : 3811 résultats

    Beaucoup de développeurs Java font du Java non pas parce que c'est leur langage préféré, mais parce que c'est sur Java qu'on leur à proposé le plus haut salaire .
    « L’humour est une forme d'esprit railleuse qui s'attache à souligner le caractère comique, ridicule, absurde ou insolite de certains aspects de la réalité »

  10. #10
    Membre confirmé
    Profil pro
    C Embarqué / C++ Qt
    Inscrit en
    Janvier 2010
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : C Embarqué / C++ Qt

    Informations forums :
    Inscription : Janvier 2010
    Messages : 231
    Points : 648
    Points
    648
    Par défaut
    Citation Envoyé par Stéphane le calme Voir le message
    « Aujourd’hui, le “technologue moderne” doit se fier à un nouvel ensemble de langages : Verilog, VHDL. Les nouveaux technologues doivent être en mesure de concevoir leurs propres CPU, créer leur propre carte mère virtuelle, autrement ils vont être emportés par l’avalanche d’avancements technologiques qui arrive dans les prochaines années ».
    Euuuuuuuh, c'est moi ou l'auteur compare un logiciel C++ avec un système embarqué FPGA ?

    Sinon j'ai pas trop compris ou il voulait en venir, surtout pour les template : "Quand on ne les utilise plus, ça compile plus vite"...... ouiiiiiii d'accord....

    si vous êtes incapables de déterminer en une minute ce que fait un fichier C++, supposez que le code est incorrect
    Ca marche avec du C ça aussi ?
    J'ai Linus au téléphone, on est entrain de tout revoir l’architecture du noyau, c'est le bordel


    ... Et puis j'aimerai bien voir si j'arrive à comprendre son code VHDL en 1 minute

  11. #11
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 393
    Points : 685
    Points
    685
    Par défaut
    Ce n'est pas comme si ces critiques étaient nouvelles, elles ont probablement été faite dès la création du C++. Et personne ne va nier ces problématiques, même le comité C++ bosse dessus (par exemple avec les modules, dont un des objectifs attendus est le temps de compilation).
    Idem pour les templates, tout le monde sait très bien que cela pose des problèmes de lisibilité. Et le comité bosse aussi sur des alternatives (par exemple les concepts), en particulier via la programmation fonctionnelle (fold par exemple).

    Et honnêtement, qui a déjà pensé que le C++ était "suffisant" (pour faire quoi ?) et qu'on pouvait se passer de tous les autres outil ?

    Des langages plus moderne ont peut être fait le choix de simplifier certaines syntaxes, cela n'est pas sans conséquence. Le C++ a fait le choix d'être très permissif et ce n'est pas non plus sans conséquences.
    La possibilité de faire du code haut niveau sans surcoût à l'exécution permet de simplifier l'écriture de code sur des problématiques très complexe à gérer avec un langage bas niveau (par exemple la programmation concurrente et/ou parallèle). Mais la liberté de faire du bas niveau permet également d'entrer dans les détails, ce que ne permet pas un langage haut niveau. Ce grand écart (parce qu'il ne faut pas se leurrer, c'en est un) est une caractéristique unique du C++. Si on en a besoin et si on a les compétences, c'est une chose qu'aucun autre langage ne permet.

    Citation Envoyé par Mingolito Voir le message
    A quoi sert Java ? à gagner sa vie, http://emploi.developpez.com :
    - Offres C++ : 722 résultats
    - Offres Java : 3811 résultats

    Beaucoup de développeurs Java font du Java non pas parce que c'est leur langage préféré, mais parce que c'est sur Java qu'on leur à proposé le plus haut salaire .
    Toujours le problème de l'offre et la demande. Java a beaucoup plus d'offres (et PHP encore plus je crois), mais également plus de développeurs. Plus un langage, une technologie ou une spécialité est un domaine de niche, plus les salaires sont tirés vers le haut (<troll> cf les bas salaires des "pisseurs de code" en PHP... </troll>). A ma connaissance, un dev C++ peut avoir un salaire plus élevé qu'un dev Java (bien sur, pas en sortie d'école, où tous les devs ont 50 langages sur leur CV. Je parlais d'un vrai dev C++).

    Mais bon, si les gens préfèrent faire du Java (ou autre), cela me convient très bien. Cela me permet de demander un plus gros salaire

  12. #12
    Membre averti
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 138
    Points : 407
    Points
    407
    Par défaut
    Citation Envoyé par Mingolito Voir le message
    Donc Java est plus "moderne" que C++ ...
    Java est plus "moderne" que du C++ legacy OK, mais par rapport à du C++ moderne non je ne crois pas. C++ a gagné en cohérence avec les 2 dernières versions. Java souffre surtout d'un manque d'investissement pour le faire évoluer. C'est flagrant quand on compare à la façon dont a évolué le C#.

    Mais les différences entre ces langages sont toutes relatives par rapport à Rust qui amène une vrai rupture et une vrai innovation. J'espère que ce langage aura du succès et qu'on aura encore d'autres belles surprises comme celle là.

  13. #13
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1 503
    Points : 5 705
    Points
    5 705
    Par défaut
    Quel est le niveau d'adoption du C++ "moderne" dans les projets actuels en entreprise ? 5% ?
    « L’humour est une forme d'esprit railleuse qui s'attache à souligner le caractère comique, ridicule, absurde ou insolite de certains aspects de la réalité »

  14. #14
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2013
    Messages
    393
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2013
    Messages : 393
    Points : 685
    Points
    685
    Par défaut
    Citation Envoyé par Mingolito Voir le message
    Quel est le niveau d'adoption du C++ "moderne" dans les projets actuels en entreprise ? 5% ?
    Si tu recherches les offres d'emploi spécifiant "C++11" : 100%

    Plus sérieusement, les boites que j'ai vu et qui font du C++ "moderne" sont également celle qui sont "moderne" pour la gestion de projet et le management en général. En particulier, elles portent une attention toute particulière sur la qualité du code (test, agile, code review, etc).
    J'aurais tendance à dire, si on a le choix, de ne pas de toute façon travailler dans les boites où son travail n'est pas correctement considéré. Et la volonté de faire du C++ "moderne" est un indicateur que l'on peut prendre en compte dans ce sens. (Parce que, bon, un moment donné, se taper des bugs fix à longueur de journée parce que le code est moisi, c'est pas très passionnant).

  15. #15
    Membre confirmé Avatar de Darktib
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 66
    Points : 601
    Points
    601
    Par défaut
    Point 1: A la fois vrai et faux. C'est vrai qu'il y a des propriétés du langage qui empêchent des optimisations, par exemple le fait que deux variables ne désignent pas le même objet en fortran (par définition) permet de meilleures optimisations. Par contre la partie sur les templates est fausse : le code template est souvent mieux optimisé, dans 90% des cas c'est plus rapide que de passer par une interface. Après, principe de base: on mesure avant d'optimiser, donc s'il voit un problème dans une boucle qui traite des transactions, il est toujours possible de la réecrire en assembleur si c'est important...

    Point 2: Pas grand chose à dire, à part que les templates font partie de ce qu'il semble appeler "C++ traditionnel"... Mais effectivement ça rallonge des temps de compilation déjà long. En C++20 il y aura probablement les modules.

    Point 3:
    Citation Envoyé par article
    C++ ne peut plus être utilisé parce qu’il est intrinsèquement en série, même dans des systèmes massivement multithread comme les GPU
    bah oui, 99% des machines sont programmées en série, ou part fils d'exécutions série exécutés en parallèle (genre GPU). C'est pas un problème de C++, même avec du fortran sur GPU ça serait en "série".
    Citation Envoyé par article
    « Aujourd’hui, le “technologue moderne” doit se fier à un nouvel ensemble de langages : Verilog, VHDL
    Laissez-moi rire... sait-il vraiment de quoi il parle ? Ces deux langages sont absolument tout sauf faciles à comprendre. C'est ultra bas niveau. D'ailleurs, c'est plus de l'électronique que de l'informatique - et tout le monde n'a pas un FPGA sous la main... Quand on fait un jeu vidéo par exemple, on veut que ça tourne sur un ordi standard. Donc: exit Verilog et VHDL.

    Petite remarque: dans les stats, C++ paye mieux que Java, au moins aux États-Unis.

  16. #16
    Membre expert
    Profil pro
    undef
    Inscrit en
    Février 2013
    Messages
    959
    Détails du profil
    Informations personnelles :
    Localisation : France, Lot (Midi Pyrénées)

    Informations professionnelles :
    Activité : undef

    Informations forums :
    Inscription : Février 2013
    Messages : 959
    Points : 3 528
    Points
    3 528
    Par défaut
    D'un autre côté, si il trouve que les templates sont plus source de problèmes que de solutions, il n'est pas obligé d'y avoir recours.

  17. #17
    Membre régulier Avatar de Sytten
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2012
    Messages : 72
    Points : 76
    Points
    76
    Par défaut
    Oulala VDHL lisible
    J'en fais dans mes cours d'électronique et c'est tout sauf lisible/simple quand ça commence à devenir le moindrement complexe.

    D'ailleurs ce n'est pas du tout pour la même utilisation.
    On ne peut pas comparer un langage généraliste pour CPU (nécessairement peu parallélisé) avec un langage de logique séquentielle/combinatoire.
    Par contre, je ne dirais pas que c'est vraiment plus bas niveau que le C++ ou le C, c'est juste différent (En fait c'est un peu plus bas à cause du timing, mais c'est pas mal géré automatiquement de nos jours).
    Le VHDL/verilog c'est bien pour générer des trucs qui doivent travailler en parallèle massivement comme des décodeurs ou des traiteurs d'informations, pas pour créer des UI^^

    Au niveau des contraintes matérielles comme il a été mentionné plus bas il faut un FPGA, par contre dans le futur je dois avouer que cela risque de devenir plus commun (voir le récent rachat de Intel).
    Ils vont probablement être embeded dans les processeurs pour des tâches dédiées, un peu comme les chips dédiées au calcul flottant.
    Par contre, ils vont devoir créer de nouveaux langages. Si le mec pense pouvoir compétitionner swift avec du Verilog, il est juste pas bien dans la tête
    À toute erreur il y a une solution

  18. #18
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par 23JFK Voir le message
    D'un autre côté, si il trouve que les templates sont plus source de problèmes que de solutions, il n'est pas obligé d'y avoir recours.
    là où le bât blesse , c'est que le C++ moderne (C++14, C++17, C++19, C++22 et le brouillon C++11) en est rempli: exemple, unique_ptr, weak_ptr, auto_ptr...

    Donc sans template tu retombes en C++03

  19. #19
    Rédacteur/Modérateur

    Avatar de yahiko
    Homme Profil pro
    Développeur
    Inscrit en
    Juillet 2013
    Messages
    1 423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1 423
    Points : 8 700
    Points
    8 700
    Billets dans le blog
    43
    Par défaut
    La seule vérité c'est que chacun voit midi à sa porte. Et je doute que même si le gars bosse sur des plateformes de transactions hautes fréquences, ce soit totalement représentatif des divers cas d'utilisation du C++. Sans doute que dans son cas le C++ n'est plus suffisant ou pas adapté. Il n'a qu'à coder en Assembleur ou en C s'il recherche la rapidité d'exécution après tout.
    Le gros problème dans son argumentation c'est qu'il ne mentionne pas d'alternative à C++. Où veut-il en venir ? Si c'est juste pour dire au final qu'il faut améliorer le C++, bah ça nous fait une belle jambe.
    Tutoriels et FAQ TypeScript

  20. #20
    Membre expérimenté Avatar de Firwen
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    472
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2009
    Messages : 472
    Points : 1 587
    Points
    1 587
    Par défaut
    Ce type me fait surtout penser à un dinosaure du fortran qui n'a jamais accepté la transition vers le C.
    Avec un poil de haine pour la programmation fonctionnelle au passage.
    Présenter VHDL, Verilog ou fortran comme des modèles de simplicité en 2016, il faut quand même oser.


    là où le bât blesse , c'est que le C++ moderne (C++14, C++17, C++19, C++22 et le brouillon C++11) en est rempli: exemple, unique_ptr, weak_ptr, auto_ptr...
    Tous les experts C++ tendent à s'accorder qu'utiliser les templates de la STL n'a rien de répréhensible ni de controversé, même Google dans ses guidelines.

    C'est quand on commence à abuser des patterns à la SFINAE que les problèmes apparaissent.
    Il y a une grosse différence en terme de complexité entre utiliser un simple std::vector ou un std::unique_ptr...... et venir pondre quelque-chose comme Boost.Lamda.

    C++ est et a toujours été une toolbox multi-paradigme géante: il t'offre tout, libre à toi d'utiliser ce que tu veux ou pas


    Une perte de performance : selon lui, le C++ moderne intègre une potentielle perte de performance à cause des structures qui deviennent de plus en plus complexes et qui sont passées au compilateur. « C’est ici que Fortran excelle »
    De nos jour il n'y a aucune différence en terme de performance entre un code C++ optimisé et un code fortran optimisé. Ça a déjà été analyse mainte et mainte fois dans la littérature.

    Et comme avec tous les langages de haut niveau, certaines fonctionnalités bien précises ont un coût en terme de performance si tu les utilises.

    La maintenance : citant Edger Djikstra, un mathématicien et informaticien néerlandais du XXᵉ siècle, qui a déclaré que « la simplicité est une condition préalable à la fiabilité »
    Un mauvais code est toujours difficile a maintenir, quel que soit le langage.
    C'est pour ça qu'on a créer les coding guidelines et les reviews.

    Syntaxiquement, C++ n'est pas plus dur à appréhender que Java ou C#. Seul la méta-programmation peut l’être.
    Et c'est précisément pour ça que des boites comme Google l'interdise ou en réduise la portée.

    Les temps de compilation : Il affirme que les templates augmentent de façon significative le temps de compilation à cause de la recompilation d’un plus grand nombre de fichiers impliqués.
    Le seul argument sur lequel je suis d'accord: les temps de compilation C++ sont long. Ceci dit, les modules C++ devrait à l'avenir améliorer ça normalement.

    Petite remarque: dans les stats, C++ paye mieux que Java, au moins aux États-Unis.
    Et c'est normal.
    La learning curve de C++ étant beaucoup plus longue que celle de Java.
    Plus le fait que, malheureusement, les personnes qui apprennent un C++ correct à l'école ne sont pas légions.
    It's not a bug, it's a feature

Discussions similaires

  1. Réponses: 241
    Dernier message: 26/10/2015, 19h39
  2. Réponses: 50
    Dernier message: 06/04/2010, 10h55
  3. Réponses: 37
    Dernier message: 01/04/2010, 14h17
  4. les assurances c'est comme les boites
    Par yan dans le forum La taverne du Club : Humour et divers
    Réponses: 63
    Dernier message: 05/11/2008, 12h59
  5. [XML]Comment tester que mon fichier XML est comme ceci?
    Par Devil666 dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 02/06/2005, 13h41

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