PHP est il un langage compilé ou interprété ?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : PHP est il un langage compilé ou interprété ?

Re: PHP est il un langage compilé ou interprété ?

par popy » 29 août 2011, 16:33

$$var n'a rien à voir avec les pointeurs voyons, ça permet d'atteindre une variable en fonction d'un nom de symbole. Seuls les langages interprétés peuvent faire ça.

Re: PHP est il un langage compilé ou interprété ?

par sirakawa » 29 août 2011, 15:44

Merci de me répondre ce que je savais....
Quant à $$var : tout langage de ce nom connait les pointeurs et les passages par références (en particulier pour les fonctions)...

Re: PHP est il un langage compilé ou interprété ?

par popy » 29 août 2011, 11:32

Ce qui me semble passionant, c'est que lors de la première passe, l'erreur variable non définie n'est pas détectée alors q'elle l'est si on saisit la valeur 2...
Alors ça interroge sur le mode de fonctionnement de l'analyseur de PHP.
La variable n'est réellement utilisée que lorsque nombre=2, donc c'est uniquement à ce moment là que php cherche dans le contexte courant une variable nommée $u. C'est une particularité des langages interprétés : les variables ne sont pas "juste" des adresses mémoires, elles sont référencées dans un contexte, ce qui permet de ne tester leur existence qu'au moment où elles sont utilisées (et donne la possibilité de faire des choses du style $$toto)

Donc oui, il y a un tokenizer, et une forme de compilation, mais ça n'est pas un langage compilé. C'est d'ailleurs assez simple à voir : le script est parsé et "compilé" à chaque appel. Pour un langage compilé, la compilation est une étape préalable qui fournis un exécutable, le code source en lui même n'étant pas exécutable.

Re: PHP est il un langage compilé ou interprété ?

par sirakawa » 29 août 2011, 10:12

Si j'avais pensé qu'il s'agissait d'un "ramassis de bêtises" je me serais abstenu.
Loin d'être un ramassis de bêtises, ce code est la reprise de codes trouvés sur ce site dont les auteurs ne comprenaient pas les erreurs.
Ce qui me semble passionant, c'est que lors de la première passe, l'erreur variable non définie n'est pas détectée alors q'elle l'est si on saisit la valeur 2...
Alors ça interroge sur le mode de fonctionnement de l'analyseur de PHP.

Re: PHP est il un langage compilé ou interprété ?

par zeus » 28 août 2011, 12:18

ôO
C'est un ramassis de bêtises ce code, et non seulement il ne fera rien, mais il ne sert à rien non plus :/

Re: PHP est il un langage compilé ou interprété ?

par devlop78 » 28 août 2011, 03:32

Quoi ?

Re: PHP est il un langage compilé ou interprété ?

par sirakawa » 27 août 2011, 18:45

un truc marrant concernant l'analyse du code:
<?PHP
$nombre = isset($_POST ['nombre']) ? $_POST ['nombre'] : 1;
if ($nombre == 1)
{
	print "un c'est un
	<form method='post' action = 'test.php'>
	tapez un nombre <input name= 'nombre' />
	<button type = 'submit'>Calcule</button>
	</form>";

}
else
{
	if ( $nombre== 2)
	{
		print "$u";
	}
}

?>

Re: PHP est il un langage compilé ou interprété ?

par zeus » 17 août 2011, 23:04

En fait, tout les langages sont compilés à un moment où à un autre.
Toutefois, dans le discours courant, un langage dit compilé est un code dont la phase de compilation est faite avant le déploiement.
A contrario, un langage interpreté est un langage dont le code est compilé à la volé lors de l'exécution.

Avec cette définition, tu vois que le C, le Java, ... sont des langages compilés, mais que le PHP est un langage dit interprété.

Re: PHP est il un langage compilé ou interprété ?

par sirakawa » 15 août 2011, 22:17

À ce compte, Basic, Java, Lisp, Smalltalk, sont compilés?
Java est un langage compilé puisqu'il est traduit en bytecode même si il n'y a que la machine virtuelle qui le comprend. (bien que cette dernière l'interprète)
conclusion:
interprété = compilé...

Re: PHP est il un langage compilé ou interprété ?

par Skw33d » 15 août 2011, 17:15

À ce compte, Basic, Java, Lisp, Smalltalk, sont compilés?
Java est un langage compilé puisqu'il est traduit en bytecode même si il n'y a que la machine virtuelle qui le comprend. (bien que cette dernière l'interprète)

Re: PHP est il un langage compilé ou interprété ?

par sirakawa » 15 août 2011, 15:55

À ce compte, Basic, Java, Lisp, Smalltalk, sont compilés?
On se demande bien pourquoi des bêtes à manger du foin se tuent à compiler un langage déjà compilé.
On se demande aussi pourquoi les PHPmen soutiennt une opinion fausse, come si c'était une honte d'être un langage compilé...
Un programme en langage interprété est portable dès lors qu'il existe un interpréteur sur le système voulu : les résultats, visuels en particulier, dépendront des capacités du sytème (Je me souviens, dans mes débuts en Java, avoir écrit un logiciel de dessin dont le jeu de couleurs différait fortement en passant du PC sous Windows aux HP sous HPUX et aux SUN sous SUN OS). Le débat sur la vitesse me semble un faux débat dans la plupart des cas.
L'avantage est que l'auteur n'a pas à se soucier de quoi que ce soit au niveau du portage.

Un programme compilé au sens strict, étant en langage machine, doit être compilé pour chaque machine cible, voire chaque version du système d'exploitation de la machine cible, complication accentuée par le recours aux bibliothèques dynamiques dont il faut espérer que le client a la bonne version: j'ai récemment chargé le SDK "".7 de Java pour découvrir qu'il était incompatible avec une librairie ##.6 installée sur mon système; d'où désinstallation, réinstallation... une bonne heure au lieu de 10 minutes.
regarde sur n'importe quel dépôt pour Unix chez SourceForge pour te faire une idée... (je ne parle pas de rmp ou pas rmp.. mais d eversions pour Fedora11, fedora12...)

Le résultat visuel d'un programme compilé dépend lui aussi des ressources de la cible et risque de n'être pas identique.

Re: PHP est il un langage compilé ou interprété ?

par Skw33d » 15 août 2011, 15:05

Merci de vos réponses. Donc finalement dire que PHP est un langage compilé n'est pas faux et dire que PHP est un langage interprété ne serait pas totalement juste ?

Re: PHP est il un langage compilé ou interprété ?

par stealth35 » 15 août 2011, 14:07

y'a 2 phase pour le rendu d'un script PHP : la compilation et l’interprétation
quand tu lances ton fichier, le script est lu et compiler en token et ensuite en opcode, ensuite on repars a zéro et on interprète l'opcode
quand tu lances ton fichier, le script est lu et traduit/transcrit en token puis en opcode
oui donc compiler ...

Re: PHP est il un langage compilé ou interprété ?

par sirakawa » 15 août 2011, 09:56

y'a 2 phase pour le rendu d'un script PHP : la compilation et l’interprétation
quand tu lances ton fichier, le script est lu et compiler en token et ensuite en opcode, ensuite on repars a zéro et on interprète l'opcode
quand tu lances ton fichier, le script est lu et traduit/transcrit en token puis en opcode; ensuite on repart à zéro (ça ne servait donc à rien de transcrire, puisqu'on repart à zéro) et on interprète l'opcode ==>
CQFD Php est un langage interprété, dont l'interpréteur travaille en plusieurs passes, dont une analyse du code

Re: PHP est il un langage compilé ou interprété ?

par stealth35 » 14 août 2011, 22:38

y'a 2 phase pour le rendu d'un script PHP : la compilation et l’interprétation
quand tu lances ton fichier, le script est lu et compiler en token et ensuite en opcode, ensuite on repars a zéro et on interprète l'opcode

si tu veux plus d'infos :
- les tokens : http://php.net/manual/fr/tokens.php
- l'opcode : http://php.net/manual/en/internals2.opcodes.list.php

pour voir ce que rend un script en opcode y'a VLD (installer via pecl, ou sous windows le dll c'est ici

APC est un cache d'opcode, ce qui te permet de sauter la première étape