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

Le , par Michael Guilloux

100PARTAGES

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 émérite 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 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 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 SimonDecoline
Membre émérite https://www.developpez.com
Le 15/01/2018 à 20:11
Citation Envoyé par jpouly Voir le message
Sur des projets d'électronique ou informatique industriel, mais sur des projets d'informatique de gestion, ça n'a pas grand intérêt.
... mais sur les projets d'électronique ou informatique industriel si.

Citation Envoyé par jpouly Voir le message
Non. Le .net ou le PHP sont tout aussi efficace et beaucoup plus productif.
D'ailleurs tous les supercalculateurs, les moteurs de jeu, les systèmes temps-réel etc sont en train de passer à PHP... et ça ne m'étonnerait pas que Mozilla laisse tomber rust pour redévelopper firefox en PHP...

Citation Envoyé par jpouly Voir le message
En théorie Oui, mais en pratique Non ! Et c'est souvent à cause des compilateurs.
Essayer de compiler du code C ou C++ fait pour GCC avec un compilateur HP, IBM ou M$ ..
Oui c'est bien connu que le C n'est pas portable en pratique.. c'est même pour ça que netbsd, qui tourne sur à peu près tous les cpu du monde, est codé en swift...
9  3 
Avatar de SimonDecoline
Membre émérite 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 el_slapper
Expert éminent sénior https://www.developpez.com
Le 31/01/2018 à 16:16
Citation Envoyé par thierryc Voir le message
(.../...)Ce qui est terrible avec le F-35, alors que nos amis étasuniens ont toujours des ressources financières extraordinaires, c'est qu'ils ont choisi le langage en fonction du "pool" de développeurs au lieu de choisir le langage (et la méthode, etc) en fonction de leur besoins et d'ensuite former les équipes proprement. Des fois, je rêve de ce que j'aurais pu faire avec mon équipe d'alors avec de tels moyens...
Ce ne sont pas les seuls. JAVA est partout pour le même genre de raisons.

Ce que les RH ne comprennent pas, c'est que l'important, pour bien programmer, c'est d'avoir une tête bien faite. L'outil compte peu, finalement, pour peu qu'il ne soit pas scandaleux pour l'usage(j'ai fait des merveilles en COBOL, mais c'était de l'info de gestion. Pour, comme un membre de ma famille, calculer l'influence des planètes du système solaire sur les trajectoires de satellites, c'eut été un outil aussi inadapté qu'une scie à bois pour visser un meuble IKEA). D'ailleurs, les délais de formation que tu donnes pour tes programmeurs sont dérisoires, et je les crois réalistes. Pour toi, la difficulté, c'est de choisir la tête bien faite. Une fois que c'est fait, eh bien le plus dur est fait. Il n'y a plus qu'à.

Je vais même aller encore plus loin, et me faire flamber par les puristes du salon. A mon sens, les écoles d'informatiques ne sont pas un bon moyen de devenir développeur informatique. Nous ne sommes pas dans un domaine figé de connaissances vastes et standard, comme en médecine. Nous sommes dans un domaine hautement fluide, ou l'information manquante se trouve facilement, ou les méthodes changent rapidement, et ou donc le corpus commun de savoir nécessaire est négligeable, comparé à la médecine. J'ai fait un séjour aux urgences, dans la nuit de dimanche à lundi. Hautement désagréable. Une fois qu'il a eu les éléments en main(analyse de sang et d'urine), le constat a été évident pour l'urgentiste : colique néphrétique(si vous ne savez pas ce que c'est, je vous conseille de rester dans l'ignorance). Il y a 100 ans, ça existait déjà, pour les mêmes raisons. Partout dans le monde, quelle que soit la période dans l'histoire, ce savoir est le même. L'informatique ne marche pas comme ça.

J'ose prétendre que ce dont nous avons besoin, c'est de gens qui ont fait des maths, de la philo, de l'histoire(la vraie, celle ou on réfléchit aux causes, pas celle ou on apprend par cœur), de la littérature, de la physique, de la chimie, bref, toutes les matières nobles et généralistes qui forment l'esprit. J'aurait même envie d'y ajouter le latin, langue de la rigueur par excellence. Un peu de sociologie aussi, parce que l'informatique, c'est toujours fait par des gens pour des gens.

Et le jour ou il arrive en entreprise, le Jeune Diplômé ne sait certes pas ce que c'est qu'un singleton, ou autres designs patterns. Mais il a appris à structurer sa pensée, et à peine mis au jus, il saura parfaitement quand il faut les utiliser...et quand il ne faut pas. En comparaison, le profil qui s'est tapé 5 ans de JAVA/javascript/angular en école sera peut-être immédiatement opérationnel, mais il sera en grande difficulté dès que la technologie changera, parce-que pour lui, la technologie est un but final, pas un simple outil. Il n'aura pas non plus la largesse d'esprit pour remettre son projet dans son contexte. La pureté technique sera, trop souvent, son seul horizon. Et il fera un programme à la mode, super joli, respectant tous les designs patterns à la mode, mais qui ne sert pas à grand chose. J'en ai trois sur le dos, en ce moment. Un Australien, un Allemand, un Bielorusse, tous formés à l'informatique pure, tous des dieux de la technique. Et qui sont infoutus de corriger des bugs qui m'empêchent de bosser. Et qui m'interdisent de mettre mon nez là-dedans parce-qu'ils ont peur de perdre la maitrise de leur précieux.

C'est dans ce pool-là, en moins bons, que le DoD a recruté pour le F35. C'est ça qui les a plantés. Pas le choix du C/C++(même si peut-être on aurait pu trouver mieux). Mais leur obsession de prendre des gens qui "maitrisent le langage". Kennena'afout', de la maitrise du langage? Au pire, un ou deux experts pour les trucs exotiques. Tout le reste, ça doit être fait par des gens qui comprennent à qui sert leur code, à l'intérieur du programmer, à l'intérieur du projet, et dans sa globalité. Par exemple, un système d'armes aérien modernes a des contraintes IFF particulièrement tordues, mais nécessaires. être capables de comprendre ce que tactiquement représente le friendly fire ou le dommage collatéral, ça n'a rigoureusement rien d'informatique. C'est un mélange de philosophie et de bases du combats. Pourtant, ça impose des contraintes fortes, que le programmeur au courant sera capable de sublimer. Là ou le programmeur ignorant, même supérieur techniquement, sera incapable de retranscrire en langage informatique de manière satisfaisante. Alors même que lui, il est aux normes.

Après, certains de ces écoles sortent capables de réflexion approfondie. On en croise pas mal en ces lieux, ici sur DVP, et je les salue. Mais si ils sont devenus capables d'une réflexion supérieure, c'est malgré le système, qui a tenté d'en faire de vulgaire supertechniciens, pas grâce à lui. De même que j'ai croisé des BAC-2 à la tête bien faite, et hautement capables.

Joel Spolsky n'aime pas enseignement de JAVA dans les écoles d'informatiques parce-que d'après lui c'est trop facile, ce n'est pas assez sélectif. Je dirais que le mal est plus profond encore. Le simple fait d'enseigner toutes les arcanes d'un langage informatique, de bourrer le crâne de l'élève au lieu de l'entrainer à s'en sortir quel que soit l'outil à disposition est une aberration, qui a mené à sa perte bien plus que le projet F35. Le JAVA est super-populaire parce-que c'est un langage ou le médiocre de pensée peut briller en compensant en apprenant par cœur des foultitudes de spécificités sur les API disponibles. Et, jusqu'à un certain point, en JAVA, le travail brut et l'apprentissage par cœur peuvent faire la nique à l'intelligence et à la réflexion. Mais ça a ses limites. il y a toujours un moment ou il faudra être plus futé. Mais, en JAVA, ce moment arrive beaucoup plus tard - et les gens réellement futés qui bossent en JAVA ont beaucoup de mal à sortir du lot à cause de ça. Pourtant, c'est d'eux dont nous avons besoin en masse, pas des superspécialistes qui savent quelle API permet de passer l'aspirateur, et avec quelles performances.
9  2 
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 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web