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 !

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

222PARTAGES

16  2 
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 ?

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

Avatar de stef-13013
Membre actif 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.
17  0 
Avatar de Kannagi
Expert éminent 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 ).
15  1 
Avatar de 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++
12  0 
Avatar de SimonDecoline
Membre expert 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.
11  0 
Avatar de mister3957
Membre expérimenté https://www.developpez.com
Le 12/11/2017 à 10:28
Décidément je ne comprendrai jamais ces guéguerres entre langages..

Pour un projet de A à Z, j'ai fait les choix :
- HTML5 / CSS3 / JS pour la partie front
- NodeJS pour la partie back / services
- C++ en méta prog pour la structure du moteur de calculs (embarquée dans un module NodeJS)
- C pour les opérations de calculs
- Python pour différents traitements annexes
- Java pour l'appli Android

Pourquoi sans cesse vouloir distinguer un langage d'un autre ? Ils ont chacun leurs avantages et chacun leurs inconvénients, il faut juste les utiliser au bon endroit au bon moment selon le besoin c'est tout.

Ça m'a fait rire ma dernière expérience "on veut une full stack JS comme ça tout le monde connait, ça fera du temps de formation en moins et chacun est interchangeable".. Résultats mitigés
11  0 
Avatar de Jamatronic
Membre éclairé 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...
9  0 
Avatar de LordMacharius
Membre actif https://www.developpez.com
Le 14/11/2017 à 13:47
Pour ma part, je pense bien que le C a encore de beaux jours devant lui.
Il sera terriblement difficile à remplacer tant son équilibre entre performance/stabilité/lisibilité du code reste ce qu'il est. Je vois mal un langage moderne venir trouver le même équilibre avant un moment.

Le C n'est pas la réponse à tout mais à pas mal de chose mine de rien. Pour ceux qui râle de la complexité du C et de sa gestion mémoire, je pense surtout que cela vient d'un manque de formation mais surtout de rigueur. C'est bien de cela dont on parle lorsque l'on compare le C à des nouveaux langages. Il demande une telle rigueur de travail que peu de personnes sont capables d'obtenir des résultats satisfaisant dans leur projet.
Je l'ai encore entendu ces derniers jours… ils voulaient faire du python pour du transfert de gros volumes de fichiers (genre 80/100To avec une charge serveur proche de 100%) au titre que le C est trop « relou ».

Au final, la bonne réponse est un peu le mélange de ce qui a été dit. Les décideurs choisissent autre chose que le C lorsque c'est possible. Cela permet de fermer les yeux sur la qualité de ce qui est produit et des compétences des personnes qui travaillent sur le projet (8 ans que je le vois au quotidien )
J'aime le C pour cette rigueur qui devrait être celle de tous les développeurs, commencer par le C m'a permis de produire du code de qualité supérieure à ce que font mes collègues dans un temps similaire.
9  0 
Avatar de marsupial
Membre expert 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.

8  0 
Avatar de chrtophe
Responsable Systèmes https://www.developpez.com
Le 12/11/2017 à 9:03
On peut écrire des pilotes en python
Les exemples fournis ne sont pas des pilotes.

Le premier créé un pipe, utilise les fonctions systèmes open, write, flush de la libc.

Le second lien est un wrapper vers une bibliothèque ... écrite en C.

Un code écrit en C++ sera plus rapide qu'un code python, Python étant interprété :
http://ceg.developpez.com/tutoriels/...cution-script/
Mais avec la puissance actuelle des CPU, ce n'est plus forcément le critère le plus important.

Python a l’avantage d'être facile d'accès, bien documenté, comprenant pléthore de modules, modifiable sans devoir recompiler.

Il ne remplace pas C/C++ mais est complémentaire. Selon le projet, C++ sera plus pertinent que Python et vice-versa.
8  0 
Avatar de e101mk2
Membre confirmé https://www.developpez.com
Le 11/11/2017 à 19:43
Le C disparaîtra le jour ou nos ordinateurs fonctionneront sans CPU, GPU et autres contrôleurs .

Je me voit mal écrire un driver sans C. Mais je l'ais abandonné pour mes projets Desktop avec le C++, qui me permet d'écrire mes codes avec plus d'aisance.

Pour le Python, je continue à le relégué comme une vulgaire librairie, qui me permet de "modder" mes programmes sans avoir à modifier mes codes C/C++.

Qu'elle langage de programmation (haut niveau) n'as pas des modules interne écrit en C ?
Voir carrément tout l’interpréteur...
7  0