Un compilateur est un programme informatique qui traduit un langage, le langage source, en un autre, appelé le langage cible, directement utilisable par un ordinateur.
Le compilateur GCC (Gnu Compiler Collection) sera présenté par l'un de ses principaux contributeurs, Basile Starynkevitch, ainsi que son architecture, sa communauté, son histoire, depuis un compilateur simple pour C jusqu'au compilateur multi-langage, multi plate-forme qu'il est devenu.
L'organisation du développement de GCC sera évoqué. Une tendance récente de GCC est de permettre bientôt des traitements de plus en plus variés sur le code source des programmes, complémentaires de la génération de code machine, qui est la raison d'être des compilateurs.
En particulier on évoquera les thèmes de l'analyse statique de code, de l'optimisation adaptative, du refactoring, en s'appuyant sur les travaux en cours dans la branche MELT de GCC et dans le projet GGCC. Il est fortement conseillé de s'incrire sous :
http://www.parinux.org/content/conference-gcc-mardi-12-janvier-2010
La conférence se déroulera à l'Espace Loisirs et Multimedia, 105 avenue de La Bourdonnais, 75007 Paris (Métro : École Militaire)
le mardi 12 janvier de 19h15 à 20h45.
Aller plus loin
- Parinux : inscription (3 clics)
- Documentation sur wikipedia (3 clics)
- GCC, installation, manuels, wiki en anglais (2 clics)
- Basile Starynkevitch (3 clics)
- Mode d'emploi de GCC, Christian Casteyde (6 clics)
# Pas une super definition...
Posté par x0ra . Évalué à 5.
Un compilateur est un programme informatique qui traduit un langage, le langage source, en un autre, appelé le langage cible, directement utilisable par un ordinateur.
Le debut de la definition est correcte, mais malheureusement, la fin casse tout. Le langage cible n'est pas toujours 'utilisable par un ordinateur' (entre guillemet car ce terme est super vague).
En ce qui concerne gcc en particulier, il est bien incapable de generer du code interpretable par un CPU.
[^] # Re: Pas une super definition...
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
Citons la compilation vers de « langages de haut-niveau » vers C (qu'il faudra alors à son tour compiler), ou vers des langages interprétés par des machines virtuelles.
Des exemples :
Gambit-C compile du Scheme vers du C;
OCaml compile de l'OCaml vers du code octet pour sa machine virtuelle, ou produit directement du code machine pour certains processeurs;
Java qui compile vers la JVM.
>> Une tendance récente de GCC est de permettre bientôt des traitements de plus en plus variés sur le code source des programmes,
J'aurais aimé plus de détails sur ces points. Autant j'ai une bonne idée de ce qu'il est possible de faire, autant je n'ai aucune idée de ce que GCC sait faire…
Fait-il de l'évaluation partielle (Partial_evaluation) ? de l'analyse d'alias (Alias_analysis) ? de la détection de débordement de tampons ?
J'ai rien contre les optimisations, mais je me demande s'il ne faudrait pas insister un peu plus sur l'analyse de code dans une optique sécuritaire, afin de repérer plus de bogues et d'inciter les développeurs à fournir du code plus sûr et correct…
[^] # Re: Pas une super definition...
Posté par patrick_g (site web personnel) . Évalué à 5.
Je vais aller à la conf de mardi car j'essaye de récolter un max d'infos pour fignoler la prochaine news GCC 4.5. Je poserai tes questions à Basile.
[^] # Re: Pas une super definition...
Posté par bubar🦥 (Mastodon) . Évalué à 2.
"des optimisations spécifiques à une librarie ou une application, la validation de règles de codage et le diagnostic " (...) "une forme de programmation par aspects" (...) "L'outil MELT [Middle End Lisp Translator]" (...)
Difficile de faire une dépêche d'annonce sans dévoilé du contenu :) En même temps, le seul nom "Mr Starynkevitch" devrait déplacer les foules. Par contre, vivement la dépêche sur la sortie de gcc 4.4.5, surtout pour les non parisiens :))
ps : et si tu souhaites te mettre encore plus l'eau à la bouche, il y a le pdf de Parinux sur la conférence de novembre 2008 ... histoire de 'faire le point' avant celle ci :)
www.parinux.org/files/presentation_parinux_nov08_gcc.pdf
[^] # Re: Pas une super definition...
Posté par LupusMic (site web personnel, Mastodon) . Évalué à -3.
Mais les outils qui traduisent du code d'un langage en un autre ne sont pas des compilateurs. Ce sont des traducteurs.
Gambit-C ne compile pas, il traduit. M'enfin, il y a bien des abrutis qui prétendent compiler avec le compilateur MS Visual Studio...
[^] # Re: Pas une super definition...
Posté par Vivi (site web personnel) . Évalué à 6.
Par exemple, transformer du Haskell en C, c'est de la compilation.
[^] # Re: Pas une super definition...
Posté par LupusMic (site web personnel, Mastodon) . Évalué à -3.
[^] # Re: Pas une super definition...
Posté par Thomas Douillard . Évalué à 5.
[^] # Re: Pas une super definition...
Posté par FantastIX . Évalué à 2.
Je suis d'accord avec toi. Je dirais même des «transcodeurs».
[^] # Re: Pas une super definition...
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 3.
Double pas d'accord.
Un compilateur, c'est un transducteur qui préserve la sémantique.
D'une part, tu as des compilateurs qui prennent en entrée du code inintelligible pour un humain, qui a pu être généré par une application graphique (comme des descriptions de hardware), pour générer par exemple du VHDL.
On peut aussi compiler vers une machine (et pas vers un langage qui tourne sur une machine) : j'ai un ancien pote de labo qui compilait (juste-à-temps) du Scheme vers du FPGA.
D'autre part, je peux aussi affirmer que « GCC est une machine » qui sait directement traiter le code généré par Gambit-C.
Et ton code objet, c'est quoi ?
Dans ta vision réductrice, c'est juste un langage qui est à son tour interprété (par un machine). Donc si je transforme du Scheme en javascript (langage qu'on peut évaluer), alors j'ai bien compilé. Puis du javascript en Scheme (langage qu'on peut évaluer), alors j'ai encore compilé. Par composition, transformer du Scheme en Scheme, c'est compiler. Or, transformer du Scheme en Scheme, c'est aussi traduire.
Je conclus donc, malgré tes contraintes, que traduction et compilation ne sont pas indissociables.
[^] # Re: Pas une super definition...
Posté par Thomas Douillard . Évalué à 2.
[^] # Re: Pas une super definition...
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Une des plus simples, que GCC sait déjà faire.
Une autre, c'est l'inlining (remplacer un appel de fonction directement par le code de la fonction).
Mais tout ça, c'est connu depuis Mathusalem.
La recherche a continué, je me demande (en partie) à quel point les devs de GCC se sont penchés sur ces avancées là.
# video de la conf
Posté par madmaker . Évalué à 6.
ca peut etre interessant vu les dimensions de la salle (et puis pour les personnes n'habitant pas paris)
# Espace Loisirs et Multimédia
Posté par Meku (site web personnel) . Évalué à 2.
Là je vois que les inscriptions sont déjà closes :-(
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.