133 votes

C++ moderne devient plus répandu ?

Quand j'ai appris le C++ 6-7 ans, ce que j'ai appris était fondamentalement "C with Classes". std::vector a été certainement un sujet avancé, quelque chose à vous apprendre sur si vous avez vraiment voulu. Et on n'a certainement pas l'un me dit que les destructeurs pourrait être mise à profit pour aider à gérer la mémoire. Aujourd'hui, partout où je regarde, je vois RAII et SFINAE et STL et Boost et, eh bien, C++ Moderne. Même les gens qui sont juste de commencer avec la langue semble être enseigné ces concepts près de 1 jour.

Ma question est, est-ce simplement parce que je ne vois que le "meilleur", qui est, les questions ici, et sur d'autres de programmation de sites qui ont tendance à attirer les débutants (gamedev.net), ou est-ce réellement représentative du C++ de la communauté dans son ensemble?

Est C++ moderne vraiment devient la valeur par défaut? Plutôt que d'être une fantaisie chose que les experts de l'écrire, est-il devenu "le cours C++ est juste"? Ou suis-je tout simplement pas en mesure de voir les milliers de personnes qui apprennent encore le "C with classes" et d'écrire leurs propres tableaux dynamiques au lieu d'utiliser std::vector, et de faire de la gestion de la mémoire manuellement à l'appel de new/delete à partir de leur haut niveau de code?

Autant je veux bien le croire, il semble incroyable, si le C++ de la communauté dans son ensemble a tellement évolué en gros de quelques années. Quelles sont vos expériences et impressions?

(avertissement: Quelqu'un pas familier avec le C++ pourrait mal interpréter ce titre en se demandant si le C++ est gagne en popularité par rapport aux autres langues. Ce n'est pas ma question. "C++ moderne" est un nom commun pour un dialecte ou le style de programmation en C++, nommé d'après le livre "Modern C++ Design: Programmation Générique et les Modèles de Conception Appliquée", et je suis le seul intéressé par ce rapport "vieux C++". Donc pas besoin de me dire que C++de temps est passé, et nous devrions tous utiliser Python ;))

77voto

JohnMcG Points 5062

Voici comment je pense que les choses ont évolué.

La première génération de programmeurs C++ ont été programmeurs C, qui étaient, en fait, à l'aide de C++ comme en C avec des classes. De Plus, la STL n'était pas encore en place, donc c'est ce que le C++ était essentiellement.

Lorsque le TSL est sorti, qui a fait avancer les choses, mais la plupart des gens qui écrivent des livres, à mettre en place les programmes d'études et d'enseignement des classes avait appris C en premier, alors que le surplus de C++ choses, de sorte que la deuxième génération a appris à partir de ce point de vue. Comme une autre réponse a noté, si vous êtes à l'aise écriture régulière pour les boucles, l'évolution de l'utilisation for_each n'achète pas beaucoup, sauf l'ambiance chaleureuse et douillette que vous êtes en train de faire les choses "modernes".

Maintenant, nous avons les instructeurs et les auteurs d'ouvrages qui ont été en utilisant l'ensemble de C++, et l'obtention de leurs instructions de ce point de vue, comme Koenig & Moo Accéléré de C++ et de Stroustrup nouveau manuel. Si nous n'apprenons pas char* puis std::les chaînes de caractères.

C'est une leçon intéressante dans combien de temps il faut pour "l'héritage" des méthodes pour être remplacé, surtout quand ils ont un bilan de l'efficacité.

56voto

Ray Hidayat Points 7961

Absolument oui. Pour moi, si vous n'êtes pas de programmation C++ dans ce "Modern C++" style comme vous le terme, alors il n'y a pas de point à l'aide de C++! Vous pourriez tout aussi bien utiliser C. "C++ Moderne" devrait être le seul moyen C++ est déjà programmé, à mon avis, et je m'attends à ce que tout le monde qui utilise le C++, et a programmé dans ce "Moderne" de la mode serait d'accord avec moi. En fait, je suis toujours complètement choqué quand j'entends parler d'un programmeur C++ qui est au courant de choses comme un auto_ptr ou un ptr_vector. Pour autant que je suis concerné, ces idées sont à la base et fondamentaux de C++, et donc je ne pouvais pas imaginer qu'il en soit autrement.

25voto

spoulson Points 13391

À l'époque de Windows 3.1, C était la norme. Quand le C++ a frappé le développeur de marché et plus tard est devenu la norme, c'est la nouvelle hotness. Il a popularisé la programmation orientée objet, de l'acronyme et la partie de la base des modèles de conception de l'utilisation du polymorphisme.

Maintenant, avec la plus grande acceptation de faibles barrières à l'entrée de plates-formes gérées, comme C#/.NET, il n'y a pas de raison d'utiliser le C++. Donc, une grande partie de la base des développeurs auront un choix et, soyons honnête: C++ est un ours à apprendre pour un débutant. Avec C#, vous pouvez juste courir avec lui.

Qui laisse vraiment que les plates-formes qui ont BESOIN de C++ et le die-hard C++ évangélistes de continuer à pratiquer l'art. C'est la communauté que les besoins et les désirs de toutes les couches d'abstraction qui est considéré comme "Modern C++".

Donc oui, je crois "C++ Moderne", comme vous le dites, est de plus en plus répandue. Certes, il est répandu avec une audience différente de celle de l'a utilisé dans le passé.

16voto

jfsantos Points 545

Je suis un de ces gars qui ont appris à coopérer avec le TSL et entendu beaucoup de choses sur RAII et de la bonne programmation C++ pratiques de 1 jour. Ressemble à certains de la plupart des livres recommandés pour l'apprentissage de C++ aujourd'hui (comme Accelerated C++ et l'efficacité de C++ de la série) se concentrer sur l'utilisation de la STL outils au lieu de rouler vos propres trucs, et donnent aussi beaucoup de "règles" pour l'efficacité (ou "moderne") de programmation.

Mais en parlant avec des amis, j'ai également noté certaines entreprises continuent à travailler avec les "C with Classes", pas de "C++ Moderne". Peut-être que la culture proposée par les auteurs et les utilisateurs de la "Modern C++" l'emporteront un jour :)

12voto

Binary Worrier Points 27424

Je pense que vous avez juste eu une mauvaise expérience de départ.

Vous avez besoin de vous procurer Scott Meyers Effective C++ livres. J'ai commencé le C++ en colère en 1999, mon chef d'équipe m'a fait asseoir et lire Effective C++ et Plus Efficace C++ avant j'ai été autorisé à vérifier dans le code.

La plupart de ses conseils sur les lignes de "Ne pas utiliser cette fonctionnalité, mais si vous devez, gardez cela à l'esprit"

Si vous suivez ses conseils, vous allez écrire de bonnes ou de "Moderne" C++.

Il a écrit un livre sur TSL, maintenant aussi, mais que je n'ai pas lu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X