IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

Pourquoi les programmeurs systèmes sont-ils trop attachés au C ?


Sujet :

Débats sur le développement - Le Best Of

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Billets dans le blog
    121
    Par défaut Pourquoi les programmeurs systèmes sont-ils trop attachés au C ?
    Pourquoi les programmeurs systèmes sont-ils trop attachés au C ?
    Que doit proposer un langage moderne pour les attirer ?


    « 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
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  2. #2
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    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...

  3. #3
    Invité de passage

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 995
    Par défaut
    Citation Envoyé par psychadelic Voir le message
    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...
    Personne n'a parlé de réécrire quoi que ce soit.

    Et tes doutes concernant la performance de ce nouveau langage se basent sur quoi, exactement ?

    Un nouveau langage de programmation, ce sont des nouvelles idées, un nouveau point de vue. Donc une opportunité d'amélioration. A moins d'imaginer que tout a déjà été inventé, mais si je le pensais, je ne ferais plus de programmation, personnellement.

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2008
    Messages
    1 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 190
    Par défaut
    Citation Envoyé par Traroth2 Voir le message
    Personne n'a parlé de réécrire quoi que ce soit.

    Et tes doutes concernant la performance de ce nouveau langage se basent sur quoi, exactement ?

    Un nouveau langage de programmation, ce sont des nouvelles idées, un nouveau point de vue. Donc une opportunité d'amélioration. A moins d'imaginer que tout a déjà été inventé, mais si je le pensais, je ne ferais plus de programmation, personnellement.
    Tout à fait, un langage n'est qu'une modélisation de la réalité et de ses comportements. De nouveaux langage voyent le jour lorsque l'on trouve de nouvelle manière d'aborder cette réalité et ces comportements.
    Cela a été typiquement le cas pour les langages basés sur le paradigme objet.
    Plus récemment on peut citer le paradigme de la programmation par contrat.

  5. #5
    Expert confirmé
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 532
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 8 532
    Par défaut
    Citation Envoyé par Traroth2 Voir le message

    Un nouveau langage de programmation, ce sont des nouvelles idées, un nouveau point de vue. Donc une opportunité d'amélioration. A moins d'imaginer que tout a déjà été inventé, mais si je le pensais, je ne ferais plus de programmation, personnellement.
    mais à quoi ça sert d'avoir de nouvelles idées ? Moi je veux bien mais je ne suis pas convaincu.
    Je le réécris l'ordinateur PC c'est toujours une souris, un clavier et un écran.
    Et pour internet le transport des données c'est toujours TCP/IP un protocole et une technologie initié par la Défense américaine dans les années..60
    Donc à part l'emballage le cadeau reste toujours le même,pas d'accord ?

  6. #6
    Membre actif
    Homme Profil pro
    Editeur de logiciels retraité.
    Inscrit en
    Mai 2012
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Editeur de logiciels retraité.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 13
    Par défaut Pourquoi ?
    Bonjour,

    Ne faut-il pas plutôt se poser la question de pourquoi certains pseudos génies s'investissent coprs et âmes à essayer de créer de nouveaux langages qui apportent soit disant de nouvelles fonctionnalités qu'en fait le C ANSI propose depuis plus de 40 ans avec des libraries open source ou non utilisées à des centaines de milliers d'exemplaires ?

    Pour moi, l'un des plus beau exemple est PHP, avec plus de 6.000 fonctions (bonjour l'aide "on line" pour savoir quelle est la bonne à utiliser), et le pire d'entre tous étant sans aucun doute Java, fausse presque syntaxe C, mais en plus avec une VM ultra merdique, pleine de bugs et surtout de failles de sécurité jamais corrigées et dont les performances sont, le moins que l'on puisse dire, LAMENTABLES!

    Alors, la vrai question à se poser n'est-elle pas réellement : pourquoi le C n'est PLUS enseigné comme il l'était il y a encore à peine 10 ans (AFPA, Univercités, IUT, etc.) et à qui profite le crime (en l'occurence l'intérêt financier) de l'abandon de ce langae ultra simple au profit de système de scripting incongrus tel .NET et C# ?

    Merci d'y réfléchir.

    Been there, done that!

  7. #7
    Membre Expert

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Par défaut
    @Null4Ever
    Je suis d'accord sur le constat, je pense aussi qu'il y a beaucoup de nouveaux langages qui n'apportent pas grand chose par rapport à ce qui existe déjà.
    Mais faire ce constat en prenant comme exemple des langages aussi différents que le C et les langages orientés objet, c'est limite trollesque.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par Null4Ever Voir le message
    l'abandon de ce langae ultra simple
    Faut pas pousser... Le C est simple du point de vue de la machine, pas du point de vue du développeur. Ça oblige à raisonner à très bas niveau, ce qui a son utilité pour de nombreux cas d'utilisation, mais est très improductif pour le développement applicatif.

    Et puis faut pas dire n'importe quoi non plus, le C est loin d'être abandonné...

    Citation Envoyé par Null4Ever Voir le message
    au profit de système de scripting incongrus tel .NET et C# ?
    .NET et C#, un "système de scripting" ? Tu as l'air de vachement bien savoir de quoi tu parles

  9. #9
    Membre habitué
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 11
    Par défaut
    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 ?

  10. #10
    Membre éprouvé
    Profil pro
    Directeur technique
    Inscrit en
    Juillet 2007
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 107
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ..

  11. #11
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 3
    Par défaut
    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)…

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    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é.

  13. #13
    Membre extrêmement actif

    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 408
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 408
    Par défaut
    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.

  14. #14
    Membre éclairé
    Homme Profil pro
    -
    Inscrit en
    Octobre 2011
    Messages
    344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Octobre 2011
    Messages : 344
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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).
    )))

  15. #15
    Membre Expert
    Avatar de shenron666
    Homme Profil pro
    avancé
    Inscrit en
    Avril 2005
    Messages
    2 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : avancé

    Informations forums :
    Inscription : Avril 2005
    Messages : 2 577
    Par défaut
    Citation Envoyé par Christuff Voir le message
    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é
    j'ajouterai la maturité du langage
    et la lisibilité du code, comme l'a souligné Christuff
    Tutoriels OpenGL
    Je ne répondrai à aucune question en MP
    - Si c'est simple tu dis que c'est compliqué et tu le fait
    - Si c'est compliqué tu dis que c'est simple et tu le sous-traite ou le fait faire par un stagiaire.

  16. #16
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    D'après wikipedia, le langage est mort ....
    http://en.wikipedia.org/wiki/BitC
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  17. #17
    Membre extrêmement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    D'après wikipedia, le langage est mort ....
    http://en.wikipedia.org/wiki/BitC
    Il n'est même pas dans http://99-bottles-of-beer.net/

    "99 bottles of beer" référence " 1442 different programming languages and variations" ; je me demande bien si l'on peut trouver un vrai décompte quelque part sur la toile, 2000, 3000, 1 million ??

    Avec ce débat sur BitC j'ai l'impression de réentendre le même type de débat qui existait à propos d'APL...

  18. #18
    Invité
    Invité(e)
    Par défaut
    Il suffit de demander à au moins 10 programmeurs s'ils ont déjà entendu parler de tel langage pour se rendre compte s'il est connu ou pas. Si aucun ne répond, ça veut dire tout simplement que le langage ne décollera jamais ou qu'il est déjà mort.

    Personnellement je ne vois pas d'intérêt à sortir un nouveau langage chaque jour juste pour le plaisir de le faire s'il n'apporte rien de plus que les autres.

  19. #19
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2008
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2008
    Messages : 836
    Par défaut
    Citation Envoyé par patate_violente Voir le message
    J'attendrais qu'on change les opérations fondamentales de mon processeur pour développer autrement qu'en C
    Je ne vois pas le rapport... Le langage C est utilisé sur une multitude de processeurs et de PIC, et ça marche très bien.
    C'est d'ailleurs l'intérêt numéro 1 du C: sa très grande portabilité (qui ne sacrifie pas la performance "accessoirement").

  20. #20
    Modérateur

    Avatar de Bktero
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2009
    Messages
    4 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2009
    Messages : 4 493
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par patate_violente Voir le message
    J'attendrais qu'on change les opérations fondamentales de mon processeur pour développer autrement qu'en C
    Je suis d'accord avec Freem, il y a une erreur dans cette phrase : patate_violente a écrit C au lieu d'ASM

Discussions similaires

  1. Réponses: 48
    Dernier message: 15/01/2016, 03h06
  2. Pourquoi les programmeurs sont-ils moins payés que les gestionnaires de programmes et les analystes métiers ?
    Par Hinault Romaric dans le forum Débats sur le développement - Le Best Of
    Réponses: 107
    Dernier message: 26/11/2014, 22h40
  3. Réponses: 1
    Dernier message: 28/03/2013, 04h50
  4. Les langages statiques sont-ils trop sophistiqués et complexes ?
    Par Katleen Erna dans le forum Actualités
    Réponses: 53
    Dernier message: 20/01/2013, 10h06
  5. Pourquoi les mails ne sont ils pas envoyés?
    Par Sunsawe dans le forum Développement
    Réponses: 3
    Dernier message: 12/04/2007, 23h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo