(Courriels de diversion: <looping@ridaient-incomplets.com> <cloisonnerent@intervertirons-moquera.com> <formaliseront@attachants-immisceriez.com> <cessibles@engraisses-provisionnes.com> <affaisserent@empaquetiez-barricada.com> <trepanent@reglementaire-langee.com> <communierez@manipulez-interdirais.com> <trafiquera@galvanisaient-trublions.com> <entrouvririons@transcodees-edifie.com> <encombres@clarte-tenaillee.com> )


>>>>> "jdd" == jdd  <jdanield@dodin.net> writes:
  jdd> "Sous Linux il y a de très nombreux langages de programmations, mais
  jdd> une grande partie d'entre eux ou ne fait pas de compilation (ce sont
  jdd> des interpréteurs - le fichier du langage doit être présent pour que
  jdd> le source soit exécutable) soit il transforme le code source en code
  jdd> C++ (ou en code asm86). 

le modèle d'exécution (compilé ou interprété) n'est pas un attribut du
langage de programmation, mais de l'implémentation utilisée. En
fonction de l'environnement de programmation, il peut etre possible
d'exécuter le même code en mode compilé natif, ou en mode compilé
bytecode, ou en mode interprété.

Quelques exemples:

   - un programme en Common Lisp peut être interprété, ou compilé vers
     du bytecode et executé sur une machine virtuelle intégrée à
     l'environnement Lisp, ou encore compilé vers du code natif. Une
     fonction interprétée peut faire appel à une fonction compilée,
     et vice-versa.

   - un programme Java peut être compilé vers du code natif avec gcj,
     ou compilé vers du bytecode qui est exécuté par une machine
     virtuelle Java.

   - un programme C peut être compilé vers du code natif, ou
     interprété par un environnement type CInt
     <URL:http://root.cern.ch/root/Cint.html>

Tu sembles vouloir insister sur le fait que certains langages de
programmation ont besoin d'un support d'exécution pour fonctionner sur
une machine. Pour faire tourner un programme python, il faut qu'un
environnement python (machine virtuelle, bibliothèque standard python
etc) soit installé sur la machine; pareil pour un programme Perl ou
Common Lisp. Beaucoup pensent que ça n'est pas le cas d'un programme
écrit en langage C et compilé, mais en vérité ces programmes ont
besoin d'un support d'exécution qui s'appèlle /lib/libc.so (il se
trouve que ce support d'exécution est pré-installé sur toutes les
machines Unix). C'est pire: il ne suffit pas de n'importe quel
libc.so, puisqu'un programme compilé pour la libc5 ne fonctionnera pas
pour la libc6 (et pire un programme compilé pour la libc6.2 risque de
ne pas fonctionner avec la libc6.1).

Le seul programme qui peut s'exécuter sans support d'exécution autre
que le noyau est un programme lié statiquement.


  jdd> Le compilateur gc++ est donc presque un outil universel Linux"

gcc n'a rien de magique; on pourrait faire une distribution Linux où
tous les programmes sont compilés avec un autre compilateur tel que
tcc, où encore une distribution où toutes les applications sont
écrites en Python. 
  
-- 
Eric Marsden                          <URL:http://www.laas.fr/~emarsden/>

--------------------------------------------------------------------
Les listes de diffusion occultes: <URL:http://www.CULTe.org/listes/>