Je souhaiterai trouver des sites (ou même un site bien :-)) qui
explique comment fonctionne php5, pas comment faire des pages, mais
comment ca fonctionne derriére (s'il compile, interpréte...), comment,
quel fichier ca génére si c'est de la compilation ?
Mouais c'est un peu jouer sur les mots. Par extention on appelle tout de même ca de la compilation.
par extention, dans le langage populaire, interpréter, c'est exécuter un code directement depuis le source. Mais bon ...
ce n'est pas parce qu'on execute directement sans générer de code executble qu'il n'y a pas compilation.
on pourrait dire que s'il n'y a pas code machine, c'est de l'interprétation, c'est donc valable pour Java, sauf que Java connait le JIT (Just in time compiler) qui genere a la volée du code machine.
Java est donc dans un status un peu particulier. On peut aussi utiliser le compilateur pour genere du binaire.
Mouais c'est un peu jouer sur les mots.
Par extention on appelle tout de même ca de la compilation.
par extention, dans le langage populaire, interpréter, c'est
exécuter un code directement depuis le source. Mais bon ...
ce n'est pas parce qu'on execute directement sans générer
de code executble qu'il n'y a pas compilation.
on pourrait dire que s'il n'y a pas code machine, c'est
de l'interprétation, c'est donc valable pour Java, sauf
que Java connait le JIT (Just in time compiler) qui genere
a la volée du code machine.
Java est donc dans un status un peu particulier. On peut
aussi utiliser le compilateur pour genere du binaire.
Mouais c'est un peu jouer sur les mots. Par extention on appelle tout de même ca de la compilation.
par extention, dans le langage populaire, interpréter, c'est exécuter un code directement depuis le source. Mais bon ...
ce n'est pas parce qu'on execute directement sans générer de code executble qu'il n'y a pas compilation.
on pourrait dire que s'il n'y a pas code machine, c'est de l'interprétation, c'est donc valable pour Java, sauf que Java connait le JIT (Just in time compiler) qui genere a la volée du code machine.
Java est donc dans un status un peu particulier. On peut aussi utiliser le compilateur pour genere du binaire.
Michel Billaud
(Christophe M?resse) writes:
loufoque wrote in message news:<415c9719$0$19116$...
liens, mais juste une compilation vers du code intermédiaire qui est ensuite interprété (exécuté).
Donc ce n'est pas de la compilation. La compilation transforme en langage machine, PHP transforme en bytecode. Rien à voir.
Mouais c'est un peu jouer sur les mots. Par extention on appelle tout de même ca de la compilation.
C'en est, puisqu'on génére du code pour une machine (virtuelle).
On dit bien qu'on compile du java... Je ne connais pas de terme pour dire "generer le bytecode".
Générer du code qui sera exécuté par une machine virtuelle (si on oublie qu'il existe aussi des processeurs "java natif'").
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
cmeresse@urbanet.ch (Christophe M?resse) writes:
loufoque <mat.wilmots.remove@nospam.wanadoo.fr> wrote in message news:<415c9719$0$19116$626a14ce@news.free.fr>...
liens, mais juste une compilation vers du code intermédiaire
qui est ensuite interprété (exécuté).
Donc ce n'est pas de la compilation.
La compilation transforme en langage machine, PHP transforme en bytecode.
Rien à voir.
Mouais c'est un peu jouer sur les mots.
Par extention on appelle tout de même ca de la compilation.
C'en est, puisqu'on génére du code pour une machine (virtuelle).
On dit bien qu'on compile du java... Je ne connais pas de terme pour
dire "generer le bytecode".
Générer du code qui sera exécuté par une machine virtuelle (si on
oublie qu'il existe aussi des processeurs "java natif'").
MB
--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
loufoque wrote in message news:<415c9719$0$19116$...
liens, mais juste une compilation vers du code intermédiaire qui est ensuite interprété (exécuté).
Donc ce n'est pas de la compilation. La compilation transforme en langage machine, PHP transforme en bytecode. Rien à voir.
Mouais c'est un peu jouer sur les mots. Par extention on appelle tout de même ca de la compilation.
C'en est, puisqu'on génére du code pour une machine (virtuelle).
On dit bien qu'on compile du java... Je ne connais pas de terme pour dire "generer le bytecode".
Générer du code qui sera exécuté par une machine virtuelle (si on oublie qu'il existe aussi des processeurs "java natif'").
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Michel Billaud
(Montigny) writes:
Bonjour,
Je souhaiterai trouver des sites (ou même un site bien :-)) qui explique comment fonctionne php5, pas comment faire des pages, mais comment ca fonctionne derriére (s'il compile, interpréte...), comment, quel fichier ca génére si c'est de la compilation ?
C'est pas écrit dans les sources ?
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
mmontig@oreka.com (Montigny) writes:
Bonjour,
Je souhaiterai trouver des sites (ou même un site bien :-)) qui
explique comment fonctionne php5, pas comment faire des pages, mais
comment ca fonctionne derriére (s'il compile, interpréte...), comment,
quel fichier ca génére si c'est de la compilation ?
C'est pas écrit dans les sources ?
MB
--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
Je souhaiterai trouver des sites (ou même un site bien :-)) qui explique comment fonctionne php5, pas comment faire des pages, mais comment ca fonctionne derriére (s'il compile, interpréte...), comment, quel fichier ca génére si c'est de la compilation ?
C'est pas écrit dans les sources ?
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Sebastien
Montigny wrote:
les scripts en asp étaient compilés
et qu'on pouvait même en faire des .dll pour plus de sécurité. Est ce à peut prés le meme fonctionnement avec php5 ?
Le code est "compilé" en pseudo-code intermédiaire qui sera exécuté. Il existe même des outils de cache, tels Zend Accelerator (<http://www.zend.com/store/products/zend-accelerator.php>), qui agissent à ce niveau. Par contre pas de vrais équivalents aux DLLs à ma connaissance.
Car je sais
qu'avec php4, tout était interprété et "transformé" en HTML mais, là, pas vraiment d'explication sur la maniére de fonctionner
Je ne pense pas qu'il y aie eu de modifications à ce niveau. Code PHP =[compilé]=> Pseudo-code =[exécuté]=> Envoi au client
et surtout de
proteger son code!
Qu'entends-tu exactement par "protéger son code" ? Si tu veux être le seul à pouvoir éditer tes scripts regarde du côté des obfuscateurs / encodeurs. Le plus abouti est certainement Zend Encoder (<http://www.zend.com/store/products/zend-encoder.php>) à $960. Les scripts sont décodés avec Zend Optimizer (<http://www.zend.com/store/products/zend-optimizer.php>) qui est gratuit et qui doit être installé sur le serveur de prod.
Montigny wrote:
les scripts en asp étaient compilés
et qu'on pouvait même en faire des .dll pour plus de sécurité.
Est ce à peut prés le meme fonctionnement avec php5 ?
Le code est "compilé" en pseudo-code intermédiaire qui sera exécuté. Il
existe même des outils de cache, tels Zend Accelerator
(<http://www.zend.com/store/products/zend-accelerator.php>), qui
agissent à ce niveau. Par contre pas de vrais équivalents aux DLLs à ma
connaissance.
Car je sais
qu'avec php4, tout était interprété et "transformé" en HTML mais, là,
pas vraiment d'explication sur la maniére de fonctionner
Je ne pense pas qu'il y aie eu de modifications à ce niveau.
Code PHP =[compilé]=> Pseudo-code =[exécuté]=> Envoi au client
et surtout de
proteger son code!
Qu'entends-tu exactement par "protéger son code" ? Si tu veux être le
seul à pouvoir éditer tes scripts regarde du côté des obfuscateurs /
encodeurs. Le plus abouti est certainement Zend Encoder
(<http://www.zend.com/store/products/zend-encoder.php>) à $960. Les
scripts sont décodés avec Zend Optimizer
(<http://www.zend.com/store/products/zend-optimizer.php>) qui est
gratuit et qui doit être installé sur le serveur de prod.
et qu'on pouvait même en faire des .dll pour plus de sécurité. Est ce à peut prés le meme fonctionnement avec php5 ?
Le code est "compilé" en pseudo-code intermédiaire qui sera exécuté. Il existe même des outils de cache, tels Zend Accelerator (<http://www.zend.com/store/products/zend-accelerator.php>), qui agissent à ce niveau. Par contre pas de vrais équivalents aux DLLs à ma connaissance.
Car je sais
qu'avec php4, tout était interprété et "transformé" en HTML mais, là, pas vraiment d'explication sur la maniére de fonctionner
Je ne pense pas qu'il y aie eu de modifications à ce niveau. Code PHP =[compilé]=> Pseudo-code =[exécuté]=> Envoi au client
et surtout de
proteger son code!
Qu'entends-tu exactement par "protéger son code" ? Si tu veux être le seul à pouvoir éditer tes scripts regarde du côté des obfuscateurs / encodeurs. Le plus abouti est certainement Zend Encoder (<http://www.zend.com/store/products/zend-encoder.php>) à $960. Les scripts sont décodés avec Zend Optimizer (<http://www.zend.com/store/products/zend-optimizer.php>) qui est gratuit et qui doit être installé sur le serveur de prod.
Michel Billaud
Armel FAUVEAU writes:
Bonjour,
La compilation transforme en langage machine,
Pas nécessairement. Par compilation, on entend la traduction d'un langage évolué vers un langage moins expressif.
Tout bien réfléchi c'est le contraire. Si on compile du langage A vers le langage B, c'est que tout ce qui peut être programmé en A peut aussi l'être en B. Donc B permet d'exprimer au moins autant de choses.
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
Armel FAUVEAU <webmaster@phpindex.com> writes:
Bonjour,
La compilation transforme en langage machine,
Pas nécessairement.
Par compilation, on entend la traduction d'un langage évolué vers un langage
moins expressif.
Tout bien réfléchi c'est le contraire. Si on compile du langage A vers
le langage B, c'est que tout ce qui peut être programmé en A peut
aussi l'être en B. Donc B permet d'exprimer au moins autant de
choses.
MB
--
Michel BILLAUD billaud@labri.fr
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)
Pas nécessairement. Par compilation, on entend la traduction d'un langage évolué vers un langage moins expressif.
Tout bien réfléchi c'est le contraire. Si on compile du langage A vers le langage B, c'est que tout ce qui peut être programmé en A peut aussi l'être en B. Donc B permet d'exprimer au moins autant de choses.
MB
-- Michel BILLAUD LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792 351, cours de la Libération http://www.labri.fr/~billaud 33405 Talence (FRANCE)
FAb
Michel Billaud writes:
Tout bien réfléchi c'est le contraire. Si on compile du langage A vers le langage B, c'est que tout ce qui peut être programmé en A peut aussi l'être en B. Donc B permet d'exprimer au moins autant de choses.
M'a on dirait des cours de info théorique et d'équivalence en machine de Turing ma parole. Par contre prendre le langage B comme exemple peut induire en erreur et rappeler de mauvais souvenir à certains.
FM.
Michel Billaud <billaud@labri.u-bordeaux.fr> writes:
Tout bien réfléchi c'est le contraire. Si on compile du langage A vers
le langage B, c'est que tout ce qui peut être programmé en A peut
aussi l'être en B. Donc B permet d'exprimer au moins autant de
choses.
M'a on dirait des cours de info théorique et d'équivalence en machine de Turing
ma parole. Par contre prendre le langage B comme exemple peut induire en
erreur et rappeler de mauvais souvenir à certains.
Tout bien réfléchi c'est le contraire. Si on compile du langage A vers le langage B, c'est que tout ce qui peut être programmé en A peut aussi l'être en B. Donc B permet d'exprimer au moins autant de choses.
M'a on dirait des cours de info théorique et d'équivalence en machine de Turing ma parole. Par contre prendre le langage B comme exemple peut induire en erreur et rappeler de mauvais souvenir à certains.
FM.
BaBS
Hum pour ce qui est de l'optimisation et du cryptage des sources : Turck MMCache http://turck-mmcache.sourceforge.net/ apparment plus rapide et surtout permet de crypter les source pour Zero/Bubule/Nada/Keudal Euro/Dollars/Shmilblicks/Yens
Interface : http://phpcoder.sourceforge.net/
Plein de fonctionnalités comme .. limiter l'acces des pages a certaine IPs, restrindre dans le temps l'utilisations des scripts ...
je n'ai pas encore eu le temps de vraiment me pencher dessus ... Mais si il fais bien 50% de ce qu'il dis faire, c'est deja une merveille :)
++
BaBS
Hum pour ce qui est de l'optimisation et du cryptage des sources :
Turck MMCache
http://turck-mmcache.sourceforge.net/
apparment plus rapide et surtout permet de crypter les source pour
Zero/Bubule/Nada/Keudal Euro/Dollars/Shmilblicks/Yens
Interface :
http://phpcoder.sourceforge.net/
Plein de fonctionnalités comme .. limiter l'acces des pages a certaine
IPs, restrindre dans le temps l'utilisations des scripts ...
je n'ai pas encore eu le temps de vraiment me pencher dessus ...
Mais si il fais bien 50% de ce qu'il dis faire, c'est deja une merveille :)
Hum pour ce qui est de l'optimisation et du cryptage des sources : Turck MMCache http://turck-mmcache.sourceforge.net/ apparment plus rapide et surtout permet de crypter les source pour Zero/Bubule/Nada/Keudal Euro/Dollars/Shmilblicks/Yens
Interface : http://phpcoder.sourceforge.net/
Plein de fonctionnalités comme .. limiter l'acces des pages a certaine IPs, restrindre dans le temps l'utilisations des scripts ...
je n'ai pas encore eu le temps de vraiment me pencher dessus ... Mais si il fais bien 50% de ce qu'il dis faire, c'est deja une merveille :)
++
BaBS
Bruno Desthuilliers
Montigny wrote:
J'ai trouvé de la doc sur asp.net qui expliquait que l'html était interprété (logique!!!) mais, que les scripts en asp étaient compilés et qu'on pouvait même en faire des .dll pour plus de sécurité.
Ahahahahah !!! Quelle blague !
Est ce à peut prés le meme fonctionnement avec php5 ? Car je sais qu'avec php4, tout était interprété et "transformé" en HTML mais, là, pas vraiment d'explication sur la maniére de fonctionner
Le principe général (le principe d'origine, j'entends) est le même pour toutes ces technos : prendre un fichier html dans le quel on a mis quelques marqueurs spécifiques, lesquelles contiennent des instructions qui seront remplacée par le texte résultant de leur évaluation avant envoi de la page.
Ce fonctionnement implique bien sur une interprétation.
Par contre, de plus en plus, PHP et ASP sont utilisés comme des langages plus "classiques", plus proche du modèle CGI : un programme est appelé avec des arguments dépendants de la requete HTTP, et ce que le programme renvoie sur sa sortie standard est retourné au serveur, qui le renvoie au navigateur.
Sur ce principe, effectivement, on peut aussi bien utiliser un programme compilé en natif (tu peut même écrire des CGI en assembleur si ça t'amuse) qu'un script interprété, mais vu les spécificités du web, les langages "de scripts" s'avèrent généralement plus souples, et pas forcément beaucoups plus lents, en tous cas dans le modèle CGI, où les programme sont généralement brefs, et rechargés à chaque page - la question peut se poser différement dans le cas d'un serveur d'application dédié, qui lui tourne en tâche de fond.
et surtout de proteger son code!
La protection du code passe par la licence, pas par l'obfuscation. Et la sécurité (pour empêcher les petits comiques de venir modifier ton code) se gère au niveau de l'administration des droits sur le serveur.
Note d'ailleurs que bon nombre de failles de sécurité classiques se trouvent dans des composants de bas niveau (os, serveur web, interpréteur etc), justement parce qu'ils sont généralement écrits avec des langages de bas niveau (généralement en C), dans lesquels une bourde peut être plus lourde de conséquence (ie : les buffers overflow, un grand classique...)
Et comprend aussi que la plupart des petits malins capables d'utiliser ce genre de failles pour entrer dans ton système sont généralement tout aussi capables de modifier directement du code machine.
Bref, les arguments de MS sont comme d'hab de la foutaise et du vent.
D'un point de vue plus général (et en simplifiant outrageusement, que les puristes me pardonnent), qu'il s'agissent de compilation ou d'interprétation, ça commence toujours par l'analyse du code source et sa transformation en arbre. De là, on peut, au choix : - exécuter directement cet arbre => interprétation - réécrire cet arbre en un autre langage => compilation
Cet autre langage (le langage cible) pouvant être ce qu'on veut, généralement du bytecode (Python, java etc) destiné à une 'machine virtuelle' qui permet de s'abstraire de la plate-forme hôte, soit du code objet pour une plateforme spécifique, mais ça peut aussi être du C ou de l'assembleur. En fait, tu peux considérer les byte-codes comme des assembleurs pour des processeurs virtuels !-)
La différence par exemple entre Python et Java est que Java nécessite un appel explicite au compilateur (javac mon_source.java), puis un appel à la machine virtuelle (java mon_fichier_class), alors que Python appelle tout seul le compilateur si nécessaire, de façon transparente pour l'utilisateur.
Tout ça relève de technologies et téhories bien connues et documentées, et enseignée dans toutes les bonnes universités. Regarde du côté de "théorie des compilateurs"...
Dans le cas de PHP, il me semble (mais je peux me tromper) qu'il passe maintenant par une phase de compilation en byte-code, mais que ce byte-code n'est pas conservé. Maintenant, si tu veux *vraiment* savoir, en détail et tout, comment fonctionne PHP, tout est dans le code source. Bonne lecture !-)
Bruno
Montigny wrote:
J'ai trouvé de la doc sur asp.net qui expliquait que l'html était
interprété (logique!!!) mais, que les scripts en asp étaient compilés
et qu'on pouvait même en faire des .dll pour plus de sécurité.
Ahahahahah !!! Quelle blague !
Est ce à peut prés le meme fonctionnement avec php5 ? Car je sais
qu'avec php4, tout était interprété et "transformé" en HTML mais, là,
pas vraiment d'explication sur la maniére de fonctionner
Le principe général (le principe d'origine, j'entends) est le même pour
toutes ces technos : prendre un fichier html dans le quel on a mis
quelques marqueurs spécifiques, lesquelles contiennent des instructions
qui seront remplacée par le texte résultant de leur évaluation avant
envoi de la page.
Ce fonctionnement implique bien sur une interprétation.
Par contre, de plus en plus, PHP et ASP sont utilisés comme des langages
plus "classiques", plus proche du modèle CGI : un programme est appelé
avec des arguments dépendants de la requete HTTP, et ce que le programme
renvoie sur sa sortie standard est retourné au serveur, qui le renvoie
au navigateur.
Sur ce principe, effectivement, on peut aussi bien utiliser un programme
compilé en natif (tu peut même écrire des CGI en assembleur si ça
t'amuse) qu'un script interprété, mais vu les spécificités du web, les
langages "de scripts" s'avèrent généralement plus souples, et pas
forcément beaucoups plus lents, en tous cas dans le modèle CGI, où les
programme sont généralement brefs, et rechargés à chaque page - la
question peut se poser différement dans le cas d'un serveur
d'application dédié, qui lui tourne en tâche de fond.
et surtout de
proteger son code!
La protection du code passe par la licence, pas par l'obfuscation. Et la
sécurité (pour empêcher les petits comiques de venir modifier ton code)
se gère au niveau de l'administration des droits sur le serveur.
Note d'ailleurs que bon nombre de failles de sécurité classiques se
trouvent dans des composants de bas niveau (os, serveur web,
interpréteur etc), justement parce qu'ils sont généralement écrits avec
des langages de bas niveau (généralement en C), dans lesquels une bourde
peut être plus lourde de conséquence (ie : les buffers overflow, un
grand classique...)
Et comprend aussi que la plupart des petits malins capables d'utiliser
ce genre de failles pour entrer dans ton système sont généralement tout
aussi capables de modifier directement du code machine.
Bref, les arguments de MS sont comme d'hab de la foutaise et du vent.
D'un point de vue plus général (et en simplifiant outrageusement, que
les puristes me pardonnent), qu'il s'agissent de compilation ou
d'interprétation, ça commence toujours par l'analyse du code source et
sa transformation en arbre. De là, on peut, au choix :
- exécuter directement cet arbre => interprétation
- réécrire cet arbre en un autre langage => compilation
Cet autre langage (le langage cible) pouvant être ce qu'on veut,
généralement du bytecode (Python, java etc) destiné à une 'machine
virtuelle' qui permet de s'abstraire de la plate-forme hôte, soit du
code objet pour une plateforme spécifique, mais ça peut aussi être du C
ou de l'assembleur. En fait, tu peux considérer les byte-codes comme des
assembleurs pour des processeurs virtuels !-)
La différence par exemple entre Python et Java est que Java nécessite un
appel explicite au compilateur (javac mon_source.java), puis un appel à
la machine virtuelle (java mon_fichier_class), alors que Python appelle
tout seul le compilateur si nécessaire, de façon transparente pour
l'utilisateur.
Tout ça relève de technologies et téhories bien connues et documentées,
et enseignée dans toutes les bonnes universités. Regarde du côté de
"théorie des compilateurs"...
Dans le cas de PHP, il me semble (mais je peux me tromper) qu'il passe
maintenant par une phase de compilation en byte-code, mais que ce
byte-code n'est pas conservé. Maintenant, si tu veux *vraiment* savoir,
en détail et tout, comment fonctionne PHP, tout est dans le code source.
Bonne lecture !-)
J'ai trouvé de la doc sur asp.net qui expliquait que l'html était interprété (logique!!!) mais, que les scripts en asp étaient compilés et qu'on pouvait même en faire des .dll pour plus de sécurité.
Ahahahahah !!! Quelle blague !
Est ce à peut prés le meme fonctionnement avec php5 ? Car je sais qu'avec php4, tout était interprété et "transformé" en HTML mais, là, pas vraiment d'explication sur la maniére de fonctionner
Le principe général (le principe d'origine, j'entends) est le même pour toutes ces technos : prendre un fichier html dans le quel on a mis quelques marqueurs spécifiques, lesquelles contiennent des instructions qui seront remplacée par le texte résultant de leur évaluation avant envoi de la page.
Ce fonctionnement implique bien sur une interprétation.
Par contre, de plus en plus, PHP et ASP sont utilisés comme des langages plus "classiques", plus proche du modèle CGI : un programme est appelé avec des arguments dépendants de la requete HTTP, et ce que le programme renvoie sur sa sortie standard est retourné au serveur, qui le renvoie au navigateur.
Sur ce principe, effectivement, on peut aussi bien utiliser un programme compilé en natif (tu peut même écrire des CGI en assembleur si ça t'amuse) qu'un script interprété, mais vu les spécificités du web, les langages "de scripts" s'avèrent généralement plus souples, et pas forcément beaucoups plus lents, en tous cas dans le modèle CGI, où les programme sont généralement brefs, et rechargés à chaque page - la question peut se poser différement dans le cas d'un serveur d'application dédié, qui lui tourne en tâche de fond.
et surtout de proteger son code!
La protection du code passe par la licence, pas par l'obfuscation. Et la sécurité (pour empêcher les petits comiques de venir modifier ton code) se gère au niveau de l'administration des droits sur le serveur.
Note d'ailleurs que bon nombre de failles de sécurité classiques se trouvent dans des composants de bas niveau (os, serveur web, interpréteur etc), justement parce qu'ils sont généralement écrits avec des langages de bas niveau (généralement en C), dans lesquels une bourde peut être plus lourde de conséquence (ie : les buffers overflow, un grand classique...)
Et comprend aussi que la plupart des petits malins capables d'utiliser ce genre de failles pour entrer dans ton système sont généralement tout aussi capables de modifier directement du code machine.
Bref, les arguments de MS sont comme d'hab de la foutaise et du vent.
D'un point de vue plus général (et en simplifiant outrageusement, que les puristes me pardonnent), qu'il s'agissent de compilation ou d'interprétation, ça commence toujours par l'analyse du code source et sa transformation en arbre. De là, on peut, au choix : - exécuter directement cet arbre => interprétation - réécrire cet arbre en un autre langage => compilation
Cet autre langage (le langage cible) pouvant être ce qu'on veut, généralement du bytecode (Python, java etc) destiné à une 'machine virtuelle' qui permet de s'abstraire de la plate-forme hôte, soit du code objet pour une plateforme spécifique, mais ça peut aussi être du C ou de l'assembleur. En fait, tu peux considérer les byte-codes comme des assembleurs pour des processeurs virtuels !-)
La différence par exemple entre Python et Java est que Java nécessite un appel explicite au compilateur (javac mon_source.java), puis un appel à la machine virtuelle (java mon_fichier_class), alors que Python appelle tout seul le compilateur si nécessaire, de façon transparente pour l'utilisateur.
Tout ça relève de technologies et téhories bien connues et documentées, et enseignée dans toutes les bonnes universités. Regarde du côté de "théorie des compilateurs"...
Dans le cas de PHP, il me semble (mais je peux me tromper) qu'il passe maintenant par une phase de compilation en byte-code, mais que ce byte-code n'est pas conservé. Maintenant, si tu veux *vraiment* savoir, en détail et tout, comment fonctionne PHP, tout est dans le code source. Bonne lecture !-)
Bruno
Samuel KABAK
Bonjour,
"loufoque" a écrit dans le message de news:415c4524$0$19106$
Montigny a dit le 30/09/2004 16:50:
c'est de la compilation ? Non.
Juste pour dire un mot sur la compilation.
Je ne saurais pas dire si php est compilé ou pas. En tout cas, beaucoup de languages de script doivent passer en code de machine virtuelle (créé avec yacc et lex ou équivalent). Un truc qui permet d'appeler des focntions en c (ou java ou tout autre langage)
Ex : $var = 5;
devient
1- chercher si $var a déjà été créé 2- si oui affecter lui la valeur 5 3- sinon 3a- créer la variable $var 3b- affecter lui la valeur 5
Comme ces micro-opérations reviennent souvent, on crée un pseudo-code (chercher, affecter, etc.)
Je sais par contre que la page ------- <? include('page-'.$_GET[page_param].'.php'); ?> -------
ne ressemble pas à un code compilé une fois pour tout (à la java ou au C/C++) car le code lui-même change d'un appel à un autre.
Samuel KABAK www.codeas.net
--
Bonjour,
"loufoque" <mat.wilmots.remove@nospam.wanadoo.fr> a écrit dans le message de
news:415c4524$0$19106$626a14ce@news.free.fr...
Montigny a dit le 30/09/2004 16:50:
c'est de la compilation ?
Non.
Juste pour dire un mot sur la compilation.
Je ne saurais pas dire si php est compilé ou pas. En tout cas, beaucoup de
languages de script doivent passer en code de machine virtuelle (créé avec
yacc et lex ou équivalent). Un truc qui permet d'appeler des focntions en c
(ou java ou tout autre langage)
Ex :
$var = 5;
devient
1- chercher si $var a déjà été créé
2- si oui affecter lui la valeur 5
3- sinon
3a- créer la variable $var
3b- affecter lui la valeur 5
Comme ces micro-opérations reviennent souvent, on crée un pseudo-code
(chercher, affecter, etc.)
Je sais par contre que la page
-------
<?
include('page-'.$_GET[page_param].'.php');
?>
-------
ne ressemble pas à un code compilé une fois pour tout (à la java ou au
C/C++) car le code lui-même change d'un appel à un autre.
"loufoque" a écrit dans le message de news:415c4524$0$19106$
Montigny a dit le 30/09/2004 16:50:
c'est de la compilation ? Non.
Juste pour dire un mot sur la compilation.
Je ne saurais pas dire si php est compilé ou pas. En tout cas, beaucoup de languages de script doivent passer en code de machine virtuelle (créé avec yacc et lex ou équivalent). Un truc qui permet d'appeler des focntions en c (ou java ou tout autre langage)
Ex : $var = 5;
devient
1- chercher si $var a déjà été créé 2- si oui affecter lui la valeur 5 3- sinon 3a- créer la variable $var 3b- affecter lui la valeur 5
Comme ces micro-opérations reviennent souvent, on crée un pseudo-code (chercher, affecter, etc.)
Je sais par contre que la page ------- <? include('page-'.$_GET[page_param].'.php'); ?> -------
ne ressemble pas à un code compilé une fois pour tout (à la java ou au C/C++) car le code lui-même change d'un appel à un autre.