web-dev-qa-db-fra.com

Quel est le rôle du C ++ aujourd'hui?

Actuellement, je suis un étudiant en informatique et je me demande ce qui est encore important en C++ aujourd'hui, à quoi sert-il? J'ai suivi un cours de base de C++ dans mon université mais je ne peux pas imaginer où puis-je utiliser mes connaissances et dans quelle direction dois-je aller apprendre le C++.

En d'autres termes, que dois-je apprendre pour devenir un programmeur C++ performant?

Actuellement, j'apprends Java juste parce que je ne vois pas clairement dans quel domaine C++ pourrait être utile aujourd'hui, mais je sais clairement quel type de travail je ferai en tant que Java. Mais j'espère toujours que C++ n'est pas mort.

41
hades

La fonctionnalité de tueur de C++ est gestion des ressources liées à la portée, SBRM (plus communément appelé " RAII "). C'est le seul langage de programmation industrielle qui est construit autour de ce concept. En C++, les durées de vie de tous les objets sont exactement connues et les programmes C++ (bien écrits) garantissent que les ressources sont acquises et libérées de manière entièrement déterministe. En comparaison, les langues récupérées ou gérées d'une autre manière ne fournissent pas de telles garanties; en fait, les objets dans ces langues peuvent persister après la fin de leur vie.

C'est la raison pour laquelle le C++ est utilisé dans la finance, les jeux vidéo, les systèmes embarqués et en temps réel hautes performances, le transport, la fabrication et d'autres industries où le déterminisme et la précision sont importants. Il n'y a pas d'alternative.

Certes, il a été utilisé pour beaucoup plus de tâches que cela, et ces tâches sont perdues pour C # et Python et d'autres langages plus appropriés, mais cela n'affecte pas sa niche principale.

57
Cubbi

Il existe quelques marchés pour le C et le C++ (à ma connaissance, quoique limitée)

  1. Code existant. C et C++ ont certaines des plus grandes bases de code existantes. Le code de cette taille ne peut pas être simplement jeté simplement parce que la "prochaine nouvelle langue chaude" est apparue. Les liaisons C sont à peu près la norme d'interaction inter-langauge sur la plupart des plates-formes, il est donc utile de créer (à tout le moins) des bibliothèques d'encapsuleur en C ou C++.
  2. Applications hautes performances (par exemple, financement haute fréquence). C et C++ atteignent toujours de meilleures performances globales que la plupart des autres langages de programmation. Plus important encore en C++, on construit souvent des abstractions avec des choses uniquement compilatrices comme des modèles, ce qui déplace le calcul de l'exécution au moment de la compilation (ce qui rend votre application globale plus rapide).
  3. (Similaire à 2) Applications à faible latence. Langues qui fonctionnent par exemple le CLR ou la JVM peut souvent être presque aussi rapide que le C++ selon l'application, mais il faut quand même charger le CLR ou la JVM eux-mêmes en mémoire avant que votre programme puisse s'exécuter. Si vous avez des exigences de démarrage difficiles, cela est important. MODIFICATION DU COMMENTAIRE: Pour cette question, les exigences de latence dure de toute description sont à noter ici. Les langages qui s'exécutent sur des machines virtuelles offrent rarement des limites de temps difficiles car l'exécution de par exemple la collecte des ordures n'est pas un processus déterministe.
  4. Systèmes embarqués. Certains systèmes embarqués ont le matériel pour fonctionner, par exemple la JVM (Google Android (D'accord, ce n'est pas vraiment la JVM, mais elle est proche), RIM's Blackberry) ou le CLR (Windows Phone), mais la plupart des systèmes embarqués n'ont pas le pouvoir de exécuter des langages qui nécessitent plus de support d'exécution que celui requis pour C ou C++ (qui n'est pratiquement pas supporté du tout).
  5. Applications à déploiement limité. Parfois, nécessiter l'installation de la JVM ou du CLR est une exagération massive si votre programme entier ne fait que quelques centaines de Ko. (Par exemple, la plupart des programmes sur lesquels je travaille doivent être déployés en tant que _ .EXE fichier sans aucun type d'installation ou quelque chose comme ça; pour cela il n'y a pas d'alternative)
40
Billy ONeal

C++ est toujours très utile et nullement mort. Si vous voulez lire une comparaison sérieuse entre différents langages de programmation, consultez l'article ne comparaison empirique de C, C++, Java, Perl, Python, Rexx et Tcl . Ce n'est pas le plus à jour mais je crois que la plupart des choses tiennent toujours.

3
sakisk