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 !

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

Le , par Gordon Fowler

0PARTAGES

1  0 
L'avenir du C ?
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".

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

Avatar de stardeath
Membre expert https://www.developpez.com
Le 14/08/2009 à 17:58
pour ma part je n'aime pas le c, ce n'est peut etre qu'une lubie mais je préfère le c++.

bref aucun rapport, enfin presque :
- dans mon ancienne fac, mon prof de d'algo (1ère et 2ème année) détestait le c, et se refusait même d'en parler.

- mon prof de c avait pour argument "ça marche donc le programme est correct"
(et vous vous en doutez, il codait très très mal)

- mon prof de système avait pour argument, "linux est codé en c, donc quand on programme pour linux, on programme donc en c" (et bien sur il codait pas mieux que mon prof de c)

et sans dire que dans mon ancienne fac on commençait le c++ qu'en master ...

pour moi quand je vois ça, qu'est ce qui me donnerait envie de faire du c?
alors je sais que les profs de fac enseigne quasiment jamais les matières dont ils sont spécialistes, mais à part sur le tas, c'est pas dans mon ancienne fac qu'on peut sortir en sachant toutes les arcanes du c.
0  0 
Avatar de Isukthar
Membre régulier https://www.developpez.com
Le 14/08/2009 à 18:19
Moi aussi je suis à la fac, et on a encore jamais écrit une ligne de C++ (et on en écrira probablement jamais durant le cursus). Pour beaucoup de prof, le C++ c'est la même chose que Java.
Par contre du C on en a fait pas mal, mais autant certains profs lui donnent beaucoup de qualités (profs de système, multimédia, ...), autant d'autres le dédaignent et ne veulent même pas en entendre parler.
0  0 
Avatar de Chauve souris
Membre émérite https://www.developpez.com
Le 14/08/2009 à 18:57
... pour comprendre comment a évolué le français (et l'espagnol tambien). Et puis il est utile pour comprendre comment on en est arrivé à faire du C++ (rien que l'horreur des manipulations de chaînes en C). Ceci dit si c'est bon de commencer pédagogiquement par le C, il est effectivement inutile de s'y éterniser. Il faut aussi dire qu'il y a eu une "modernisation" du C et toutes sortes de fonctions se sont vues transformées en leur variantes (à grand coup de traits de soulignement) qui gèrent des débordements de mémoires et salades de types.
0  0 
Avatar de Jah77
Membre du Club https://www.developpez.com
Le 14/08/2009 à 19:25
Etant issu d'une école d'ingénierie informatique en alternance, je peux vous dire que les développeurs embarqués qui font du C ou du C++ auront de beaux jours devant eux.. je m'explique :
Déjà, dans cette école, on est à peu près 100 par promo en première année d'ingénierie et c'est un tronc commun. La spécialisation se faisant en deuxième année on a donc ces statistiques :
- 60% vont en génie logiciel faire du web, du java ou du .NET..
- 30% vont en réseaux
- et seulement 10% vont en systèmes embarqués !!! De plus, sur ces 10% il n'y a pas que des volontaires dont un bon tiers qui n'ont pas pu rentrer en génie logiciel.. lol
Une chose est sûre le C/C++ n'a pas la même côte que le Web ou le réseaux.. surement trop difficile pour certains.. car il nécessite quand même une bonne rigueur et de nombreuses connaissances en logiciel libre.
En ce qui concerne le monde professionnel, je suis absolument d'accord avec l'auteur car en effet, il existe des tonnes de projets en C qu'ils faut maintenir ou faire évoluer sans compter les outils à développer
Les chefs de projets sont vieillissant et la relève, comme je l'ai démontré au début de mon post va être pas mal détournée. Alors j'attends mon heure et je sais que l'on ne manquera pas de travail dans ce secteur et bien payé en plus car tout ce qui est rare est chère
0  0 
Avatar de ShamSS
Membre à l'essai https://www.developpez.com
Le 14/08/2009 à 19:43
Bonjour tout le monde.
Pour ma part, j'ai eu un excellent prof pour le c. C'est d'ailleur ce qui m'a fais aimer la programmation au depart. Desormais je suis passé sur d'autres langages (java, c#...) et il est clair que le c m'interresse moins. Par contre, j'ai remarqué les possibilité enormes et interresantes que procure ce langage. Il n'est pas simple lorsqu'on se plonge dans ses arcanes, mais propose bien plus de possibilité de bas niveau que d'autres langages. Piloter des cartes deviens plus simple, créer ses propres drivers ou autre.
De plus, dans les langages de haut niveau tel que le c#, le marshalling des librairies c et c++ sera toujours tres utiles.
Pour finir, je pense que c'est une mauvaise idée de ne plus le faire apprendre aux etudiant. Ce langage pose pas mal de bases de la programation (je pense notament aux processus) et les autres langages types java et c++ (surtout c++) découlent du c. Ils sont des "amelioration" de celui-ci.
0  0 
Avatar de ogaby
Membre actif https://www.developpez.com
Le 14/08/2009 à 19:44
Ah je confirme que sur le marché du travail, le C dans l'embarqué est recherché.

Perso, j'ai changé en passant de la finance (informatique) à l'industrie cette année et je ne regrette pas. L'embarqué est demandeur.
0  0 
Avatar de Isukthar
Membre régulier https://www.developpez.com
Le 14/08/2009 à 20:01
Est-ce que le Java est beaucoup utilisé dans l'embarqué? Car je vais peut être me spécialiser dans l'embarqué dans mes études, et une grosse partie de cours d'embarqué porte sur Java (et ils expliquent qu'il a plein de qualités par rapport au C pour l'embarqué).
0  0 
Avatar de Mercenary Developer
Membre habitué https://www.developpez.com
Le 14/08/2009 à 21:33
Bonjour,

Je pense que le C a encore de l'avenir. Pour ma pars je n'ai qu'un BTS Électronique, et j'ai appris les langages de programmations qui me servent professionnellement sur le tas, à savoir le C, PHP, ASP, Java et Delphi.
Je constate aussi que mes collègues sortie eux d'école d'ingénieurs ne parlent que de Java. Java est très bien pour l'informatique de gestion, et ses librairies lui permettent de faire pas mal de chose. Mais dans certains cas, le C reste indispensable. Tout ce qui est liaison avec des périphériques externes (driver) et lien entre les drivers et java (JNI) se font en C. Il faudrait des processeurs ayant comme langage natif java pour pouvoir se passer de C.
Je préfère le C, car on peux tout faire. Actuellement je développe un système de vidéo surveillance sous FreeBSD. Le plus "lite" possible avec interface web. J'ai donc tout fait en C, le serveur web à l'aide de socket classique, et tout tient dans un seul programme, inutile d'installer un serveur Apache, une base de donnée, etc...

Le C est difficile car il se rapproche du système, il faut avoir une notion de l'architecture d'un PC, des pointeurs, de l'allocation mémoire, etc... C'est plus complexe qu'un simple String toto = "Hello" + maVariable

Le java est plus simple et on peut penser uniquement à l'aspect métier alors qu'en C il faut aussi prendre en compte l'aspect technique, au risque de finir avec un buffer overflow et autre problème de ce type.

Cordialement.
0  0 
Avatar de Mat.M
Expert éminent sénior https://www.developpez.com
Le 14/08/2009 à 22:09
Citation Envoyé par Gordon Fowler Voir le message

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.
Faut-il en conclure que Java et .NET offre de piétres performances ? ( <troll inside> )

Citation Envoyé par Lovmy Voir le message

Le C est difficile car il se rapproche du système, il faut avoir une notion de l'architecture d'un PC, des pointeurs, de l'allocation mémoire, etc... C'est plus complexe qu'un simple String toto = "Hello" + maVariable

Le java est plus simple et on peut penser uniquement à l'aspect métier alors qu'en C il faut aussi prendre en compte l'aspect technique, au risque de finir avec un buffer overflow et autre problème de ce type.

Cordialement.
Qui a dit que le language c était difficile ?
Oui c'est vrai que pour initialiser une chaine de charactères c'est un peu laborieux mais souvent je trouve qu'en C#/.NET il faut en rajouter toute une couche pour faire des choses simples comme pour lancer un thread par exemple.
En C / win32 il suffit de faire _beginthread(nom de la fonction )
En .NET je suis neuneu c'est plus tarabiscoté
donc ce que tu gagnes en réduction de code d'un coté tu le perds de l'autre.
0  0 
Avatar de Kalite
Membre confirmé https://www.developpez.com
Le 14/08/2009 à 22:17
Pour ma part j'ai apris le C et C++ en cours. La plus part de mes camarrade ne jure que par les nouvelles technologies tel que Java et C#. Personnel, je trouve que ces nouveau language on beaucoup d'avantage tel que la simplicité et la création facile d'interface très travailler.

Par contre au niveaux des performances les languages compilé tel que le C et le C++ reste devant. De plus, ces langages sont beaucoup utilisé en aéronautique et en défense.

Le problème, c'est la loi du marché. En effet, je suis actuellement à la recherche d'un emploie et la on s'apperçoi très facilement qu'il y a beaucoup de demande en Java et en .net. Alors, c'est normale que les écoles s'orientent de cette façon. Mais, il est dommage qu'il y est un dénigrement de ces languages.
0  0