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 :

Je dois revenir au C++ quinze ans après l'avoir quitté. Qu'est-ce qui a changé ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 608
    Par défaut Je dois revenir au C++ quinze ans après l'avoir quitté. Qu'est-ce qui a changé ?
    Bonjour,

    J'ai entamé le C++ jadis à sa sortie, quand on développait encore sur Turbo C++.
    Puis Borland C++ avec Owl pour Windows 3.x, et puis les MFC sous Visual C++.
    Je l'ai quitté en 2001, quelques années avant que n'arrive Visual Studio et que ne débute côté Windows une unification avec .NET.

    Je l'appréciais bien, mais c'est Java qui a été mon activité les années suivantes.

    Depuis peu, j'y trouve un nouvel intérêt pour des programmes où la célérité va prendre plus d'importance.

    À l'époque où je l'ai quitté le C++ avait connu pour dernière nouveauté d'évolution du langage (depuis deux ou trois ans, je crois), les références avec &.
    Voilà, je crois que j'en étais là, alors, dans sa pratique. J'ai beaucoup codé avec, mais maintenant l'API de sous-bassement Windows que je connaissais à l'époque ne me servira plus à rien, elle est obsolète. Et de toutes façons, ce sera sur des environnement Debian que je vais développer.


    J'aimerais bien savoir à quoi me préparer.
    Quelles ont été les évolutions majeures du C++ depuis l'an 2000 ?
    Avec quelles librairies de classes standard évolue-ton désormais avec les compilateurs gcc ou équivalents, pour faire l'essentiel de la programmation ?
    Compile t-on toujours ses projets à l'aide de makefiles, ou bien la pratique a changé ?

    Merci à vous !

  2. #2
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    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 770
    Par défaut
    Citation Envoyé par grunt2000 Voir le message
    Quelles ont été les évolutions majeures du C++ depuis l'an 2000 ?
    La méta-programmation (templates) partout

    Ensuite, le C++ moderne (C++1y avec C++11, C++14, C++17, C++19, ...)
    • désambiguifie le C : par exemple les rvalue reference, les move constructor, pointeur NULL, de nouvelles façons de coder tout un tas de choses constant
    • permet aux développeurs de se concentrer sur leur code et non plus sur le "comment faire" : les raw pointeurs sont planqués et par exemple il y a les lambdas, l'inférence des types, les fermetures (closures)
    • a un timide élargissement des possibilités : par exemple inclusion des threads (mais ratée), de l'unicode, du temps, table de hachage, regex
    • améliore/ renforce les templates : par exemple templates externes, templates variadiques, les chevrons >>, variable templates


    Citation Envoyé par grunt2000 Voir le message
    Avec quelles librairies de classes standard évolue-ton désormais avec les compilateurs gcc ou équivalents, pour faire l'essentiel de la programmation ?
    Le compilateur numéro 1 c'est le compilateur Apple clang. C'est boost la bibliothèque non officielle qui a été reprise en partie par le C++ moderne


    Citation Envoyé par grunt2000 Voir le message
    Compile t-on toujours ses projets à l'aide de makefiles, ou bien la pratique a changé ?
    Le comité C++ prévoit des changements qui se font attendre : par exemple les modules
    Mais le seul truc que le comité est d'accord c'est de normaliser les entêtes pré-compilées pour pouvoir faire des exports dynamiques à la Java (si je ne dis pas de bêtises)

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2011
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 760
    Par défaut
    Le changement le plus profond et aussi le plus complexe à appréhender concerne la sémantique de déplacement (rvalue). Ce qui est est la base de pléthore de nouveautés dont les pointeurs intelligents font partie.

    Au niveau langage:

    - Les nouveaux mots clefs auto, decltype, override, constexpr et changement sur for, if, while (http://en.cppreference.com/w/cpp/keyword)
    - les lambdas
    - les boucles sur intervalle
    - plusieurs choses pour la méta-prog: template variadique, if constexpr, variable template et alias template, en tête <type_traits> etc

    La liste des en-têtes: http://en.cppreference.com/w/cpp/header

    C++20 ou après réserve pas mal de chose qui vont avoir de gros impacte sur le langage et la manière d'écrire son code:

    - module
    - méta-class
    - coroutine
    - reflexion
    - concept
    - range

    @foetus: Pourquoi est-ce raté pour les threads ?

  4. #4
    Expert confirmé
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 770
    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 770
    Par défaut
    Citation Envoyé par jo_link_noir Voir le message
    @foetus: Pourquoi est-ce raté pour les threads ?
    C'est vrai que c'est un retour que j'avais lu et que je n'arrive pas à retrouver

    Mais, il me semble que, le problème des threads C++11, c'est que c'est un outil bas niveau :
    • il faut savoir les utiliser : par exemple, on peut créer des fuites ThreadRAII + Thread Suspension = Trouble?
    • il manque des outils plus haut niveau et qui arriveront avec le C++20 que tu mentionnes : coroutines, semaphores, latches et barriers, transactional memory, task blocks

  5. #5
    Membre Expert
    Avatar de Pyramidev
    Homme Profil pro
    Tech Lead
    Inscrit en
    Avril 2016
    Messages
    1 513
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Tech Lead

    Informations forums :
    Inscription : Avril 2016
    Messages : 1 513
    Par défaut
    Citation Envoyé par foetus Voir le message
    C'est vrai que c'est un retour que j'avais lu et que je n'arrive pas à retrouver
    Le 10/10/2011, Bartosz Milewski a publié un article : Async Tasks in C++11: Not Quite There Yet.

    L'idée générale est que le développeur ne devrait pas gérer le parallélisme en terme de threads mais en terme de tâches. L'implémentation bas niveau, elle, se chargerait d'exécuter les tâches via un pool de threads. Si une tâche X se bloque, par exemple parce qu'elle attend une entrée utilisateur, le thread correspondant pourrait renvoyer la tâche dans la file des tâches en attente et piocher une autre tâche pour l'exécuter. La tâche X sera récupérée plus tard par un des threads, qui ne sera pas forcément le même que le thread de départ.

    Or, le C++11 a été pensé comme si l'exécution d'une tâche commençait et se terminait dans le même thread.

  6. #6
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 296
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 296
    Par défaut
    Le plus gros changement, et pas des moindres et pourtant on tend à l'oublier, c'est qu'il ne faut en aucun cas essayer de gérer la mémoire à la main ou croire que l'on puisse y arriver dans un monde d'exceptions.

    Ce petit gros détail est à l'origine de l’appellation "C++ moderne" en opposition à "C++ historique" où le C++ est perçu comme une simple surcouche du C. Si tu es resté aux références comme "nouveautés", c'est le premier changement important. Beaucoup d'autres choses dans le C++98, dans le C++11 et suivants découlent de cela. Le mot clé est RAII.

    Je ne peux que renvoyer à https://www.developpez.net/forums/d1...ne-stroustrup/
    Du même auteur, "A Tour of C++" est une présentation du langage orientée mise à niveau si mes souvenirs sont bons.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par foetus Voir le message
    Le compilateur numéro 1 c'est le compilateur Apple clang.
    Heu... non.
    Déjà ce n'est pas Apple clang car le projet est désormais développé par une communauté. Et ensuite clang a amener un peu de concurrence bénéfique mais il n'est ni fondamentalement meilleur ni plus répandu que gcc (https://en.wikipedia.org/wiki/Clang#..._compatibility). Beaucoup d'OS de type BSD sont passés à clang pour des histoires de licences mais, à ma connaissance, les distributions linux sont toujours compilées avec gcc par défaut.

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

    Informations professionnelles :
    Activité : aucun

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

    Et pour ce qui est des makefiles, comme on utilise toujours (enfin, le plus souvent) make, il restent d'actualité.

    Mais, bien que le système de configuration de projets des "autotools" (autoconf, automake, autoheaders, ...) on se tourne de plus en plus souvent ver l'outil CMake, qui présente l'énorme avantage d'être porté sur différentes plateformes.

    Et puis, de manière générale, tu utilises à peu près l'outil que tu veux pour automatiser la compilation. Sauf erreur, ant, qui est pourtant plutôt orienté vers l'automatisation de java, fonctionne aussi très bien
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

Discussions similaires

  1. Que faire après quinze ans en tant que développeur?
    Par alineas1 dans le forum Emploi
    Réponses: 11
    Dernier message: 05/02/2016, 09h42
  2. [Opinion]Que pensez vous du .net framework 10 ans après?
    Par Hinault Romaric dans le forum Général Dotnet
    Réponses: 177
    Dernier message: 02/09/2010, 14h32
  3. Réponses: 15
    Dernier message: 08/10/2009, 09h24
  4. Réponses: 10
    Dernier message: 09/09/2009, 16h32
  5. problème de positionnement 4 ans après.
    Par Ekimasu dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 30/03/2008, 16h00

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