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

Langages de programmation Discussion :

Il n’y a rien de mieux que le langage de programmation C pour le développement de systèmes d’exploitation


Sujet :

Langages de programmation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Chroniqueur Actualités
    Avatar de Patrick Ruiz
    Homme Profil pro
    Redacteur web
    Inscrit en
    Février 2017
    Messages
    2 255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Redacteur web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2017
    Messages : 2 255
    Par défaut Il n’y a rien de mieux que le langage de programmation C pour le développement de systèmes d’exploitation
    Il n’y a rien de mieux que le langage de programmation C pour le développement de systèmes d’exploitation
    D’après Linus Torvalds

    La déclaration est de Linus Torvalds – le créateur du système d’exploitation open source Linux – lors d’une de ses interventions à l’Intel Open source Technology Center en 2012. Il répondait à la question de savoir s’il voit un autre langage de programmation à part le C qui soit taillé sur mesure pour le développement de systèmes d’exploitation. Quelques extraits de sa réponse …

    Citation Envoyé par Linus Torvalds
    Je dois dire que je suis assez vieux jeu sur des sujets comme celui-là. La raison pour laquelle je me suis lancé dans Linux et les systèmes d’exploitation en général est que j’aime vraiment le hardware ; j’aime explorer l’aspect matériel. Je ne le dis pas pour souligner que je suis un expert en hard parce que me tendre un fer à souder serait une mauvaise idée. Ce que je veux dire c’est que j’aime interagir avec le matériel à partir du logiciel. Vu sous cet angle, je n’ai pas encore vu un langage de programmation qui approche seulement le langage C. Cette affirmation ne tient pas uniquement à ce que le C soit utile pour générer du bon code pour piloter le matériel. Ce qu’il faut dire en plus c’est que l’usage du C fait sens pour des personnes qui pensent comme un ordinateur. Je crois que la raison pour laquelle il en est ainsi est que les personnes qui ont conçu le langage C l’ont fait à un moment où les compilateurs devaient être simples ; à un moment où le langage devait être adapté à la sortie ou au résultat attendu. Donc lorsque je lis du code en langage C, je sais à quoi va ressembler le code assembleur et c’est ce qui m’intéresse.
    Certes, la déclaration de Linus Torvalds date, mais 7 années plus tard, des avis récoltés sur la toile lui donnent un coup de neuf.

    Citation Envoyé par un internaute
    Le C est à bien des égards un langage ingénieux. C'est une très bonne abstraction du matériel sous-jacent. Assez transparent pour "voir" ce qui se passe à un niveau inférieur et juste assez haut niveau pour fournir quelques constructions utiles et éviter la peine de faire usage de l'assembleur.

    Bon nombre de ses "défauts" sont en fait la conséquence directe de cette conception. Si vous comprenez le processeur et la mémoire, vous trouverez le C naturel. D'autres langages qui sont vantés comme modernes, plus faciles et tout le reste, font tellement abstraction de l'aspect matériel qu'une grande partie du contrôle fin est perdue. C'est un compromis.

    C a certainement des défauts. Il porte en lui un héritage dont il est difficile de se débarrasser, mais la façon dont il garde le programmeur près du matériel n'est pas un défaut, c'est une caractéristique dont il faut dire qu'elle est de plus en plus difficile à trouver.

    La sortie de Linus Torvalds est antérieure à la publication de la première version stable de Rust – l’un des langages de programmation pressentis comme remplaçant du C sur le terrain du contrôle du hardware. En fait, au moment où Linus s’exprime, Rust n’en est qu’au stade de l’enfance.

    Citation Envoyé par un internaute
    De nos jours, Rust est une véritable alternative et offre des caractéristiques qui le rendent tout simplement plus polyvalent. Nous avons d'abord besoin d'un code sûr et donner des garanties de sécurité élevées est l'un des aspects les plus importants d'un système d'exploitation ou d'un programme. Je suis absolument sûr que quelque chose de similaire à Rust sera utilisé pour écrire le système d'exploitation qui remplacera Linux sur le long terme.
    Ce qu’il faut en effet souligner à propos de Rust est que le langage garde une vision proche de la machine. Il est clairement prévu pour être utilisable pour des applications de très bas niveau comme un noyau, des pilotes de périphériques ou de l'embarqué temps réel. Il permet aussi d'éviter certains points complexes du C++, mais n'est pas aussi radical. Il s’appuie pour cela sur des génériques et un système de macros plus propre que celui de C++. Il est par contre plus complexe sur un point particulier : il surveille à la compilation la durée de chaque variable ; il vient qu'une utilisation des pointeurs qu'il ne peut garantir sûre refusera de compiler. Pour éviter cela le développeur doit bien assimiler les notions de propriété et de durée de vie d'un pointeur qui permettent de garantir que le code est sûr. Cela permet d'avoir une garantie absolue qu'il n'y aura aucune erreur de sécurité mémoire.

    Dans la liste des systèmes d’exploitation créés à partir de Rust on compte Redox. L’équipe de développeurs derrière cet OS le présente comme un « système d’exploitation open source qui vise l’intégration des innovations au sein de Rust à un microkernel et un ensemble complet d’applications. » Le système d’exploitation est publié sous licence MIT.

    Nom : Redox.png
Affichages : 13492
Taille : 586,4 Ko
    Le GUI Orbital sous Redox


    De façon générale, l’intervention de Linus Torvalds relance le débat sur la question de savoir quel langage pourrait remplacer le C. Il y a 4 ans, l’architecte logiciel Andrei Alexandrescu a dressé un comparatif de Go, Rust et D. De façon brossée, il en resssortait que pour ses caractéristiques d’introspection statique, son temps de compilation rapide ajouté à d’autres atouts uniques, le langage D est le remplaçant idéal du C.

    Sources : YouTube, Redox

    Et vous ?

    Que pensez-vous de la déclaration de Linus Torvalds ?

    Depuis 2012, quel langage de programmation s’est d’après vous positionné en véritable remplaçant du C ?

    Pourquoi le langage C pourrait encore avoir de longues années devant lui ?

    Voir aussi :

    Programmation : un « Pony » peut cacher un langage, l'outil adéquat, d'avis d'utilisateurs, pour le développement d'applications concurrentes

    C2 : un langage qui se présente comme une évolution de C, plus rapide, sans fichiers d'en-tête, avec système de build intégré et d'autres changements

    Quel avenir pour le langage C ? Un développeur expérimenté fait ses adieux au langage et livre ses inquiétudes quant à son avenir
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Membre éprouvé Avatar de KsassPeuk
    Homme Profil pro
    Ingénieur Chercheur
    Inscrit en
    Juillet 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 138
    Par défaut
    Le gros soucis ça reste qu'atteindre un haut niveau de fiabilité dans un composant aussi critique d'un OS nécessite un boulot de dingue. Et à l'échelle d'un truc qui fait plusieurs millions de lignes de code, c'est juste infaisable d'obtenir des vraies garanties de fiabilité avec un effort raisonnable. Et C est définitivement l'un des langages où c'est le plus difficile. Ce n'est pas parce qu'un langage est de plus haut niveau que nécessairement il occulte tous les détails de bas niveau (et on pourrait aussi arguer que C occulte lui aussi énormément de détails selon comment on l'utilise). Mais si on prend des retours d'expérience comme HACL* (F-Star) ou Pip protokernel (Coq), on peut voir que l'utilisation d'un langage de haut niveau n'implique pas de cacher les détails nécessaires au bas niveau, simplement de devoir effectivement les prendre complètement en compte et pas juste de tester un ensemble restreint de scénarios.

  3. #3
    Inactif  
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    794
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 794
    Par défaut
    Le top reste le combo C/C++/C#, j'arrive la lire de l'object-c sans problème mais je n'aime pas trop la syntaxe quoique le délire de considérer que tout est un dictionnaire est assez funky

  4. #4
    Membre éprouvé Avatar de KsassPeuk
    Homme Profil pro
    Ingénieur Chercheur
    Inscrit en
    Juillet 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Juillet 2013
    Messages : 138
    Par défaut
    Citation Envoyé par redcurve Voir le message
    Le top reste le combo C/C++/C#
    Ça dépend des objectifs, encore une fois. Faire du code sûr en C, c'est pas simple. Il y a qu'à voir comment des projets comme seL4 en ont chié pour arrivé à un niveau EAL7 de sûreté (25 personnes-année pour 10K lignes de C - sachant que c'est la preuve qui a été hardcore, pas le process de certif en lui même). Et honnêtement, pour des composants aussi critiques qu'un OS, avoir des vraies garanties de sécurité et sûreté, ça serait pas un mal.

  5. #5
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    Mars 2012
    Messages
    1 970
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 970
    Par défaut
    Je me demande si à l'époque de Torvalds, il y avait des pattern de programmation comme actuellement.

    Bien découper le code ça aide

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par hotcryx Voir le message
    Je me demande si à l'époque de Torvalds, il y avait des pattern de programmation comme actuellement.

    Bien découper le code ça aide
    Non non. A l'époque de Torvalds (paix à son âme), on faisait marcher un chaton sur le clavier et quand ça compilait on sortait une nouvelle release. https://en.wikipedia.org/wiki/Design_Patterns

  7. #7
    Membre très actif
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Août 2014
    Messages
    476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Août 2014
    Messages : 476
    Par défaut
    Personnellement en 30 ans de dev, j'ai toujours decoupé mes softs en couches (regle d'or) et jamais eu aucun probleme de conception, quel que soit le langage.
    Le principe des micros services on en faisait deja a l'epoque sous Linux - c'etait meme un principe elementaire, combiner des applications/utiltaires faisant individuellement des choses tres simples. Tu peux batir un OS avec ce simple principe.
    Alors oui on a inventé C# parce que C/C++ etait considéré comme trop compliqué (oui avoir de la rigueur c'est pas donné a tout le monde). Du coup maintenant on code en C# sans se poser des questions (sauf que nombre de devs ne comprennent meme plus pourquoi des fois y a des problemes de GC et autres). C# a permis de democratiser la programmation et mettre le C au niveau du visual basic - n'importe qui peut faire du C#, c'est sa force.
    C'est la base de tout. Les patterns on les suivait sans le savoir; tout comme je me rends compte qu'on a toujours ete agile dans les devs. Cycle en vie etant plus theorique car dans la pratique c'etait une forme d'agilité qui prevalait.

  8. #8
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Pour un truc bas niveau comme ça, je tendrais à privilégier le C++, qui permet de descendre exactement à aussi bas niveau que le C quand on en a besoin, avec l'ajout de la sécurité sur la manipulation des ressources.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  9. #9
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 281
    Par défaut
    Je reste septique sur l'utilisation d'autre chose que le C pour un OS, (du moins pour le noyau et les pilotes). L'intérêt qu'autre chose que le C reste à prouver.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Je reste septique sur l'utilisation d'autre chose que le C pour un OS, (du moins pour le noyau et les pilotes). L'intérêt qu'autre chose que le C reste à prouver.
    Entre les bugs de gestion mémoire ou de concurrence, les failles de sécurité à la buffer overflow et autres, les codes inmaintenables, etc, l'intérêt du C reste également à prouver.

    Concernant les alternatives au C, Rust semble quand même avoir des vrais intérêts.
    https://www.rust-lang.org/what/embedded
    https://www.redox-os.org/

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 281
    Par défaut
    Entre les bugs de gestion mémoire ou de concurrence, les failles de sécurité à la buffer overflow et autres, les codes inmaintenables, etc,
    Il s'agit souvent d'un problème d'interface chaise clavier, de mauvaise programmation. C'est sûr que ce type de problèmes est masqué par le langage quand tu utilises du C++ ou autre.

    l'intérêt du C reste également à prouver.
    Tous les OS du marché sont à ma connaissance basé sur le C.

    Je vais jeter un œil sur Redux, Même si ça perce pas, l'alternative reste intéressante à étudier.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Pour moi ça reste vrai en partie.

    Un système d'exploitation a pleins de choses de haut niveau à gérer qui ont sans aucun doute intéret à exploiter la puissance d'autres langages aujourd'hui.
    Mais l'interface avec le matériel a besoin d'être au plus prés du matériel pour être optimisée, sans gérer des ramasses miettes (exemple au pif pas du tout exhaustif) et tout un tas de mécanismes inutiles pour les taches de bases qui aspirent à être hautement spécialisées en fonction des contraintes du hardware.

Discussions similaires

  1. [Graphiques] Quoi de mieux que JFreeChart ?
    Par elitost dans le forum Graphisme
    Réponses: 4
    Dernier message: 21/04/2006, 16h20
  2. D7P mieux que D6P ?
    Par David dans le forum EDI
    Réponses: 5
    Dernier message: 16/06/2004, 21h15
  3. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 11h59

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