Le C est-il encore un langage d'avenir ?
Une étude montre que les jeunes ne l'apprennent plus

Le , par Gordon Fowler, Expert éminent sénior
Les jeunes développeurs n'utiliseraient plus le C.
"C'est trop difficile, un truc pour les vieux" semblent-ils dire.

C'est en tout cas l'enseignement que Michael Barr, rédacteur en chef du magazine "Embedded Systems Design", tire de son expérience.

L'étude qu'il a menée pendant plus de dix ans montre pourtant que ce langage est, de loin, le plus utilisé dans les projets de logiciels embarqués.

Mieux : il l'a toujours été, et de manière incontestable, sur les treize dernières années.

Quant à sa popularité, bien loin de s'essouffler, elle ne cesse de progresser.



Ce graphique est extrait de l'étude de Michael Barr.

On notera que la rupture en 2004 s'explique par un changement de question : précédemment les développeurs pouvaient donner plusieurs réponses ("Quel(s) langage(s) utilisez-vous ?"), après cette date seul le langage préféré est pris en compte.

Les courbes montrent que l'usage de l'assembleur comme langage exclusif d'un projet semble connaitre un déclin inéluctable.

Il montre également que, de manière continue, le C prend des "parts de marché" au C++.
Un résultat qui défie les prédictions et contredit les idées reçues, car si le C++ a connu une vague d'adoption jusqu'en 2001, il semble, depuis, stagner.

La fin du C n'est donc a priori pas d'actualité.

Deux raisons majeures l'expliquent.
Premièrement parce que les compilateurs pour le C sont disponibles pour une vaste majorité de micro-processeurs, qu'ils soient en 8, 16 ou 32 bits.
Deuxièmement, parce que le C est le parfait compromis entre un langage de haut-niveau et de bas-niveau.
D'après Michael Marr, on ne ferait pas mieux pour tout ce qui touche aux processeurs et aux pilotes.

Or ce marché explose.

Le vieillissement et le non renouvellement des programmeurs en C d'une part, et l'augmentation de l'importance des logiciels embarqués d'autre part n'annoncent rien de bon pour l'avenir.

La faute en incomberait à l'école : "le développement de process et l'architectures des firmware pour les logiciels embarqués s'apprennent aujourd'hui sur le tas", constate le rédacteur en chef de "Embedded Systems Design".
Malheureusement, cette forme d'enseignement n'est pas des plus efficaces. Le jeune programmeur "n'a souvent que peu de retour - quand il en a - [et] le découragement est souvent au rendez-vous".

"Bien qu'ils soient intelligents et talentueux, mes jeunes amis ne connaissent [donc] pas vraiment le C. Et ils s'en moquent", regrette-t-il. "Pourtant, il faudra bien continuer à écrire les logiciels embarqués pour répondre à une demande toujours plus forte. De nouveaux langages peuvent aider, mais ils ne permettront jamais une rétro-compatibilité avec toutes les architectures des CPU que nous avons connues jusqu'ici et que nous allons encore utiliser pendant plusieurs décennies"

Pour renouveler sa communauté de programmeurs, le C n'aurait donc pas le choix.

Il va devoir se rendre séduisant.

Et vous qu'en pensez-vous ?

Le C est-il le meilleur langage pour les logiciels embarqués ?
L'avez-vous appris sur le tas ?
Partagez-vous le diagnostic et les inquiétudes de Michael Marr ?


A lire aussi :


Tout le C sur Développez.com.

Source : "Les vrais hommes programment en C", article paru dans "Embedded Systems Design".


Vous avez aimé cette actualité ? Alors partagez-la avec vos amis en cliquant sur les boutons ci-dessous :


 Poster une réponse

Avatar de Zartan Zartan - En attente de confirmation mail http://www.developpez.com
le 22/01/2010 à 14:12
Le c a pas mal survécu avec l'informatique embarquée. Le basic également d'ailleurs.

La principale raison pour laquelle le C survivra c'est les autres langages eux-mêmes : Eiffel, PHP entre autres sont codés en langage C.

Ceci dit, à chaque évolution matérielle, un certains nombre de logiciels écrits en C restent sur le carreau. La prochaine hécatombe aura lieu avec l'arrivée des processeurs 128 bits, probablement.
Avatar de dams78 dams78 - Membre chevronné http://www.developpez.com
le 22/01/2010 à 14:32
Citation Envoyé par Mac LAK  Voir le message
Je confirme, hélas... De plus, je vois de plus en plus de psychorigides parmi les jeunes arrivants : ils considèrent que ce qu'ils ont appris à l'école / fac est "absolu, universel et idéal". Donc, si ce n'est pas exactement comme à l'école (insérer un sourire en coin ici), ils râlent / critiquent et perdent du temps à venir nous expliquer le boulot que l'on pratique depuis 10 ans, et les contraintes du client dont ils connaissent à peine le nom et absolument pas le métier. Et bien sûr, dans ce genre de cas, inutile de venir leur expliquer qu'ils vont devoir apprendre quelque chose de nouveau : ils sont persuadés que vu qu'ils sont sortis de l'école, ils n'ont plus RIEN à apprendre. Bien entendu, ce genre de personnage ne dépasse en général pas le niveau du stage ou de la période d'essai, heureusement.

D'où l'avantage de prendre des apprentis
Avatar de lepinekong lepinekong - Membre actif http://www.developpez.com
le 22/01/2010 à 14:37
Citation Envoyé par Mac LAK  Voir le message
Je confirme, hélas... De plus, je vois de plus en plus de psychorigides parmi les jeunes arrivants : ils considèrent que ce qu'ils ont appris à l'école / fac est "absolu, universel et idéal". Donc, si ce n'est pas exactement comme à l'école (insérer un sourire en coin ici), ils râlent / critiquent et perdent du temps à venir nous expliquer le boulot que l'on pratique depuis 10 ans, et les contraintes du client dont ils connaissent à peine le nom et absolument pas le métier. Et bien sûr, dans ce genre de cas, inutile de venir leur expliquer qu'ils vont devoir apprendre quelque chose de nouveau : ils sont persuadés que vu qu'ils sont sortis de l'école, ils n'ont plus RIEN à apprendre. Bien entendu, ce genre de personnage ne dépasse en général pas le niveau du stage ou de la période d'essai, heureusement.

Mais à part ça, tout va bien...

Première nouvelle...
Tu oublies un peu vite le bas niveau, ou tout simplement la portabilité inter-langages d'une DLL : s'interfacer au niveau binaire avec du C++, par exemple, est dépendant du compilateur choisi. En C, tu y arrives toujours car l'ABI est alors propre à l'OS et non pas au compilateur.
Et cela inclut pas mal de types d'"organisations standardisées" (MS et GNU/Linux en tête), tu n'as qu'à voir par exemple comment sont faits les kernels, les drivers, la plupart des couches réseau, etc.

C'est vrai j'oublie le bas niveau pour la simple raison que la majorité des demandes c'est pour des applications métiers. Le bas niveau pour moi est une niche, tout comme la niche Cobol sauf que Cobol est une niche beaucoup plus grosse et d'ailleurs la demande est même passé devant java selon lemondeinformatique.

Mais quand on parle d'avenir, on ne peut pas dire que Cobol c'est l'avenir ou alors tout a de l'avenir et dans ce cas pourquoi poser la question si c'est juste pour avoir comme réponse un baume psychologique de s'entendre: o oui ça a encore de l'avenir.

Quand je parle d'organisation standardisé, je parle des standards grands comptes. On développe pas d'OS là-dedans.
Avatar de jabbounet jabbounet - Membre expert http://www.developpez.com
le 22/01/2010 à 15:27
Citation Envoyé par lepinekong  Voir le message
C'est vrai j'oublie le bas niveau pour la simple raison que la majorité des demandes c'est pour des applications métiers. Le bas niveau pour moi est une niche, tout comme la niche Cobol sauf que Cobol est une niche beaucoup plus grosse et d'ailleurs la demande est même passé devant java selon lemondeinformatique.

Une niche dont tu ne peux pas te passer au quotidien, sans ton rendre compte, car sans la partie bas niveau pas dans un ordinateur ou tout autre équipement (routeur, box adsl, smartphone, ...) aucune possibilité de faire du haut niveau.

Quand je parle d'organisation standardisé, je parle des standards grands comptes. On développe pas d'OS là-dedans.

je suis certains que certains grand compte on développé leur propre OS
Avatar de souviron34 souviron34 - Expert éminent sénior http://www.developpez.com
le 22/01/2010 à 15:41
ou des outils..

Comme Dassault et Catia.. ou l'IFP et leurs outils..

Alors dans les "grands comptes" de la finance, oui sans doute. Cependant, ce ne sont pas des références de rentabilité des services informatiques
Avatar de Mac LAK Mac LAK - Inactif http://www.developpez.com
le 22/01/2010 à 15:44
Citation Envoyé par lepinekong  Voir le message
C'est vrai j'oublie le bas niveau pour la simple raison que la majorité des demandes c'est pour des applications métiers. Le bas niveau pour moi est une niche <snip>.
<snip>
Quand je parle d'organisation standardisé, je parle des standards grands comptes. On développe pas d'OS là-dedans.

Ben non. Je développe exclusivement "métier" (en vrac : avionique, ferroviaire, automobile, militaire et gestion de process), ce qui implique le développement de drivers pour bus de terrain, de composants plus ou moins critiques (=> C de rigueur la plupart du temps), etc. Ou cela implique aussi parfois des systèmes sans OS et/ou avec OS imposé pour cause de certification... On doit alors se taper toutes les couches basses et les drivers pour tous nos systèmes électroniques.

Et inutile de te dire que tout ça, ce ne sont QUE des grands comptes... C'est simplement que c'est un marché caché, même s'il est énorme, donc il n'est pas vraiment "visible" par ceux ne trempant pas dedans, tout bêtement.

La raison est simple, d'ailleurs : on est liés par le secret professionnel (confidentialité industrie systématiquement, confidentialité défense assez souvent, et jusqu'à secret défense pour certains trucs). Donc, on peut parler de généralités comme celles visibles sur le net par n'importe qui, mais pas de la tripaille interne d'un produit ou des solutions technologiques utilisées pour le client X.
Avatar de lepinekong lepinekong - Membre actif http://www.developpez.com
le 22/01/2010 à 15:48
Citation Envoyé par jabbounet  Voir le message
Une niche dont tu ne peux pas te passer au quotidien, sans ton rendre compte, car sans la partie bas niveau pas dans un ordinateur ou tout autre équipement (routeur, box adsl, smartphone, ...) aucune possibilité de faire du haut niveau.

je suis certains que certains grand compte on développé leur propre OS

Est-ce que ça crée de nouveaux emplois pour le C pour autant puisqu'on parle d'avenir

Maintenant je dis pas que c'est pas une stratégie intéressante de se positionner dessus puisque si le gros du troupeau s'en va ailleurs ça crée de la rareté dans la niche, je dis simplement que si c'était l'avenir, le troupeau irait là.
Avatar de Tommy31 Tommy31 - Membre chevronné http://www.developpez.com
le 22/01/2010 à 15:53
Citation Envoyé par souviron34  Voir le message
Comme Dassault et Catia.. ou l'IFP et leurs outils..

Si je ne m'abuse, Catia v5 c'est du C++.
Avatar de jabbounet jabbounet - Membre expert http://www.developpez.com
le 22/01/2010 à 15:53
Citation Envoyé par lepinekong  Voir le message
Est-ce que ça crée de nouveaux emplois pour le C pour autant puisqu'on parle d'avenir

Si tu connais ton secteur tu sais ou frapper

Maintenant je dis pas que c'est pas une stratégie intéressante de se positionner dessus puisque si le gros du troupeau s'en va ailleurs ça crée de la rareté dans la niche, je dis simplement que si c'était l'avenir, le troupeau irait là.

Comme dit mak lak c'est un marché caché.

Ca évite entre autre les effets troupeaux qui piétinent tout sur leur passage et qui s'étonne que ce soit cassé après ou que cela ne marche plus après.
Avatar de Mac LAK Mac LAK - Inactif http://www.developpez.com
le 22/01/2010 à 15:54
Citation Envoyé par lepinekong  Voir le message
Est-ce que ça crée de nouveaux emplois pour le C pour autant puisqu'on parle d'avenir

Dans mon secteur, malgré la crise, on embauche... Ce n'est pas le cas de beaucoup d'autres activités, tu en conviendras.

Par contre, faut bien voir aussi que le "troupeau" ignore l'existence de ce marché pour commencer, et que l'on n'embauche pas vraiment de gens ayant un profil "spécialiste datawarehouse", "développeur web" ou autre "administrateur SAP"...
Avatar de souviron34 souviron34 - Expert éminent sénior http://www.developpez.com
le 22/01/2010 à 16:03
Citation Envoyé par Tommy31  Voir le message
Si je ne m'abuse, Catia v5 c'est du C++.

Pour certaines parties seulement :

http://fr.wikipedia.org/wiki/CATIA

CATIA fonctionnait uniquement sur les plateformes Unix (AIX, HP-UX, IRIX et Solaris) en version 4. La version 5, disponible depuis 1999, fonctionne sur Solaris, AIX, HP-UX, IRIX et Windows, et propose en outre une architecture de développement à partir d'interfaces VB et C++ permettant de personnaliser et de programmer ses propres modules à partir du noyau de base. Linux n'est pas supporté.

Offres d'emploi IT
Développeurs php mysqlh/f
Neosurf - Ile de France - Le Kremlin-Bicêtre (94270)
EXPERT RESEAU LAN/WAN
Aubay - Ile de France - ILE-DE-FRANCE
Consultant recette fonctionnelle H/F
Solutec - Rhône Alpes - Lyon (69000)

Voir plus d'offres Voir la carte des offres IT
Contacter le responsable de la rubrique Accueil