Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage
Et livre ses inquiétudes quant à son avenir

Le , par Victor Vincent, Chroniqueur Actualités
Quel avenir pour le langage C ?
Après plus de 35 ans de pratique en développement, principalement en langage C, Éric Raymond tourne le dos au langage et livre ses inquiétudes quant à l’avenir de ce dernier. Le développeur justifie son choix de faire ses adieux au langage C entre autres par le fait qu’il ne cesse de perdre du terrain face à des langages plus modernes comme Go ou encore Rust même dans le domaine de la programmation système. Même s’il reconnaît que C est encore le langage de loin le plus utilisé en programmation système, Éric Raymond pense que sa place au sommet est menacée par des langages plus récents. Le développeur confie que jusqu’ici, il écrivait du code en langage C presque chaque semaine, mais ajoute ne plus se souvenir de la dernière fois qu’il a eu à développer un « nouveau » projet en C. C’est dire à quel point le langage, selon lui, est en train d’être mis au second rang.

Si le langage C a été la principale compétence qu’il a développée en tant que développeur de logiciels, Éric Raymond semble avoir consommé son divorce avec ce langage et déclare que s’il devait faire un projet en programmation système en partant de zéro, il choisirait Go sans hésiter. Selon lui, le langage C pourrait subir le même sort que d’autres langages comme FORTRAN, Pascal ou encore Cobol qui n’ont pas su résister face à la montée et au succès du langage C.

Pour avoir pratiqué ce langage pendant plusieurs années, la venue de Java, Perl ou encore Python n’avait pas beaucoup affecté les habitudes de Raymond. Il se souvient avoir eu à écrire une application d’assistant-bibliothécaire en 1997 en Perl sans que cela ne le fasse basculer vers ce langage. Éric Raymond a ensuite appris à écrire du code en Python sans que ce langage non plus ne le fasse abandonner complètement C. Mais il avoue que depuis qu’il a appris à programmer en Python, il l’utilisait dans ses programmes dès qu’il le pouvait tandis qu’il utilisait C quand il n’avait pas le choix. Pour lui, Python c’était l’équivalent du Lisp de ces premières années en tant que programmeur avec une liaison POSIX complète et de bonnes bibliothèques.

Un des gros soucis avec le langage C est que le développeur doit se soucier en permanence des problèmes de gestion de la mémoire, des caches, entre autres, estime Eric Raymond. Ce qui peut être très fatigant à la longue pour un programmeur qui ne trouve plus nécessairement le temps de se focaliser sur les aspects métier de son travail. C’est l’une des raisons qui l’a poussé souvent à migrer son code C vers Python dès que cela lui était possible. Eric Raymond déclare que cela l’a aidé à réduire de manière significative la complexité de ses applications. Il ajoute que depuis l’an 2000, tous les projets qu’il a démarrés à partir de zéro ont été faits avec Python. Le développeur pense qu’il n’est pas le seul dans cette situation et qu’il y a probablement beaucoup de gens comme lui qui ont opéré ce changement.

Le choix de Python en lieu et place du C n’était cependant pas fait par désamour pour le langage C. Le développeur confie que bien souvent il s’agissait de projets dont la réalisation en C aurait été très problématique. Il souligne que les problèmes du langage C tels que son ontologie de type de données limité et sa vulnérabilité aux problèmes de gestion des données de bas niveau auraient probablement hypothéqué les projets en question. Cet état de fait l’a finalement poussé à adopter Python plutôt que C même pour des projets peu complexes qui auraient pu facilement être réalisés en C.

Eric Raymond précise toutefois qu’il ne prédit pas la disparition de C dans un avenir proche, car, note le développeur, ce langage conservera certainement une bonne emprise sur les noyaux des systèmes d’exploitation et de certains firmewares. Il ajoute que le langage C reste malgré tout adapté pour des applications critiques qui doivent être capables de répondre en des temps très courts. C’est le cas par exemple des serveurs DNS, des agents de transport de courrier ou encore des programmes système qui sont conçus pour communiquer et gérer des transactions à la vitesse de la machine.

Source : article d'Eric Raymond

Et vous ?

Qu'en pensez-vous ?

Voir aussi

Dans quel domaine utilisez-vous encore le C ?


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


 Poster une réponse

Avatar de stef-13013 stef-13013 - Membre habitué https://www.developpez.com
le 11/11/2017 à 17:21
Trois remarques après ce post très intéressant :
1 - Difficile de perdre ses habitudes.
2 - Sauf si on est maso...
3 - Utiliser le bon langage adapté au projet

Par exemple, dans mon boulot, on bosse sur des microcontrôleurs où la place et la puissance sont "just"
donc C (et parfois asm !!) Pour le reste de nos softs (IHM, workers, etc.) c'est Python.

Je préfère de très loin le C/C++ à Python, mais bon, dans certains cas, faut arrêter de se faire du mal.

Après pour la mort du C, heu... Comment définir "proche" sachant que depuis plus de 40 ans, toute l'infra. soft (ou presque) tire ses racines du C.
C'est un peu comme renier sa mère.
Avatar de Kannagi Kannagi - Expert confirmé https://www.developpez.com
le 11/11/2017 à 17:24
Bon j'ai voté "Le C est destiné à rester confiné en programmation système " et j'ai mis un "-1" explication :

Le C est destiné à rester confiné en programmation système
Je ne trouve pas le plus approprié programmation système le C jouit assez bien encore dans l'embarqué aussi bref tout ce qui est bas niveau,, autre fait plus exotique le C est très utilisé dans la programmation de machine obsolète ( quand je m’intéresse a Atari ST pas mal programme en C , ou mème sur Mega Drive , ça peut resté de niche mais je doute que dans l'avenir en pensera a trouver un nouveau langage pour ces vielles bécane).

le "-1" est du que je trouve l'exemple et l'expérience dit est complètement stupide , remplacé le C par du python sérieusement ?
Je me dit on 2017 j'utilise le C , c'est pour un driver ou programmer sur une carte Arduino , je vois mal le remplacer en Python sincèrement !
Il est clair que pour d'autre application le C peut être remplacé par le Python mais je me vois pas personnellement codé en C certaine application surtout en 2017 avec le nombre de techno et langage disponible.

Autre point purement personnelle , le C pour ma part serait plus remplacé par le C++ que par Go ou Rust a mon avis.

Un des gros soucis avec le langage C est que le développeur doit se soucier en permanence des problèmes de gestion de la mémoire, des caches, entre autres, estime Eric Raymond. Ce qui peut être très fatigant à la longue pour un programmeur qui ne trouve plus nécessairement le temps de se focaliser sur les aspects métier de son travail
Pour ma part cela me pose aucun probleme , je pense que si on fait preuve de méthodologie , d'éviter certain piège , la programmation en C n'est pas fatiguante , autre point pour cela que le C est difficile a enseigner correctement , on doit enseigner pas seulement un langage mais aussi des méthodes et des choses a éviter.
En gros avec l'expérience en C je ne code que des configurations que je connais et que je maîtrise , je suis pas du genre a vouloir faire du code exotique. (pour cela que je trouve étrange de la part de quelqu'un qui code en C depuis 35 ans d'avoir ce genre de souci ).

Bref je trouve pas le Mr très a la page , oui en 2017 on doit changer de langage si on veut faire de l'applicatif , du web etc.
Note : je code encore en C pour des petits programmes ou des petits outils sur consoles (pour des programme ne faisant pas plus de 500 lignes le C reste encore très abordables ).
Avatar de pgoetz pgoetz - Membre à l'essai https://www.developpez.com
le 11/11/2017 à 17:47
Nous avons remplacer le C++ par du Python pour un résultat plus rapide!!! En fait C++ n'est pas plus rapide dès lors qu'il y des erreurs de conception (utilisation de listes au lieu de dictionnaires).

Résultat tous les collègues dont certains en sont enchantés.

D'autres collègues continuent de s'acharner en C++, alors qu'une interface SWIG permet d'écrire la majorité de l'application en quelques lignes de Python tout en utilisant des APIs C/C+. Il reste vrai que lorsqu'il apparaît des goulots d'étranglement, cette partie est vite porté en C++ et le tour est joué.

Il faut toujours adapter la solution au problème et éviter de réinventer la roue. Être un peu (voir beaucoup) fainéant aide parfois. Réfléchir plutôt que coder.

Je me pose par contre beaucoup de questions pourquoi nodejs qui était écrit en C a migré en C++. Peut être quelques fanatiques de "variadic template" https://en.wikipedia.org/wiki/Variadic_template ou comment rendre un programme compact et complètement illisible.
Avatar de SimonDecoline SimonDecoline - Membre confirmé https://www.developpez.com
le 11/11/2017 à 17:56
Citation Envoyé par Victor Vincent Voir le message
Qu'en pensez-vous ?
Éric Raymond préfère Python au C ? Bah c'est bien, moi aussi, mais ce sont des outils différents pour des usages différents. C'est comme dire que le marteau va disparaitre parce qu'on a mis au point la brouette...

Maintenant, que Go et Rust aient des avantages par rapport au C, certainement. Mais C a aussi des avantages et il est tellement répandu qu'il ne risque pas de disparaitre rapidement.
Avatar de lulu7 lulu7 - Nouveau Candidat au Club https://www.developpez.com
le 11/11/2017 à 18:04
comme la majorité ici, le C est mort, il est remplacé par un langane plus puissant C++. Mais je crois en un langeg pour les gouverner tous, Python est effectivement l'avenir dans tous les dommaine. Python c'est le must langage, avec python on peut tous faire et tres puissant genre calcule embarqué....
Avatar de Matt_Houston Matt_Houston - Membre expert https://www.developpez.com
le 11/11/2017 à 18:08
Donc lire tout ça pour au final apprendre qu'ESR arrête le C : cool story bro..

J'ai beaucoup de respect pour ce mec qui a déplacé des montagnes (il code heureusement bien moins de conneries qu'il n'en dit) mais là franchement ça m'en touche une sans faire vibrer l'autre.

Citation Envoyé par lulu7 Voir le message
comme la majorité ici, le C est mort, il est remplacé par un langane plus puissant C++. Mais je crois en un langeg pour les gouverner tous, Python est effectivement l'avenir dans tous les dommaine. Python c'est le must langage, avec python on peut tous faire et tres puissant genre calcule embarqué....
Tu pêches l'anchois au vif à carnassier, toi.
Avatar de marsupial marsupial - Membre expérimenté https://www.developpez.com
le 11/11/2017 à 18:56
Bah juste à l'instant, je viens de terminer d'installer anaconda. Le framework Python/R pour du Machine Learning. Je venais juste de regarder l'environnement et on y trouve quoi ? glib.

Avatar de RyzenOC RyzenOC - Membre expert https://www.developpez.com
le 11/11/2017 à 19:08
J'aime bien le python mais python comme beaucoup d'autre langages comme PHP sont codé en C (et un peu de fortran)

Sinon j'apprécie beaucoup le Go qui apporte pas mal de nouveauté par rapport au classique C/C++.
Avatar de Ebrigus Ebrigus - Nouveau membre du Club https://www.developpez.com
le 11/11/2017 à 19:09
Je pense que le C à encore beaucoup d'avenir.
Quand on parle de remplacer le C par du Python c'est vrai pour le haut niveau. Mais ce qui est drôle c'est que de plus en plus de brique Python sont en fait codées en C/C++ pour avoir les performances.
En fait, si on regarde de plus près, le Python sert de Glue à des bibliothèque C/C++
Avatar de Jamatronic Jamatronic - Membre du Club https://www.developpez.com
le 11/11/2017 à 19:17
Ca fait trente ans qu'on nous dit que le C est une merde qui va disparaître, et quinze ans qu'on nous explique que Python est une panacée universelle et que c'est l'avenir.

(L'avenir serait donc un langage entré dans les meurs depuis des lustres...)

Faut arrêter toutes ces discussions stupides.

Personnellement je sais dans quel cas j'utiliserais plutôt Python et dans quel cas un C++ (par exemple) fera davantage l'affaire, les deux pouvant travailler main dans la main en cas de besoin comme le rappelle pgoetz.

(Au passage, pgoetz, quand je lis :
Nous avons remplacé le C++ par du Python pour un résultat plus rapide!!! En fait C++ n'est pas plus rapide dès lors qu'il y des erreurs de conception (utilisation de listes au lieu de dictionnaires).
Je vous dis amicalement que vos collègues et vous devriez revoir un peu vos bases... ne pas connaître les différences entre des listes et des dictionnaires, c'est inquiétant, croire que cela a à voir avec le langage choisi l'est tout autant... ou sinon j'ai peut être mal lu ou mal interprété vos propos. Fin de la parenthèse : )

Est-ce que le but de ce topic ne serait-il pas de convaincre les programmeurs C ou C++ ainsi que les programmeurs Python de se convertir à Go ou à Rust ?
C'est peine perdue pour les Pythoneux qui ne veulent généralement pour rien au monde revenir à quelque chose de plus bas niveau...
Contacter le responsable de la rubrique Accueil