(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/>