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

Bibliothèques C++ Discussion :

Peut-on écrire un kernel en C++ ?


Sujet :

Bibliothèques C++

  1. #41
    Membre averti Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Points : 412
    Points
    412
    Par défaut
    Tu devrais consulter la FAQ

    Tu as juste à taper RAII dans le moteur de recherche, et tu auras ta réponse...

  2. #42
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 860
    Points
    11 860
    Par défaut
    Citation Envoyé par spiner900 Voir le message
    hum.... comment peut-on écrire du C orienté objet ??? avec des structure et des pointeur de fonctions ??
    OuI.

    Citation Envoyé par spiner900 Voir le message
    Ques tu veux dire Loufoque par ''idiomes comme le RAII'' ??
    et quesce que vous voulez dire par pointeur intelligent ??
    +1, je te conseille de faire une recherche sur le forum et sur le site.
    http://loic-joly.developpez.com/tuto...mart-pointers/ pour les pointeurs intelligents

  3. #43
    Membre expérimenté Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Points : 1 544
    Points
    1 544
    Par défaut
    bonjour,

    il me semble que quand on ne sait pas utiliser les pointeurs (que ce soit du tout, ou intelligemment) on ne code pas de kernel, ni d appli professionnelle en C ou C++ d'ailleurs.
    "vaste programme"

  4. #44
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    comment peut-on écrire du C orienté objet ???
    http://www.gotw.ca/publications/mill02.htm :
    Citation Envoyé par Herb Sutter
    Class (definition)
    A class describes a set of data along with the functions that operate on that data.
    ...
    Consider a familiar example from another (in fact, a non-OO) language: C.

    /*** Example 2 (a) ***/

    struct _iobuf { /*...data goes here...*/ };
    typedef struct _iobuf FILE;

    FILE* fopen ( const char* filename,
    const char* mode );
    int fclose( FILE* stream );
    int fseek ( FILE* stream,
    long offset,
    int origin );
    long ftell ( FILE* stream );
    /* etc. */

    This is the standard "handle technique" for writing OO code in a language that doesn't have classes: You provide a structure that holds the object's data, and functions -- necessarily nonmembers -- that take or return pointers to that structure. These free functions construct (fopen), destroy (fclose), and manipulate (fseek, ftell, etc.) the data.

  5. #45
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Ça, c'est plus du basé objet que de l'orienté objet.
    Boost ftw

  6. #46
    Membre éprouvé
    Avatar de NiamorH
    Inscrit en
    Juin 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 1 309
    Points : 1 051
    Points
    1 051
    Par défaut
    Je comprends ta remarque, tu sais je ne faisais que citer. J'ai pas de définitions claires et vraiment arrêtées à apporter pour orienté objet et pour basé objet.

    Cependant, toujours Herb Sutter parle (dans Exceptional C++) de l'Interface Principle, qui dit qu'une fonction libre qui mentionne une classe A et qui est fournie avec la classe A doit être considérée comme faisant partie de A. Cela vise en particulier les surcharges d'opérateurs et cela explique notamment la nécessité du Koenig Lookup. L'exemple en C plus haut part du même principe mais fournit des fonctions libre autres que des opérateurs.

    Bien sur le C n'est pas un langage OO, pas d'encapsulation, ctors etc. mais (avec un peu de bonne volonté) on peut considérer l'approche ci-dessus comme OO. C'est peut-être subjectif, j'en sais rien..

  7. #47
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Pour de l'orienté objet en C, voir: http://ldeniau.web.cern.ch/ldeniau/html/oopc.html

    Pour ce qu'est la programmation orientée objet, j'aurais tendance à dire que la seule chose en commun entre toute les différents langages qui s'en réclament est l'utilisation du polymorphisme d'inclusion.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  8. #48
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    Tiens au fait :
    http://osdever.net/tutorials/pdf/cpp_kernel.pdf

    C'est assez intéressant et y'a du code clair et bien commenté. (même le code asm)
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  9. #49
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    Il manque un peu les exceptions et le RTTI...
    Boost ftw

  10. #50
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    C'est pas exhaustif loin de là comme t'a pu le remarquer... d'ailleurs ils précisent bien que les exceptions on ne peut pas les gérer .
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  11. #51
    Membre actif Avatar de amaury pouly
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    157
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 157
    Points : 224
    Points
    224
    Par défaut
    Un autre lien si ça peut servir:
    http://wiki.osdev.org/C_PlusPlus

  12. #52
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Points : 4 625
    Points
    4 625
    Par défaut
    d'ailleurs ils précisent bien que les exceptions on ne peut pas les gérer
    Ce qui est un mythe et est parfaitement faux.
    Encore une fois, il est parfaitement possible d'avoir tout le runtime C++ dans un noyau.
    Boost ftw

  13. #53
    Membre chevronné
    Avatar de Goten
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 580
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 580
    Points : 2 205
    Points
    2 205
    Par défaut
    ... qu'on ne peut pas les utiliser dans le cas du code asm fourni avec...

    (j'ai pas était jusqu'au bout de ma phrase).

    Ils expliquent que dans ce cas précis du noyau qu'ils fournissent les segments correspondant aux exceptions, aux new / delete et donc à toute la S(T)L ne sont pas géré.

    Seulement Amaury pouly à fourni un autre lien (que j'avais dans mes marques pages mais que j'avais pas donné avec ...) qui explique comment palié à ce défaut et avoir tout le runtime dans le noyau. (et aussi les inconvénients qui vont avec).

    Le lien que j'ai montré précise bien que ce n'est qu'un tout petit début afin d'avoir une idée d'un noyau en C++.
    "Hardcoded types are to generic code what magic constants are to regular code." --A. Alexandrescu

  14. #54
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Salut,

    Je viens après la bagarre, mais, selon moi, il doit être au minimum possible (bien que je ne me prononce pas sur le degré de difficulté) de créer un noyau en utilisant n'importe quel langage ne requiérant pas une quelconque machine virtuelle pour fonctionner capable de transformer le code en une succession d'instructions machine compréhensible par le processeur...

    Je m'explique:

    Ce qui a du présenter une réelle difficulté, ca a du être de créer le premier noyau et le premier assembleur, car tout était à faire et qu'il fallait travailler directement avec des instructions machine...

    Mais à partir de là, les choses sont réellement devenues "beaucoup plus simples"...

    Faut il rappeler que le premier compilateur C++ a été créé en utilisant le compilateur existant pour un langage plus ancien (j'hésite à dire que c'était un compilateur C)

    Faut il rappeler que, lorsque linus tovald a créé son noyeau, il utilisait... un système d'exploitation existant

    Et, si on relit ce qu'il disait à l'époque, s'il n'a pas choisi C++, c'est parce qu'il était, selon ses dires, "fondamentalement buggé", et non parce que le langage n'était pas adapté

    Finalement, quel que soit le langage, tout ce qu'on doit lui demander pour créer un noyau c'est:
    • de fournir la succession de 0 et 1 qui sera compréhensible par le processeur
    • de ne pas occasionner de dépendances (dll's ou VM) (ce qui semble disqualifer VC++ et java pour le travail )
    A partir de là, même un langage fonctionnel capable de respecter ces deux conditions (s'il y en a un) et tout à fait capable de fournir un noyau de départ
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  15. #55
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    Tu peux tout-à-fait faire un programme sans dépendances à la CRT sous Visual. Sauf si tu veux une gestion d'exceptions C++, mais même ça, ça doit pouvoir se recoder.
    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.

  16. #56
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 614
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 614
    Points : 30 626
    Points
    30 626
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Tu peux tout-à-fait faire un programme sans dépendances à la CRT sous Visual. Sauf si tu veux une gestion d'exceptions C++, mais même ça, ça doit pouvoir se recoder.
    C'est pour cela que j'ai écrit que ca *semble* disqualifier VC++

    Finalement, quand on y regarde de plus près, en "modifiant" "à peine" le JIT java pour qu'il un exécutable "stand alone", même java devrait pouvoir être utilisé
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  17. #57
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par koala01 Voir le message
    Finalement, quand on y regarde de plus près, en "modifiant" "à peine" le JIT java pour qu'il un exécutable "stand alone", même java devrait pouvoir être utilisé
    Rien n'empèche d'avoir un compilateur java vers code natif. D'ailleurs, il y en a.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. Peut-on écrire en arabe dans Latex ?!
    Par bnadem35 dans le forum Débuter
    Réponses: 5
    Dernier message: 16/07/2009, 10h43
  2. Peut-on écrire dans une map ?
    Par JackBeauregard dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 18/12/2006, 18h26
  3. [VBa-E] Peut-on écrire dans un fichier txt?
    Par gootsu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/07/2006, 12h34
  4. [HTML]Peut-on écrire un texte sur une image ?
    Par flogreg dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 28/02/2005, 17h24

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