Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Pourquoi les langages C et C++ auraient-ils encore de nombreuses années devant eux ?
Donnez votre avis

Le , par Michael Guilloux

112PARTAGES

19  0 
Pourquoi C et C++ auraient-ils encore de nombreuses années devant eux ?
Depuis des années, avec l'arrivée de certains langages dits prometteurs ou d'avenir, on entend souvent parler de la mort des vétérans et langages bien établis comme C, C++, Java, JavaScript, PHP, entre autres. Bon nombre de développeurs essaient par exemple de trouver les remplaçants des langages C (qui a franchi la barre des 45 ans) et C++ (qui a plus de 30 ans). Et parmi les candidats à leur succession, on parle souvent de Rust, Go ou encore le langage D, pour ne citer que ceux-là. Mais le constat est que les langages C/C++ (mais aussi ceux dont on annonce la disparition depuis des années) sont encore là, et il n'y a aucun signe qui montre qu'ils seront abandonnés un jour.

D'ailleurs, pour Peter Wright, développeur et blogueur traitant des sujets relatifs à la programmation, C et C++ ont au moins 45 bonnes années devant eux. C'est bien de l'affirmer, mais pourquoi ? C'est ce qu'il a essayé d'expliquer. Pour lui, il y a au moins cinq bonnes raisons pour lesquelles C et C++ devraient encore être pertinents dans les 45 ans à venir.

C et C++ permettent d'avoir plus de contrôle sur le matériel

À la fois C et C ++ vous permettent d'avoir (plus ou moins) le contrôle total du matériel, et il y a encore de nombreuses applications où cela est essentiel. Avoir le contrôle du matériel a pour avantage d'offrir une meilleure utilisation des ressources, une utilisation déterministe des ressources et une manipulation et un contrôle avancés de la mémoire, entre autres. Certes, cela peut être fait dans d'autres langages, mais pour Peter Wright, C et C++ le font d'une manière très élégante.

C et C++ vous permettent d'écrire du code très efficace

Vous direz certainement qu'un développeur expérimenté peut écrire du code très efficace dans des langages comme C# ou Java et bien d'autres. Mais, pour le blogueur, c'est encore plus facile de le faire en C ou en C++.

Les langages C et C++ sont portables

Il existe des langages plus adaptés pour des développements indépendants des plateformes, mais le fait est que les applications multiplateformes peuvent être écrites efficacement en C et C++.

C et C++ sont des langages qui évoluent

Peter Wright estime que les C et C++ d'aujourd'hui ont beaucoup évolué depuis leur création et continuent à le faire, même si C++ évolue actuellement à un rythme plus rapide que le langage C. Il précise encore que ce n'est pas seulement la syntaxe qui évolue, mais les IDE, les analyseurs de code, les outils de refactoring, les systèmes de build. Autrement dit, l'ensemble des écosystèmes continue de s'améliorer.

C et C++ sont largement utilisés

C'est peut-être la raison la plus pertinente. Il y a déjà beaucoup de logiciels écrits en C et C++ que bon nombre d'entre nous utilisent quotidiennement. Peter Wright cite par exemple :

  • parmi les systèmes d'exploitation : Windows, Mac OS X, iOS, Linux, Android ;
  • parmi les bases de données : MariaDB/MySQL, PostgreSQL, Oracle, SQL Server ;
  • parmi les outils de productivité : Microsoft Office, LibreOffice, Visual Studio.

Cela dit, Peter Wright précise que cela ne signifie pas que C et C++ existeront pour toujours, mais ils existeront au moins et seront pertinents aussi longtemps que ces projets le seront. « Et je peux vous assurer qu'ils seront là pour longtemps », dit-il. Il explique qu'il y a déjà beaucoup de codes existants écrits en C et C++ et qui sont trop précieux pour être remplacés et si cela devait arriver, il va falloir beaucoup de temps.

Il reconnait enfin qu'à la fois C et C++ ont eu beaucoup de concurrents ces derniers temps. Ceux-ci gagnent en popularité et remplaceront parfois C/C++ dans les nouveaux projets. Mais C et C++ continueront à être utilisés pendant longtemps. Il ne sera donc pas surpris si ces deux langages vétérans sont encore là dans 45 ans.

Sources : Code Addiction

Et vous ?

Que pensez-vous des arguments de Peter Wright ?
Pensez-vous également que C et C++ ont encore de nombreuses années devant eux ? Pourquoi ?

Voir aussi :

Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage, et livre ses inquiétudes quant à son avenir
Quel langage pourrait remplacer C ? Après avoir comparé Go, Rust et D, le choix d'Andrei Alexandrescu se porte sur D
Index TIOBE : C sacré langage de programmation de l'année 2017, Python enregistre encore la plus forte progression annuelle sur PYPL

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de Vincent PETIT
Modérateur https://www.developpez.com
Le 13/01/2018 à 16:54
Salut,
Je ne vais parler que de C, car je ne connais pas trop le C++, et sans mettre en avant les aspects techniques du langage pour ne pas déclencher une guerre

L'utilisation du langage C dans l'informatique n'est que la partie visible de l'iceberg, en dessous il y a les innombrables composants électroniques programmables et toutes ses normes d'applications (normes automobiles, normes aéronautiques/spatiales, normes médicales, industriels et elles se déclinent en spécialités comme la sûreté de fonctionnement etc... ) qui imposent, pour certaines d'entres elles, le langage C avec des règles de codage telles que peut l'être MISRA par exemple.

Tout ceci dépasse de loin le prisme de la discipline informatique et c'est entre autre pour ça qu'il est toujours là l'animal ! Et il sera là encore très très longtemps à cause de l'impossibilité de refondre complètement toutes ces normes (problème de compatibilité, d'interopérabilité et de politique d'assurance lors de certification) au pire elles s'ajustent légèrement.
11  0 
Avatar de jlliagre
Modérateur https://www.developpez.com
Le 14/01/2018 à 11:15
Je ne mettrais pas le C et le C++ dans le même panier.

Le C++ est un langage "comme les autres", c'est à dire un langage en concurrence avec beaucoup d'autres. Il existe peu de dépendances fortes qui imposent d'utiliser le C++.

Dans certains domaines, le C est aussi un langage comme les autres. Il est alors rarement utilisé dans de nouveaux projets car des langages souvent plus simples à apprendre et utiliser, plus tolérants et plus enseignés lui sont préférés.

Dans d'autres domaines, comme la programmation système, les drivers bas niveau, l'embarqué, les codes très optimisés pouvant inclure de l'assembleur, le développement d'utilitaires portables (POSIX), le C est un langage souvent incontournable et a encore de beaux jours devant lui. Il a très peu de dépendances, un programme C linké statiquement n'a besoin de rien d'autre que lui même pour s'exécuter, et quand il est linké dynamiquement, il n'a parfois besoin que de la libc, qui est présente sur à peu près tous les systèmes qui existent. Les autres langages ont parfois (souvent) besoin de la présence préalable de runtimes très lourds (java, python, etc.) pour s'exécuter.
11  1 
Avatar de 23JFK
Membre expérimenté https://www.developpez.com
Le 15/01/2018 à 10:08
L'informatique est incrémentale, le type qui croit pouvoir bricoler en trois semaines un concurrent crédible à des logiciels cumulant trente à quarante ans d'améliorations continues opérées par des dizaines de milliers de personnes expertes va en être pour ses frais. En plus, le design C/C++ à quelque chose de vraiment efficace rendant le code plaisant à parcourir.
10  0 
Avatar de SimonDecoline
Membre expert https://www.developpez.com
Le 16/01/2018 à 0:54
Citation Envoyé par Jipété Voir le message
Ah non, tu ne vas pas recommencer, par pitié !
10  0 
Avatar de kmedghaith
Membre averti https://www.developpez.com
Le 15/01/2018 à 9:09
Code : Sélectionner tout
1
2
3
ldd /usr/bin/java  | grep libc 
ldd /usr/bin/python | grep libc
9  0 
Avatar de Firwen
Membre expérimenté https://www.developpez.com
Le 19/01/2018 à 13:19
Les pseudos prophètes des languages à haut niveau et GC qui remplaceront tout dans un future proches ( proche depuis 20 ans) m'ont toujours fait doucement rigoler.

Je vais troller un peu car c'est Vendredi.

Si on prends l'état des lieux en 2018 on a :

- Tous les Kernels de 95% des OS faits en C (parfois C++) incluant, Windows, Linux, XNU ( OSX), iOS et Fushia. Car le code kernel est incompatible avec le concepte de GC, ou de runtime.

- Toutes les applications Desktop client lourdes qui sont fait en C++, incluant les Web Browsers, les suites de bureautiques ( Office, Libre Office), les app systemes ( navigateurs de fichiers, exploreurs, système config) car les grosses apps ont besoin d'une gestion fine de la mémoire.

- Toues les jeux vidéos ou applications 3D et CAO sont fait en C++ : Unreal Engine, Unigine, CryEngine et tous les jeux dérivés, Blender, Maya, Cathia & co car 3D = performance et low-latence.

- Tous les softs embarqués sont fait en C pour des raisons de places, incluant votre box Internet, votre voiture et l'avion que vous venez de prendre.

- Tous les drivers sont fait en C car code kernel.

- Toutes les Databases engines majeures ( MariaDB, MySQL, MongoDB, Redis, Oracle, SQLServers) sont fait en C++ ou C pour des questions de latences, performances et de contrôle fin des I/O.

- Tous les Web Servers majeures incluant Apache, Ngnix, IIS, lighthttpd sont fait en C++ ou C. ( à l'exception de Caddy, en Go ).

- Toutes les libs systèmes, framework majeurs systèmes sont fait en C ou C++ car utilisables dans tous les autres languages.

- Toutes les applications scientifiques ont généralement un coeur en C/C++ ( ou Fortran ) avec une interface dans un scripting language ( python ou autre ) pour des raisons de performances.

Donc si on prend la question autrement: Qu'est-ce qui reste en autre chose que C et C++ ?

- Le Web (in browser ou meme serveur ) car c'est le domaine exclusive de Javascript.
- Les Web services, ou application serveurs en Go, .NET, Java ( ou PHP pour les adeptes du sado-masochisme ).

F
10  1 
Avatar de SimonDecoline
Membre expert https://www.developpez.com
Le 30/01/2018 à 15:32
Citation Envoyé par thierryc Voir le message
Sur Qwant, en 30" chrono:
- F-35, viseur de casque et utilisation prédominante du C/C++ : https://en.wikipedia.org/wiki/Lockhe...s_and_avionics
wikipedia est une très bonne source secondaire. Je renvoie aux sources primaires.
Personnellement, j'aime bien:
* "Much of the F-35's software is written in C and C++ because of programmer availability", LOL, ils ne savent pas former des développeurs?
* "General Norton Schwartz has said that the software is the biggest factor that might delay the USAF's initial operational capability". Re-LOL.
* "In 2010, Pentagon officials discovered that additional software may be needed.". Re-re-LOL.
Le plus amusant, c'est que nos amis étasuniens ont été piratés par les Chinois sur le F-35 et que les chinois vont copier le code étasunien ...
Et alors ? Ça ne prouve absolument pas que le C++ est la raison de l'échec du F35. Le F35 a accumulé les problèmes tant matériels que logiciels donc c'est normal qu'il y en ait aussi dans le code C++. C'est comme dire que puisque les documents sont rédigés en anglais alors l'anglais est source d'erreurs : écrivez en catalan !

Citation Envoyé par thierryc Voir le message

- sur C++, le maître lui-même, notre vénéré Stroustrup: https://www.quotes.net/quote/9012 :
" C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg". Traduction sémantique en français: le C est un pistolet chargé sans sécurité. Attention où vous visez. C++ est une grenade dégoupillée. Attention où vous la lancez... LOL
Sérieusement, si l'inventeur du langage dit des choses comme cela, comment peut-on s'en servir pour des développements industriels avec des contraintes de délais, de charge, de budget, avec les développeurs que l'on a et pas ceux qu'on aimerait avoir?
Pourquoi tu ne cites pas celle-ci plutôt : "There are only two kinds of languages: the ones people complain about and the ones nobody uses" (il y a seulement deux types de langages: ceux dont tout le monde se plaint et ceux que personne n'utilise) https://www.quotes.net/quote/53251 ?

Citation Envoyé par thierryc Voir le message

- sur l'adéquation du C/C++ pour le développement d'OS: http://www.ocp.inf.ethz.ch/wiki/OCP/Home
Oberon est un système d'exploitation complet, graphique, avec une architecture à base d'agents, développé pour une fraction de l'effort et du temps passé sur U...X sans parler de W..S ou de M..S. La petite taille d'Oberon, en termes de lignes de source, est également impressionnant.
Ceci démontre aisément qu'il n'est pas nécessaire d'utiliser un langage de bas niveau comme C/C++ pour développer un système d'exploitation complet.
Tu mélanges les concepts avec les outils pour les mettre en oeuvre. Andrew Tanenbaum a également beaucoup critiqué l'aspect monolithique des Unix mais il a quand même codé Minix en C.

Bref, tu as peut-être raison sur certains points mais à mes yeux ton discours n'a aucune valeur car c'est soit ton témoignage sur ton travail génial pendant que les autres font de la merde soit quelques "preuves" qui n'en sont en fait pas du tout.
9  0 
Avatar de wolinn
Membre éprouvé https://www.developpez.com
Le 13/01/2018 à 18:18
Le C++ n'est pas plus prêt de disparaitre que le FORTRAN (dont la première version remonte à 1957) ou le Cobol (1959) parce qu'il y a une énorme base de logiciels et de bibliothèques, résolvant des problèmes peu sensibles aux modes et technologies éphémères. Une inversion de matrice, ça s'écrit en FORTRAN ou en C++, et les nouveaux langages n'apportent rien de bien fondamental pour ce type de problème.
Le compilateur d'Intel est disponible pour FORTRAN et C++. Dans mon domaine (CAO, simulation), le standard industriel est le C++.
Le C++ peut tout au plus reculer sur certains usages pour lesquels il y a des langages mieux adaptés.
7  0 
Avatar de Pyramidev
Expert confirmé https://www.developpez.com
Le 24/01/2018 à 1:34
Citation Envoyé par Madmac Voir le message
Ruby est une preuve de concept pour une nouvelle génération de langage. Ruby a prouvé qu'il est possible de faire de la programmation sans devoir constamment faire des déclarations de type. Mais c'est uniquement possible qu'avec un langage pure-object. C et C++ sont des langages idiots. Si je met un variable a la gauche d'un fonction que retourne une chaîne de caractères, on ne devrait pas à avoir à déclarer le type.
A partir du C++11, on peut faire de l'inférence de type avec auto, par exemple : auto i = 1;.
Dans d'autres langages, on peut faire de l'inférence de type sans devoir taper un mot-clef spécifique.
Dans tous les cas, pour qu'un langage permette au développeur de ne pas devoir écrire explicitement le type, il n'a pas besoin de supporter le paradigme objet. C'est indépendant.

Citation Envoyé par Madmac Voir le message
Alors on cast et on cast à ne plus finir.
Les conversions explicites sont verbeuses, mais les conversions implicites sont des sources de bogues.
Par exemple, si on appelle une fonction qui prend en paramètre une chaîne de caractères et un entier mais que l'on écrit les deux arguments dans le mauvais ordre par mégarde, si l'entier n'est pas convertible en chaîne ou si la chaîne n'est pas convertible en entier, alors on aura une erreur de compilation et on verra tout de suite d'où vient l'erreur au lieu de perdre du temps en débogage, à l'exécution.

Citation Envoyé par Madmac Voir le message
Les attributs et variables privés sont une vrai plaie, J'ai du refaire des classes complètes en raison de ces saletés. Les professeurs devraient cesser d'encourager les programmeurs de les utiliser.
Au contraire, les professeurs doivent encourager les développeurs à les utiliser et surtout leur expliquer à quoi ça sert.
L'un des intérêts des variables privées est de pouvoir parfois changer l'implémentation de la classe sans avoir besoin de mettre à jour le code source des utilisateurs de la classe. Cela permet, entre autres, de travailler plus efficacement à plusieurs. En effet, quand une classe est utilisée par de nombreuses personnes différentes, s'il faut aller voir tout le monde chaque fois que l'on veut changer la liste des variables membres de la classe, on perd en productivité. C'est encore plus flagrant quand on ne connaît pas la liste exhaustive des utilisateurs, par exemple quand on code une bibliothèque.
Un autre intérêt des variables privées est de pouvoir avoir des invariants de classe. Cela permet de concentrer certains contrôles sur les constructeurs et les mutateurs de la classe au lieu de multiplier ces contrôles dans tout le code qui utilise la classe en question. Par exemple, si, dans un programme donné, un code utilisateur doit être une chaîne alphanumérique non vide sans majuscules, alors il vaut mieux créer une classe CodeUtilisateur avec une variable membre privée de type std::string et un constructeur qui vérifie que la chaîne en question respecte bien les contraintes plutôt que d'utiliser directement des variables de type std::string et écrire 500 fois dans le code assert(EstCodeUtilisateurValide(chaineCodeUtilisateur));.
7  0 
Avatar de Betameche
Membre habitué https://www.developpez.com
Le 28/01/2018 à 17:02
Bonjour,

Petite réponse à ce message:

Citation Envoyé par thierryc Voir le message
Bonjour,

1°) ....
Je vais pas commenter tous les points un à un, mais en tous cas les 3 premiers sont un peu des fakes news si je puis me permettre.

1) Le C n'a pas fait controverse à son invention, il à été designer dans un objectif précis: porter Unix sur PDP-11. Et pourquoi ne pas utiliser un autre langage (comme le B, qui fut une option)? -> Le manque de possibilités offertes dans les autres, comme par exemple l'adressage des bytes. Il a ensuite percé car il répondait à un besoin !
La seule controverse que je vois, c'est celle de son utilisation aujourd'hui.

2) Le DoD était effectivement incapable d'utiliser le C++, celui-ci n'existant pas !!! Petit rappelle: Ada est plus vieux que C++. Par ailleur, Bjarne Stroustrup c'est lancé dans le C++ (à ce moment le C with classes) justement parce qu'il estimait que le C était trop peu praticable pour de gros projets.
De plus, c'est le nombre de langages (plus de 400) utiliser dans les projets qui a poussé le DoD à en chercher un qui pourrait répondre au maximum de leur besoin et à finalement choisir d'en créer un nouveau.
Pour le F35, j'ai vu parler de problème de structure, de problème d'algorithme mais je ne trouve pas de source sur des problématiques liées aux langages utilisés, je ne trouve même pas lesquels ont été utilisé ! Une aide serait la bien venue.

3) Le Java vient apparemment bien de l'insatisfaction (cf. Wikipedia) d'un ingénieur sur le C++, maintenant:
Quels défauts enlevés ont été réintroduit ?
Source sur la pression des développeurs voulant tellement faire du C++ qu'ils en changent Java !

4) Source + comparatifs avec les autres langages ???

5) de nombreuses sources, oui. Mais lesquelles ???

6-15) beaucoup d'avis personnel avec des stats sorties de nul part, donc rien à dire.

Et de manière général je suis toujours méfiant quand je vois quelqu'un écrire C/C++ et en parler comme d'un seul et même langage.

Pour info: Un petit coup de Wikipedia pour le dates (en, fr, de, toutes concordantes) pour mes sources et 2-3 premiers liens de recherche google simple pour le F35 (dont le rapport du DOT&E).
7  0