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. #41
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    82
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 82
    Points : 89
    Points
    89
    Par défaut a force d'être ringard on redevient à la mode
    La notion d'objet, et la programmation qui va avec, la recherche du'ne modularité introuvable sauf au prix fort, les "patrons" ou archétypes (templates), j'ai toujours trouvé qu'il s'agissait de masturbations intellectuelles imposées par des non-programmeurs aux programmeurs ; vous savez l'adage méchant "quand on connait un métier on l'exerce, sinon on l'enseigne ...".

  2. #42
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Points : 16 213
    Points
    16 213
    Par défaut
    Citation Envoyé par VivienD Voir le message
    En revanche, je ne suis en aucun cas familier avec les pointeur intelligent; je ne m'en sers, pour ainsi dire, jamais. Peut-être ai-je tort. Je me demande s'il est possible de réécrire une fonction comme int str2int(std::string str, bool * ok = nullptr) (*) avec des pointeurs intelligents. Des avis sur la question?
    Au delà des solutions à base d'optional ou d'autres monads pour l'exemple que tu as indiqué, j'aimerais insister sur un point : Le but des pointeurs intelligents n'est pas de remplacer les pointeurs, mais de remplacer les pointeurs qui possèdent implicitement l'objet pointé. C'est un mécanisme de gestion de la durée de vie de l'objet pointé (et de documentation de ce mode de gestion), et donc quand un pointeur n'a pas d'impact sur celle-ci, mais sert juste à observer cet objet, un pointeur nu ou une référence font très bien l'affaire. Ils ne suppriment pas l'usage des pointeurs, mais celui de new et delete.
    Maintenant, si je devais embaucher un débutant ne connaissant pas les pointeurs intelligents, c'est une des premières choses que je lui apprendrais. Et un expert qui ne les connaîtrait pas ne serait pas un expert pour moi.

    Citation Envoyé par dourouc05 Voir le message
    Justement, le mécanisme d'exceptions est prévu pour ce genre de cas : le code appelant sera beaucoup plus léger qu'une vérification de ce pointeur… Ce genre de code me rappelle beaucoup trop le C .
    C'est probablement un cas où je ne recommanderais pas une exception, cette dernière servant à transporter l'information d'erreur, sachant qu'ici, il est assez probable qu'une gestion locale soit plus adaptée.

    Citation Envoyé par dourouc05 Voir le message
    Sinon, C++11 (la norme) intègre un ramasse-miettes (http://www.open-std.org/jtc1/sc22/wg...2008/n2670.htm), mais à ma connaissance aucun compilateur ne l'implémente…
    Pas vraiment. On va plutôt dire que le norme contient des fonctions qui permettent d'implémenter un ramasse-miettes de manière correcte, en dehors de la norme, mais que le C++ n'en contient pas par défaut.

    Citation Envoyé par dragonjoker59 Voir le message
    Moi je ne vois pas l'introspection comme un manque, mais comme une force.
    Au moins on est obligés de concevoir nos applications correctement (dur dur...)
    Non mais sérieusement, qui peut avoir besoin de cette infâmie? (mis à part les GUI, et encore...)
    Pas mal de gens, finalement, quand on regarde le nombre de personnes qui usent d'artifices et de contournements pour s'en passer. Si tu as pu t'en passer pour faire des bindings vers d'autres langages, par exemple, c'est probablement parce que tu as d'une manière ou d'une autre dupliqué l'information qui était déjà dans la structure de ton API, soit manuellement, soit à l'aide d'un générateur de code. Ce sont deux solutions non optimales...
    Et le C++ possède déjà des rudiments d'introspection (le matching de templates, type_traits, sfinae, enable_if...), qui sont largement utilisés (par exemple pour optimiser std::distance en fonction d'une catégorie d'itérateur).
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #43
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Si j'ai bien compris vos réponses, la fonction int str2int(std::string str, bool * ok = nullptr), ou mieux int str2int(std::string const & str, bool * ok = nullptr), ne peut décemment pas être réécrit avec des pointeurs intelligents, du fait qu'on n'alloue aucune zone de la mémoire vive à l'aide de l'opérateur new car cet argument est généralement une variable locale et que la fonction n'a pas vocation de la libérer à coup de delete dans quelque cas que ce soit. Toutefois, elle pourra être réimplémentée dès C++17 grâce à l'arrivée de std::optional; elle deviendra alors std::optional< int > str2int(std::string const & str).

    Citation Envoyé par dourouc05 Voir le message
    Citation Envoyé par VivienD Voir le message
    Je me demande s'il est possible de réécrire une fonction comme int str2int(std::string str, bool * ok = nullptr) (*) avec des pointeurs intelligents. Des avis sur la question?
    Justement, le mécanisme d'exceptions est prévu pour ce genre de cas : le code appelant sera beaucoup plus léger qu'une vérification de ce pointeur… Ce genre de code me rappelle beaucoup trop le C .

    [...]
    J'ai appris le C avant le C++; j'en ai gardé quelques (mauvaises?) habitudes. En revanche, les fonctions-membres de QByteArray et QString qui permettent ce genre de conversion ont aussi l'argument booléen optionnel bool * ok = nullptr, à moins que ce soit bool * ok = 0. Comme quoi!

    Quant à l'introspection, je pense avoir compris que cela permet de connaître la classe ou le type d'un objet ou d'une variable ainsi que d'observer les relations entre les classes (héritage, entre autres). Il me semble que c'est possible de faire grâce aux templates, à la SFINAE et à l'opérateur decltype; d'autant plus que la STL nous fournit pas mal de classes et d'outils pour nous faciliter la vie. Néanmoins, je trouve que c'est dommage qu'autant de classes soient regroupées dans l'en-tête type_traits.

    En ce qui concerne les packages, ne peut-on pas émuler ce mécanisme de modularisation au travers des espaces de nommages et des en-têtes qu'on «importerait» tout bêtement avec #include?

    Ne manquent plus que les propriétés et la programmation par aspect. Toutefois, si la notion de propriétés est le mécanisme qu'émule la macro Q_PROPERTY de la bibliothèque Qt, je pense avoir compris le délire.
    De retour, plus sportif mais toujours aussi moche.
    _____________
    Pro: Programmation en C/C++ (embarqué ou non)
    Loisir: Programmation en C++11/14/17 avec la STL ou Qt 5

  4. #44
    Expert éminent
    Avatar de Pyramidev
    Homme Profil pro
    Développeur
    Inscrit en
    Avril 2016
    Messages
    1 469
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 469
    Points : 6 102
    Points
    6 102
    Par défaut
    Citation Envoyé par VivienD Voir le message
    dès C++17 grâce à l'arrivée de std::optional; elle deviendra alors std::optional< int > str2int(std::string const & str).
    En attendant C++17, on peut déjà utiliser boost::optional :
    http://www.boost.org/doc/libs/1_60_0...tml/index.html

  5. #45
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    J'utilise std::unique_ptr comme alternative à std::optional pour l'instant par moment.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #46
    Membre émérite
    Avatar de VivienD
    Homme Profil pro
    Développeur logiciel
    Inscrit en
    Octobre 2009
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur logiciel
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 523
    Points : 2 278
    Points
    2 278
    Par défaut
    Citation Envoyé par Bousk Voir le message
    J'utilise std::unique_ptr comme alternative à std::optional pour l'instant par moment.
    Pas bête: si std::unique_ptr ne possède aucun élément, alors std::unique_ptr::operator bool() renvoie false; sinon, cet opérateur renvoie true et dans ce cas on peut récupérer la valeur renvoyée par la fonction via l'opérateur de déréférencement std::unique_ptr::operator *() ou accéder à ses membres via l'opérateur std::unique_ptr::operator ->(). Une idée à creuser en attendant la prise en charge complète de C++17 par nos compilateurs.

    PS: Laissez-moi réinventer la roue, si j'en ai envie.
    De retour, plus sportif mais toujours aussi moche.
    _____________
    Pro: Programmation en C/C++ (embarqué ou non)
    Loisir: Programmation en C++11/14/17 avec la STL ou Qt 5

  7. #47
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut
    C'est une blague. Le VHDL !
    Pour en avoir fait, le temps de compilation du VHDL est proche de l'heure.

    Je suis toujours étonné de lire qu'il y a plus d'offre d'emploi java par exemple alors que l'on rencontre que très rarement d'application java.
    Mais elles sont où toutes ces applications java développées ?
    Car mes PC ou ceux que je croise, il n'y a même pas de machine java installé.
    J'ai été étonné lorsque je l'ai remarqué.
    Pourtant on utilisent beaucoup de logiciel vu que l'on touche à beaucoup de domaine.

    Ce constat est triste. C'est probablement ce que l'on appelle la sélection naturelle. Car au final, c'est l'utilisateur qui choisit. Et l'utilisateur prend la meilleur application.

    Au final, j'ai l'impression que ces nouveaux langages produisent des applications jetables qui finissent rapidement aux oubliettes. Aux moins, cela fait travailler les entreprises.

    Et l'avantage, c'est que ces nouveaux langages ont créé une concurrence qui a peut être eu pour effet de pousser à la modernisation du C++.

  8. #48
    Nouveau membre du Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Décembre 2012
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2012
    Messages : 12
    Points : 38
    Points
    38
    Par défaut Le problème est simple
    Citation Envoyé par Stabia Voir le message
    La notion d'objet, et la programmation qui va avec, la recherche du'ne modularité introuvable sauf au prix fort, les "patrons" ou archétypes (templates), j'ai toujours trouvé qu'il s'agissait de masturbations intellectuelles imposées par des non-programmeurs aux programmeurs ; vous savez l'adage méchant "quand on connait un métier on l'exerce, sinon on l'enseigne ...".
    Le problème est simple, pour être rapide et efficace, il faut écrire à l'économie avec le nombre de lignes les plus courtes.
    => il ne faut écrire que ses spécifications et pas l'implémentation: exemple :
    il ne faut pas ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    T tab[20];
    for (int i=0;i < 20;++i){
      f(tab[i]);
    }
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::array<int, 20> Donnees;
    for (auto v: Donnees)
       f(v);
    C’est plus simple avec moins de risques d'erreurs. Le début du tableau ainsi que sa fin ne sont que de l'implémentation. Les spécifications n’indiquent que d'appeler f pour chaque élément du conteneur. => Je n'écrire que cela.


    Si tu arrives à écrire que tes spécifications, tes méthodes ne dépasserons par 7 lignes.
    Si tes méthodes dépassent 7 lignes alors tu as encore beaucoup de choses passionnantes à apprendre.


  9. #49
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 790
    Points : 18 936
    Points
    18 936
    Par défaut
    Citation Envoyé par loupium Voir le message
    Je suis toujours étonné de lire qu'il y a plus d'offre d'emploi java par exemple alors que l'on rencontre que très rarement d'application java.
    Mais elles sont où toutes ces applications java développées ?
    Car mes PC ou ceux que je croise, il n'y a même pas de machine java installé.
    A part pour les développements Java mobile Android, qui est déjà un énorme marché en soit, Java est surtout utilisé pour les grandes application d'entreprise. Exemple Amadeus :

    Actuellement, Amadeus GDS héberge plus de 170 compagnies aériennes dans la centrale de réservation (offre commerciale dénommée "Altéa Reservation") et distribue des produits de voyage à environ 350 000 agents de voyage et un peu plus de 5 000 sites web.
    Amadeus CRS is the largest GDS provider in the worldwide travel and tourism industry, with an estimated market share of 37% in 2009.[23] This position permits Amadeus to offer distribution reach for global and local travel content. As of December 2010, over 90,000 travel agencies worldwide use the Amadeus system and 58,000 airline sales offices use it as their internal sales and reservations system. Amadeus gives access to bookable content from 435 airlines (including 60 low cost carriers), 29 car rental companies (representing 36,000 car rental locations), 51 cruise lines and ferry operators, 280 hotel chains and 87,000 hotels, 200 tour operators, 103 rail operators and 116 travel insurance companies.[24]
    Herve Couturier, Executive Vice President of Research & Development, Amadeus commente : « C’est un privilège de recevoir cette distinction. Notre équipe R&D Amadeus rassemble plus de 5 000 employés et, entre 2004 et 2014, nous avons investi plus de 3.5 milliards d’euros. Grâce à ces investissements, nous sommes fiers d’améliorer l’expérience voyageur : depuis la gestion des perturbations aériennes jusqu’à la rationalisation des réservations en ligne. Nous sommes passionnés, animés par un désir commun : dessiner le futur du voyage.
    Nous souhaitons être reconnus comme la meilleure équipe R&D dans le domaine du voyage, une équipe qui soutient la croissance d’Amadeus. Nous sommes portés par notre ambition d’être les meilleurs en termes d’innovation et de qualité, et les plus fiables quand il s’agit de livraison de services. Nous sommes une équipe internationale composée de talents qui travaillent ensemble pour créer les solutions attendues par le marché et nos clients. »

    A propos d’Amadeus :

    Amadeus est l’un des premiers fournisseurs mondiaux de solutions technologiques de pointe pour l’industrie du voyage et du tourisme. Les clients d’Amadeus sont des fournisseurs de voyages (compagnies aériennes, hôtels, compagnies ferroviaires et de ferries, etc.), des vendeurs de voyages (agences de voyages et sites internet) et des acheteurs de voyages (les entreprises et voyageurs).
    Le groupe Amadeus emploie dans le monde plus de 13 000 collaborateurs au sein de ses principaux sites à Madrid (Siège), à Nice (Développement) et à Erding (Opérations) ainsi que dans ses 71 organisations commerciales locales et centres de développement régionaux.
    Le business model du groupe est basé sur les transactions.
    Amadeus est coté sur la bourse espagnole sous le symbole « AMS.MC » et fait partie de l’IBEX 35.
    Pour plus d’informations sur Amadeus, rendez-vous sur : amadeus.fr
    Pour info Java fait aussi des applications serveur, donc Java non installé sur le poste client
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  10. #50
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 965
    Points
    32 965
    Billets dans le blog
    4
    Par défaut
    Citation Envoyé par boumchalet Voir le message
    Le problème est simple, pour être rapide et efficace, il faut écrire à l'économie avec le nombre de lignes les plus courtes.
    => il ne faut écrire que ses spécifications et pas l'implémentation: exemple :
    il ne faut pas ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    T tab[20];
    for (int i=0;i < 20;++i){
      f(tab[i]);
    }
    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::array<int, 20> Donnees;
    for (auto v: Donnees)
       f(v);
    C’est plus simple avec moins de risques d'erreurs. Le début du tableau ainsi que sa fin ne sont que de l'implémentation. Les spécifications n’indiquent que d'appeler f pour chaque élément du conteneur. => Je n'écrire que cela.
    Et tu fais une copie de chaque élément, donc niveau rapidité et efficacité.. t'as de la chance que ce ne soit qu'un int.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  11. #51
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2010
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 107
    Points : 189
    Points
    189
    Par défaut
    @ Pierre Louis Chevalier
    En effet, j'avais oublié android.

    Mais sur Desktop, c'est pas aussi flagrant.
    Bien-sure tu pourra toujours sortir quelques noms d'entreprise pour chaque langages et heureusement. Le problème est plus une question de proportion d'utilisation. Car fait la liste des logiciels que tu utilises au quotidien et regarde la proportion codé en java. Suis je le seul dans cette situation ?

    Pire, ce n'est pas parce-que une application est développées quelle est utilisées ensuite.
    Cas concret dans ma boite par exemple, qui a externalisé le développement d'une application (faite en windev par le prestataire, quelle idée aussi) et qui est inutilisable. Donc à refaire complétement en c++. D'où ma sensation d'applications jetables.

  12. #52
    Expert éminent sénior

    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Avril 2002
    Messages
    2 790
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 790
    Points : 18 936
    Points
    18 936
    Par défaut
    Tu te focalises semble-t-il sur les "logiciels PC". Effectivement beaucoup d'entre eux sont fait en C++, mais il y à pas que les PC, il y à les mobiles, les serveurs web etc. Et il y à pas que les applications grand public, il y à aussi énormément d'applications d'entreprise dont certaines sont mêmes faites encore en Cobol, donc toujours pas du C++.
    Je vais te donner un exemple, il y à quelques dizaines de développeurs qui travaillent sur Windev, donc écrit en C++, et pendant ce temps le nombre de développeurs Windev pour faire des applications de gestion PME c'est des dizaines de milliers (150000 selon l'éditeur mais c'est sans doute exagéré), donc beaucoup plus. Donc dans le cas de Windev on à par exemple une proportion d'environ 1000 développeurs gestion L4G contre 1 développeur C++.
    Donc oui un très grand nombre logiciels PC sont faits en C++ entre autres pour des raisons de performance et de portabilité. Cependant au delà de ça il existe un marché colossal pour les autres développeurs, qui font des application web, serveur, entreprise, pme, mobiles, etc. Les applications des grandes entreprises sont le plus souvent faites en Java ou en C#, pas en C++, parce que c'est généralement plus facile de développer et de maintenir des applications en Java ou en C# qu'en C++.
    Ne prenez pas la vie au sérieux, vous n'en sortirez pas vivant ...

  13. #53
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Et tu fais une copie de chaque élément, donc niveau rapidité et efficacité.. t'as de la chance que ce ne soit qu'un int.
    Il y a une différence de perf/de code généré entre ces deux boucles for ?

  14. #54
    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
    Il y a une différence de perf/de code généré entre ces deux boucles for ?
    En générale pour ce genre de chose "simple" c'est le compilateur qui optimise.

  15. #55
    Membre averti
    Avatar de VBurel
    Profil pro
    Développeur Indépendant
    Inscrit en
    Août 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Indépendant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 116
    Points : 333
    Points
    333
    Billets dans le blog
    1
    Par défaut
    Article intéressant, qui confirme ce que bon nombre de "programmeurs" disent depuis le début. Mais aujourd'hui le pragmatisme l'emporte, car on est dans une période ou la validation/maintenance d'une application coute plus cher que son développement, et les langages évolués ont tendance à aggraver la situation (essentiellement par défaut de maitrise du code et des séquences d'appel).

    Les langages évolués tels que le C++, C#, OBJ-C, Java, étant de plus en plus ratachés à un O/S, sont en train de devenir des langages d’interface. Alors que le 'C' reste la langue commune des programmeurs/développeurs, pour de multiples raisons, dont 2 me semblent être de plus en plus actuelles:
    - Le 'C' est pratiquement le seul langage qui permet de faire et maitriser des optimisations, et donc d'économiser de l'énergie - enjeux qui est devenu majeur depuis l'avènement des mobiles (et l'évolution des politiques énergétiques).
    - Le 'C' permet de faire un source multi plateforme, compréhensible par pratiquement tous les compilateurs et c'est devenu aussi un enjeu majeur du fait de la multiplicité des appareils mobile et de la présence croissante des systèmes embarqués...

    et ces deux tendances vont s'amplifier.

  16. #56
    Débutant
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    688
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 688
    Points : 176
    Points
    176
    Par défaut
    Citation Envoyé par sazearte Voir le message
    En générale pour ce genre de chose "simple" c'est le compilateur qui optimise.
    Donc tu confirmes que le code assembleur généré est exactement le même?

  17. #57
    Membre émérite Avatar de onilink_
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    597
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 597
    Points : 2 440
    Points
    2 440
    Par défaut
    Une perte de performance: Si on ne maîtrise pas les outils qu'on utilise, et c'est la même chose dans les autres langages un tant soit peu évolués.

    Les temps de compilation: De même, c'est pas parce que les templates existent qu'il faut en utiliser absolument partout. Et pour la lisibilité des templates c'est aussi une mauvaise excuse, le but premier des templates est d'écrire du code générique, donc de pouvoir trouver aussi plus facilement ce que l'on veut dans une bibliothèque (qui se doit d'être bien écrite).
    Personnellement je suis sur un projet dans les 100k lignes de code, je dois utiliser moins de 1% de templates "customs" (en fait j'utilise que le CRTP a de rares endroits, et quelques variadics pour simplifier certaines choses). Tout le reste ça viens de la lib standard, donc simple a lire.

    La maintenance: Encore une fois il ne voit que les templates, mais C++ est tellement plus que ça. De plus chaque nouveau standard rend le code plus simple a lire et a écrire, je vois pas ce qu'il faut de plus, a part savoir utiliser les outils qu'on utilise.
    D’expérience j'ai eu a modifier du code C++03 et C++11, et bien du code C++03 même bien écrit m'a toujours donné plus de fil a retordre que du C++11. Souvent pour la bête raison que la lib standard de C++11 intègre presque tout ce dont on peut avoir besoin, ce qui n'est pas le cas de C++03. Il faut donc prendre le temps de comprendre les bibliothèques externes utilisées, etc... même pour des choses sensées être triviales.

    Enfin bref perso j'utilise C++ depuis un bon moment, et mon passage de C++03 a C++11 m'a fait presque autant d'effet que C a C++. Alors de la a dire que C++ commence a être une vielle techno qui n'évolue pas... il faut être soit même en retard sur les technologies actuelles. Surtout quand on voit ce que les prochains standards nous réservent.
    Circuits intégrés mis à nu: https://twitter.com/TICS_Game

  18. #58
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par VBurel Voir le message
    Les langages évolués tels que le C++, C#, OBJ-C, Java, étant de plus en plus ratachés à un O/S
    Euh, je ne suis pas d'accord, concernant C++ et Java. En tout cas, si tu mets C++, tu dois mettre C pour les mêmes raisons (nécessité de recompiler le code, et c'est tout, si on fait bien les choses).

    Citation Envoyé par VBurel Voir le message
    - Le 'C' est pratiquement le seul langage qui permet de faire et maitriser des optimisations, et donc d'économiser de l'énergie - enjeux qui est devenu majeur depuis l'avènement des mobiles (et l'évolution des politiques énergétiques).
    Le C++ permet la même.

    Citation Envoyé par VBurel Voir le message
    - Le 'C' permet de faire un source multi plateforme, compréhensible par pratiquement tous les compilateurs et c'est devenu aussi un enjeu majeur du fait de la multiplicité des appareils mobile et de la présence croissante des systèmes embarqués...
    Le C++ permet la même.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  19. #59
    Membre averti
    Avatar de VBurel
    Profil pro
    Développeur Indépendant
    Inscrit en
    Août 2004
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Indépendant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2004
    Messages : 116
    Points : 333
    Points
    333
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par dragonjoker59 Voir le message
    Le C++ permet la même.
    oui, dans le sens ou le 'C' peut etre considéré comme un sous ensemble du C++
    mais dans ce cas vous utilisez le ++ que comme interface...

  20. #60
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 045
    Points : 11 368
    Points
    11 368
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par VBurel Voir le message
    oui, dans le sens ou le 'C' peut etre considéré comme un sous ensemble du C++.
    Non, dans le sens où lorsqu'on écrit correctement son code C++ (sans pour autant se limiter au C), le code assembleur généré est le même que celui généré pour un code similaire en C (similaire hein, pas "pareil", j'ai bien dit "sans pour autant se limiter au C").
    Ou alors on peut aussi considérer le C comme une interface pour l'asm...
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

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