C'est exactement comme ca que sont fait la plupart des compilateurs multilanguages comme GCC. Le "pseudo code" dont tu parles, c'est la représentation intermédiaire de l'article wikipedia. D'ailleurs je trouve que l'expression pseudo-code n'est pas très heureuse dans ce cas puisqu'il s'agit plutôt d'une autre représentation du programme. Et pour être plus précis, cette représentation intermédiaire n'est pas forcement représenté par un fichier, mais peut être une structure de données en mémoire.
Pour tes autres question:
Sinon pourquoi le caml et consort peuvent se compiler en C et ne se compilent pas en pseudo-code gcc par ex. ?
Parce-que c'est plus simple ? Mais pour gcj c'est exactement, il ne passe pas par le C ;)
Pourquoi les compilateurs prennent un pseudo code différent les uns les autres ?
Parce que c'est assez lié a la facon de faire des analyse/optimisations d'un compilateur donné? Mais il n'est pas rare de voir un nouveau front-end ajouté a gcc pour un nouveau langage (java par exemple)
Pourquoi je ne vois pas de gcc-premiere-phase dans mes programmes ?
Parce que tu t'en fous ? ;) Il y a beaucoup d'autres choses qui sont faites par gcc sans que tu ne le sache.
Pourquoi Python et Perl sont en train d'inventer un nouveau pseudo-code ?
Parceque leur but c'est d'exécuter ce pseudo code, pas de l'analyser et de le transformer en un autre code comme c'est le cas des compilo "classiques". C'est une différence fondamentale il me semble mais je suis pas un spécialiste de compilation.
Et pourquoi dans la niouz c'est marqué : "OpenMP est disponible pour les langages C, C++ et Fortran.", et pas les autres langages ?
Pas d'API sans doute. Le code est peut être là, mais si t'as d'interface pour l'appeler tu vas pas aller loin. Je pense que c'est plus un manque de ressources/temps qu'une limitation technique.
Bref POURQUOI POURQUOI ?? Il me semble que l'implication d'un tel pseudo-ultra-code dépasse les limites de l'imagination et devrait se nommer pseudo-babel pour la forme.
Il a rien de pseudo ton code :) Regarde les machines virtuelles de Java ou .NET par exemple.
Pourquoi est-ce qu'on entend parler de "optimisation du C" ou de "optimisation de XXX, langage supporté par gcc", au lieu de simplement "optimisation du peudo-code gcc" ?
La transformation de C (ou autre) vers la representation intermediaire (IR) n'est pas triviale et peut faire l'objet d'optimisation. Ensuite, j'imagine que meme si c'est une IR commune a tout les languages, il existe des constructions particuliere pour certains aspects d'un langage donné. J'ai pas d'exemple precis mais ca me semble pas surrealiste. Enfin, on entend souvent parler d'optimisation pour une architecture particuliere (genre IA64 dans la news) et ce quel que soit le langage (en theorie ;) )
[^] # Re: Pseudo code
Posté par LeMagicien Garcimore . En réponse à la dépêche Sortie de GCC 4.2. Évalué à 9.
C'est exactement comme ca que sont fait la plupart des compilateurs multilanguages comme GCC. Le "pseudo code" dont tu parles, c'est la représentation intermédiaire de l'article wikipedia. D'ailleurs je trouve que l'expression pseudo-code n'est pas très heureuse dans ce cas puisqu'il s'agit plutôt d'une autre représentation du programme. Et pour être plus précis, cette représentation intermédiaire n'est pas forcement représenté par un fichier, mais peut être une structure de données en mémoire.
Pour tes autres question:
Sinon pourquoi le caml et consort peuvent se compiler en C et ne se compilent pas en pseudo-code gcc par ex. ?
Parce-que c'est plus simple ? Mais pour gcj c'est exactement, il ne passe pas par le C ;)
Pourquoi les compilateurs prennent un pseudo code différent les uns les autres ?
Parce que c'est assez lié a la facon de faire des analyse/optimisations d'un compilateur donné? Mais il n'est pas rare de voir un nouveau front-end ajouté a gcc pour un nouveau langage (java par exemple)
Pourquoi je ne vois pas de gcc-premiere-phase dans mes programmes ?
Parce que tu t'en fous ? ;) Il y a beaucoup d'autres choses qui sont faites par gcc sans que tu ne le sache.
Pourquoi Python et Perl sont en train d'inventer un nouveau pseudo-code ?
Parceque leur but c'est d'exécuter ce pseudo code, pas de l'analyser et de le transformer en un autre code comme c'est le cas des compilo "classiques". C'est une différence fondamentale il me semble mais je suis pas un spécialiste de compilation.
Et pourquoi dans la niouz c'est marqué : "OpenMP est disponible pour les langages C, C++ et Fortran.", et pas les autres langages ?
Pas d'API sans doute. Le code est peut être là, mais si t'as d'interface pour l'appeler tu vas pas aller loin. Je pense que c'est plus un manque de ressources/temps qu'une limitation technique.
Bref POURQUOI POURQUOI ?? Il me semble que l'implication d'un tel pseudo-ultra-code dépasse les limites de l'imagination et devrait se nommer pseudo-babel pour la forme.
Il a rien de pseudo ton code :) Regarde les machines virtuelles de Java ou .NET par exemple.
Pourquoi est-ce qu'on entend parler de "optimisation du C" ou de "optimisation de XXX, langage supporté par gcc", au lieu de simplement "optimisation du peudo-code gcc" ?
La transformation de C (ou autre) vers la representation intermediaire (IR) n'est pas triviale et peut faire l'objet d'optimisation. Ensuite, j'imagine que meme si c'est une IR commune a tout les languages, il existe des constructions particuliere pour certains aspects d'un langage donné. J'ai pas d'exemple precis mais ca me semble pas surrealiste. Enfin, on entend souvent parler d'optimisation pour une architecture particuliere (genre IA64 dans la news) et ce quel que soit le langage (en theorie ;) )