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 :

Coder un compilateur est l'une des choses des plus complexes à faire ?


Sujet :

Langages de programmation

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2021
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Coder un compilateur est l'une des choses des plus complexes à faire ?
    Bonsoir,

    Je m'y connais pas trop et j'aimerais être éclairé.

    Le compilateur, c'est un peu la traducteur, non ? Il permet de traduire un "langage humain" en un "langage machine". Cela veut-il donc dire que le programmeur doit comprendre le langage machine et à la fois le langage C (par exemple) pour créer le compilateur ?

  2. #2
    Expert éminent sénior
    Avatar de Mat.M
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    8 352
    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 352
    Points : 20 359
    Points
    20 359
    Par défaut
    Citation Envoyé par WaterBottle Voir le message
    Le compilateur, c'est un peu la traducteur, non ? Il permet de traduire un "langage humain" en un "langage machine".
    une langue c'est je ne sais combien de mots donc il faut forcément être très réductible et synthétique donc utiliser un nombre limité de mots clés comme if then else.
    Sinon vous ne vous en sortirez pas.
    Citation Envoyé par WaterBottle Voir le message
    Cela veut-il donc dire que le programmeur doit comprendre le langage machine et à la fois le langage C (par exemple) pour créer le compilateur ?
    oui forcément ; le compilateur est là pour traduire les instructions du langage C, les procédures en code machine/assembleur.
    Après si vous voulez comprendre l'assembleur il faut suivre un tuto ou acheter un livre pour cela.
    Mais l'assembleur c'est pas si compliqué que ça.

  3. #3
    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 518
    Points
    41 518
    Par défaut
    De nos jours, beaucoup de compilateurs passent par un "langage intermédiaire" indépendant à la fois du langage "source" et de l'architecture matérielle; cela permet de mieux répartir les tâches: Le "front-end" s'occupe de traduire le langage "source" en langage intermédiaire, et le "back-end" traduit le langage intermédiaire en code machine adapté à la plate-forme.

    Après, si on veut supporter un langage existant pour une nouvelle plate-forme, il suffit de reprendre le front-end existant et de créer un nouveau back-end pour la nouvelle plate-forme.
    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.

  4. #4
    Responsable Qt & Livres


    Avatar de dourouc05
    Homme Profil pro
    Ingénieur de recherche
    Inscrit en
    Août 2008
    Messages
    26 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2008
    Messages : 26 609
    Points : 188 580
    Points
    188 580
    Par défaut


    Pour répondre plus directement au titre : historiquement, oui, ce n'était pas si simple à faire, vu que, pour compiler un compilateur... il faut un compilateur . Ce problème s'appelle bootstrapping (en supposant qu'il n'existe pas déjà de compilateur sur cette plateforme) et se résout avec une série de compilateurs, de plus en plus évolués : tu commences avec un compilateur pour un langage basique que tu écris en assembleur, puis tu complexifies en utilisant le compilateur précédent.
    Vous souhaitez participer aux rubriques Qt (tutoriels, FAQ, traductions) ou HPC ? Contactez-moi par MP.

    Créer des applications graphiques en Python avec PyQt5
    Créer des applications avec Qt 5.

    Pas de question d'ordre technique par MP !

  5. #5
    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 518
    Points
    41 518
    Par défaut
    Bien sûr, maintenant qu'on a des plate-formes populaires qui regorgent de compilateurs, le bootstrapping vers de nouvelles plate-formes est différent: Plutôt que d'écrire un assembleur en langage machine, puis un compilateur en assembleur, etc., il suffit désormais de créer un cross-compilateur (un compilateur qui tourne sur une plate-forme existante mais crée un exécutable pour la nouvelle plate-forme), et utiliser cela pour obtenir un compilateur natif à la nouvelle plate-forme.
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2020, 16h35
  2. Réponses: 43
    Dernier message: 02/03/2011, 11h20
  3. Réponses: 0
    Dernier message: 18/02/2010, 11h23
  4. Réponses: 24
    Dernier message: 06/01/2010, 16h36
  5. Réponses: 14
    Dernier message: 20/05/2009, 12h40

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