Soutenez-nous

Pourquoi les programmeurs systèmes sont-ils trop attachés au C ?
Que doit proposer un langage moderne pour les attirer ?

Les rubriques (actu, forums, tutos) de Développez
Réseaux sociaux


 Discussion forum

Sur le même sujet
Le , par Hinault Romaric, Responsable Actualités
« Le bon vieux langage C », un terme souvent utilisé par l’un de mes amis pour qualifier ce langage système créé en 1970, qui malgré le rythme d’évolution de l’informatique et la sortie des langages modernes demeure le favori des programmeurs systèmes.

Pourquoi ceux-ci restent-ils autant attachés au C en dépit des avancées majeures qui ont permis la création de nouveaux langages riches et flexibles ces dernières décennies ?

Jonathan Shapiro, un chercheur du département des sciences informatiques de l’université Johns Hopkins, dans un article essaye de répondre à cette question en proposant des solutions pour un remplaçant du C.

Les langages de programmation récents comme ML ou Haskell fournissent des types nouveaux, plus forts et expressifs que ceux des langages systèmes comme C ou Ada. Constate Shapiro. Mais, ces langages sont ignorés par les développeurs systèmes.

Pour Shapiro, ce manque d’intérêt serait en quelque sorte dû au fait que les langages de programmation modernes ont été développés au prix d’un niveau prohibitif de l’abstraction.

Les programmeurs systèmes adopteront un nouveau langage si celui-ci leur offre une plus grande facilité dans la compréhension et la maintenance des programmes assez complexes qu’ils écrivent. Ce qu’ils attendent, c’est un langage qui préserve l’état, la gestion du stockage, la représentation et le contrôle de bas niveau. Explique Shapiro.

La solution que propose celui-ci est BitC. BitC n’est pas l’implémentation d’un nouveau langage de programmation. Il a pour objectif de fusionner les progrès de langages de programmation modernes en laissant de coté le polymorphisme et autres sémantiques mathématiques, avec les exigences de la programmation système, tout en fournissant des performances comparables à C.

BitC combine donc les concepts de programmation fonctionnelle de ML et Haskell avec la proximité de l’interaction matérielle des langages de bas niveau comme C.

Les concepts qui ont donné naissance à BitC sont-ils suffisants pour attirer le programmeur système ? Que doit fournir un langage moderne pour se positionner comme une véritable alternative à C ?

le site de BitC

Source : Article de Jonathan Shapiro


 Poster une réponse

Avatar de psychadelic psychadelic
Membre émérite
le 25/05/2012 19:22
Pourquoi faudrait-il encore un N-ieme Langage ??

Qui voudrait réécrire Apache, Linux... en BitC ?
et perdre toutes les années à fiabiliser toutes les lignes de codes ??

Et BitC est t'il suffisament bas niveau pour garantir la performance atteinte par le C ???

Sincèrement, j'ai un gros doute...
Avatar de ProgrammeurDotNet ProgrammeurDotNet
Membre du Club
le 25/05/2012 19:36
Je ne pense pas du tout que BitC deviendra plus populaire.
En effet un langage fonctionnel demande un autre esprit de programmation qu'un langage impératif comme le C, or une structure impérative est celle de l'ordinateur en lui-même et est plus simple à comprendre (personnellement quand je vois un code qui se lit de haut en bas et qui a une signification claire comme en C j'ai pas envie d'aller voir du côté d'autres langages fonctionnels).

Déjà pour ça, d'autant plus que comme déjà dit pourquoi vouloir migrer vers un nouveau produit qui n'a aucune preuve à montrer alors que le C est à la base des plus grands logiciels en informatique ?
Avatar de Davidbrcz Davidbrcz
Rédacteur
le 25/05/2012 19:41
D'après wikipedia, le langage est mort ....
http://en.wikipedia.org/wiki/BitC
Avatar de Christuff Christuff
Membre actif
le 25/05/2012 19:44
De ce que j'ai vu sur le site, toute les derniers news remontent a 2010, ce qui me laisse croire que le projet est mort, et donc que ca n'as pas eu le succes escomptes.

Apres un petit tour ( vite fait ) je dois avouer que je prefere de loin le C.

Une des features essentielles est que le code soit lisible ( les ; et autres { } ( ) etc ... aident a avoir des reperes )

J'ai personellement beaucoup de mal avec ce genre de syntaxe :

Code :
1
2
3
 
def add-one(x) = 1 + x 
add-one: fn 'a -> 'a where Arith('a)
Que doit fournir un langage moderne pour se positionner comme une véritable alternative à C ?

Une bibliothèque aussi large ( en comprenant la liste de code source non incluse dans la bibliothèque mais qu'on peux reprendre facilement )
Une communauté aussi large.
Un contrôle bas niveau, avec la possibilité d’écrire en ASM si besoin.
Pas de "mécanismes caches"
Des compilateurs au moins aussi bon que ceux de C
Une aussi grande portabilité

Ensuite on pourrai imaginer un language qui permettrait de ne pas avoir a s’embêter avec des include & autre et ou le temps de compilation serai beaucoup plus court, mais contrairement aux langages actuels qui le permettent, sans "trade-off".

Bref je pense pas que le C soit encore préféré sans raisons ..
Avatar de xarch xarch
Invité de passage
le 25/05/2012 21:41
Super comme critique : « c'est pas lisible ». Sérieusement, c'est assez lamentable et ça montre que vous n'avez pas du tout regardé le langage là où il est intéressant, c'est-à-dire la sémantique, l'expressivité, la sûreté (sans doute liée au typage)…
Avatar de tomlev tomlev
Rédacteur/Modérateur
le 25/05/2012 21:59
Pourquoi ceux-ci restent-ils autant attachés au C en dépit des avancées majeures qui ont permis la création de nouveaux langages riches et flexibles ces dernières décennies ?

Parce que les OS sur lesquels ils bossent sont tous écrits en C, et C reste donc le moyen le plus pratique pour interagir avec les API système. Il est évidemment possible de le faire avec d'autres langages, mais presque toujours via des abstractions qui ne sont pas forcément assez fines pour les besoins de la programmation système.

Les langages de programmation récents comme ML ou Haskell fournissent des types nouveaux, plus forts et expressifs que ceux des langages systèmes comme C ou Ada. Constate Shapiro. Mais, ces langages sont ignorés par les développeurs systèmes.

Euh, il a fumé quoi ?
Déjà que le code bas niveau est généralement assez dur à comprendre, j'ose même pas imaginer ce que ça donnerait en Haskell
Les langages fonctionnels ne sont pas du tout adaptés à la programmation système, vu qu'un de leurs principes est d'éviter les effets de bord. Il est possible de causer des effets de bord, via des monades, mais rien que pour comprendre le concept de monade il faut bien se retourner la cervelle.
En programmation système, les effets de bord sont justement le but recherché (interactions avec le matériel, les applis...) ! Un langage impératif est donc beaucoup plus adapté.
Avatar de stardeath stardeath
Expert Confirmé
le 25/05/2012 22:56
ce que je remarque surtout c'est que même le c++ est fuit des programmeurs systèmes (ceux que je connais c'est le cas).

et souvent les arguments en faveurs du c plutôt que du c++ sont ... hum ... bancals amha.
Avatar de laerne laerne
Membre éclairé
le 25/05/2012 22:59
Citation Envoyé par Christuff  Voir le message
Une des features essentielles est que le code soit lisible ( les ; et autres { } ( ) etc ... aident a avoir des reperes )

J'ai personellement beaucoup de mal avec ce genre de syntaxe :

Code :
1
2
3
 
def add-one(x) = 1 + x 
add-one: fn 'a -> 'a where Arith('a)

Les français trouvent la prononciation chinoise difficile, les chinois ont du mal avec toutes ces règles d'accord et de conjugaison en français…

Apprendre un nouveau language, c'est similaire en informatique et en linguistique. Il y a une grammaire et une syntaxe à apprendre. Je crois que c'est une raison non négligeable que le C reste au pouvoir, ce dont le commentaire de Christuff tant à faire confirmer.

((( Et puis christuff, t'as jamais fait de math pour oser dire que c'est illisible.
Traduction :
Code :
1
2
Soit f(x) = 1+x 
f est une fonction qui part de l'espace A vers ce même espace A où A est un ensemble arithmétique (vérifie la propriété Arith).
)))
Avatar de remi_inconnu remi_inconnu
Membre à l'essai
le 25/05/2012 23:48
Citation Envoyé par stardeath  Voir le message
ce que je remarque surtout c'est que même le c++ est fuit des programmeurs systèmes (ceux que je connais c'est le cas).

et souvent les arguments en faveurs du c plutôt que du c++ sont ... hum ... bancals amha.

Le c++ est un langage complexe truffé de peau de banane pas toujours évidente à trouver pour les novices. C'est avec ce langage que j'ai vu les pires horreurs en terme de programmation, et pourtant je suis intimement convaincu des bénéfices des concepts objets que j'utilise quotidiennement. L'un des soucis majeurs que je constate c'est que la plupart des ingés que je cotois n'ont qu'une connaissance légère de la programmation objets et le pire c'est de voir aussi des jeunes censés être plus à jour n'avoir suivi que quelque heures sur ces concepts dans leur cursus d'ingé. Au passage on peut faire de la programmation objet en c, c'est plus compliqué certe, mais on peut maitriser plus finement ce que l'on souhaite faire, bien plus qu'en c++, et quand on a des gros besoins de performance cela n'a pas de prix...
Avatar de stardeath stardeath
Expert Confirmé
le 26/05/2012 11:38
si on parle de débutants, effectivement, je dirai même que TOUS les langages peuvent mener à du code qui tombe en marche.

mais si on ne considère que les débutants, dans ce cas, autant ne plus faire de programmation ; et on tombe dans le cas ou les ingés, dès que tu leur demande de diminuer la conso mémoire d'une appli par 2, ou, ne serait ce que d'éviter un malloc dans une boucle de rendu, te répondent qu'ils ne savent pas faire.

là je pense qu'il faut regarder plus vers les programmeurs qui ont de la bouteille, et là c'est bête mais quand j'entends "le c c'est plus rapide", "quoi tu utilises des std::string, looser, char* ftw" j'ai envie de dire flute, zut ...
la prog objet à elle seule ne fait par perdre de performance contrairement à ce que j'entends partout.

de plus le c++ offre plus de sécurité sur le typage, et quand en portant une appli x86 vers x64 ton compilateur t'insulte que tous les pointeurs ont été stockés dans des int, ça fait quand même plaisir d'avoir changer de langage.
Offres d'emploi IT
DBA ADMINISTRATEUR DE PRODUCTION TERADATA
CDD Freelance Intérim Mission
ONE CUBE - Languedoc Roussillon - Montpellier (34000)
Parue le 28/03/2014
Concepteur Développeur .NET H/F
CDI
Sogeti - Régions - Aquitaine - Aquitaine - Bordeaux (33000)
Parue le 22/04/2014
software engineer net
CDI
FINAXIM - Suisse - geneve
Parue le 06/04/2014

Voir plus d'offres Voir la carte des offres IT
 
 
 
 
Partenaires

PlanetHoster
Ikoula