Discussion:Compilateur

message: Je ne comprends pas la partie sur le bootstrap. La partie sur cette notion ne décrit pas ce qu'est le bootstrap. De plus, la phrase suivante est incomplète : « Le bootstrap oblige donc les programmeurs de compilateurs à contourner leurs propres bugs qui peuvent donc être extrêment durs à trouver, car remonter plusieurs niveaux de compilation auparavant. »
Vincent ✐ 9 mai 2004 à 12:24 (CEST)
thread_title: Manque de clarté

message: J'ai ajouté compilateur de compilateur dans la section Compilateurs particuliers mais je pense qu'il sera nécessaire de faire un article dédié au compilateur de compilateur. Y-a-til des personnes interessées ? Boly 5 jan 2005 à 23:27 (CET)
thread_title: Compilateur de compilateur

message: L'article est incompréhensible. c'est parce que je sais ce que c'est que j'arrive à le déchiffrer, mais quand on dit par exemple qu'un language a un niveau d'abstraction plus élevé, excusez moi, mais le novice n'y comprend rien. Il faudrait également préciser dans l'introductiob l'utilité d'un compilateur... Eh oui, le novice se demande bien à quoi ça peut servir de transmettre d'un programme à un autre... Il faut expliquer tout ça, on oublie trop souvent que l'article est destiné à celui qui cherche la connaissance, pas à celui qui la possède...
Saccagator
This figure at commons (in spanish) based in the english article one is available for translations through the source openoffice.org file linked at its Common "Image:CompilationScheme-Spanish.png". You can easily translate it to your language. gengiskanhg from Spanish and english wikipedias. --132.248.36.43 27 septembre 2005 à 16:32 (CEST)
thread_title:  L'article est incompréhensible 

message: Désolé, mais je trouve tout cela peu clair.
Par exemple il est dit en introduction :
- "En pratique, un compilateur sert le plus souvent à traduire un code source écrit dans un langage de programmation en un autre langage, habituellement un langage d'assemblage ou ...."
Puis dans "Structure d'un compilateur" :
- "la transformation du code source en code intermédiaire"
Le code intermédiaire peut être du langage d'assemblage ?
Puis :
- "l'allocation de registres et la traduction du code intermédiaire en code objet"
Donc l'objectif est de faire du langage objet et non du langage d'assemblage ?
Puis :
- "et enfin l'édition des liens"
Pour moi, ça ne fait pas parti du compilateur. Si le but d'un compilateur est de traduire en langage d'assemblage comme le dit l'introduction, alors on ne peut pas faire l'édition des liens. L'édition des liens n'est possible que depuis le code objet et non depuis le langage assembleur.
* Dans "Compilateur croisé".
- "Un compilateur croisé (en anglais cross compiler) est un programme capable de traduire un code source en code objet"
Un compilateur croisé ne fait pas de langage assembleur mais il est dit dans l'introduction d'un compilateur peut faire du langage assembleur.
* Dans "Autres compilateurs"
- "Si la plupart des compilateurs traduisent un code d'un langage de programmation vers un autre, ce n'est pas le cas de tous les compilateurs. Par exemple, le logiciel LaTeX compile un code écrit dans le langage de formatage de texte LaTeX, pour le convertir en un autre langage, par exemple DVI, HTML, PostScript..."
Alors qu'il est dit de multiple fois qu'un compilateur fait du code objet (code machine) ici ce n'est plus du code objet (ni d'ailleurs du langage d'assemblage).
En introduction pour le code source il est dit "langage de programmation" et dans ce paragraphe le code source n'est pas un "langage de programmation" (mais de formatage de texte).
L'exemple de LaTex me semble un convertisseur de format et non un compilateur. Es-ce un abus de langage de la part de LaTeX ? En tout cas, l'exemple avec LaTeX ajoute beaucoup de confusion.
Il me semble qu'un compilateur c'est avant tout un programme qui transforme un langage de programme qui ne peut pas être exécuté (car inutilisable par un microprocesseur) vers du code objet (qui peut être exécuté par un microprocesseur). Dans le cas de code objet qui est du code octet, on peut considérer que le microprocesseur est "virtuel" ou simulé.
Le code objet peut parfois ne pas être directement exploitable car des adresses ne sont pas définies. C'est le rôle de l'éditeur de lien que de fournir ces informations. Pour des raisons pratiques, de confort pour le développeur, l'éditeur de lien peut être appelé par le compilateur. Mais l'éditeur de lien est un programme séparé qui peut être utilisé sans le compilateur. Et réciproquement, un compilateur n'a pas besoin d'éditeur de lien.
Je ne pense pas que l'édition de lien fait parti de la compilation car il ne produit pas de code objet. Il peut assembler des codes objet et définir des adresses afin de créer un exécutable ou une librairie (exploitable par le système d'exploitation) mais il ne crée pas de code objet contrairement à un compilateur, il ne connait pas le code objet (code machine) contrairement à un compilateur, il ignore tout du code source contrairement à un compilateur (il marche quelque soit le langage du code source). Pour moi ceci met l'éditeur de lien hors de la définition de compilateur.
: Effectivement, l'édition des liens n'est pas fait par les compilateurs (comme le prétend erronément l'article), mais bien par un éditeur de lien (ou lieur). On peut utiliser plusieurs compilateurs afin de compiler les divers fichiers sources (modules), d'un même projet de programmation, écrits dans différents langage de programmation (C, Pascal, langage d'assemblage, etc.); les divers codes objets (code binaire) produits par ces compilations sont liés ensuite dans un unique code objet par le lieur qui résout les liens entre les divers modules en remplaçant les étiquettes par les adresses effectives dans le code objet final. Les compilateurs produisent donc le code objet (code binaire), mais le lieur aussi puisqu'il le complète. Le code binaire (code objet) est aussi rédigé dans un langage [de programmation] propre à chaque machine programmable (processeur, micro-processeur, micro-contrôleur, Java Virtual Machine, etc.) et interprété par celle-ci pour effectuer les opérations attendues. En conséquence, on peut dire que les compilateurs ne sont que des traducteurs d'un langage (C, Pascal, langage d'assemblage, etc.) vers un autre (langage machine/binaire), ce que fait aussi aussi LaTeX, produisant à partir de son langage un fichier dans un autre langage (HTML, Postscript, etc.) qui sera interprété par la machine cible (par exemple, le moteur de rendu Gecko). --ProgMan (discuter) 8 février 2022 à 04:02 (CET)
thread_title:  Langage d'assemblage, langage machine, code objet, édition de lien 

message: Désolé d'être un peu dur dans le jugement.
Indépendamment de la validité ou de la qualité du contenu, cet article est du charabia au point de vue de la langue. Cela le rendrait limite incompréhensible même si le sens tenait la route (ce qui reste dificile à prouver, puisque justement la barrière du langage rend ledit sens, hypothétique, bien difficile d'accès ;-).
J'ai même cru un moment à une traduction automatique, tant les étranges formules de style, typiques du transcodage mot-à-mot d'une langue à une autre, s'enchaînent mécaniquement.
Denispir (d)
:Voila, j'ai essayé de reformuler/clarifier tout l'article. Cela devrait être un peu plus claire  (c'est vrai que les tournures étaient parfois bizarres ; je pense que cela est du au fait que l'article s'est écrit progressivement et n'a jamais été relu dans son ensemble en suivant/construisant un plan.). Romainhk (QTx10) 21 février 2011 à 19:14 (CET)
replies: text:  L'intro a été sacrément éclaircie (dans tous les sens du terme ). — Arkanosis ✉ 22 février 2011 à 11:07 (CET)
replies: text: Merci! c'est dingue ce qu'on peut faire en quelques coups de sécateur . Romainhk (QTx10) 22 février 2011 à 16:47 (CET)
thread_title:  charabia