Contrairement à ce que certains affirment, HTML n'est pas un langage de programmation. Ce n'est qu'un langage de description de pages, permettant au créateur de construire des documents qui seront présentées au client d'une façon aussi proche que possible de ce qu'il avait souhaité. La page est entièrement prédéfinie et toute variante doit faire l'objet d'une nouvelle rédaction.
Les concepteurs de sites ont donc rapidement senti le besoin d'outils leur permettant de générer des pages de façon plus rapide à l'aide d'outils de programmation. Ils étaient ainsi à même de pouvoir, avec un minimum d'effort répondre à une demande légèrement différentes de leurs visiteurs successifs, de publier le contenu d'un catalogue en ligne, etc ...
Afin de pouvoir traiter les demandes des visiteurs, une norme spécifique a été définie sous le nom de Common Gateway Interface (CGI).
Les premières techniques utilisées
consistaient à écrire des programmes externes (dans un langage quelconque).
Lorsque les serveur reçoit une telle demande, il crée un nouveau processus
dans lequel il exécute le programme qui lui retourne la page générée qu'il
peut alors renvoyer au demandeur. Une programmation complète est alors
nécessaire et la création d'un processus à chaque demande peut être une
charge assez lourde (malgré les multiples techniques d'optimisation que l'on
peut imaginer).
La réponse à ce problème à consisté à permettre au serveur d'exécuter des
programme dans son propre contexte d'exécution (.dll de Windows ou modules
chargeables d'autres environnements). Pour cela, divers fournisseurs de serveurs
ont proposé des API spécifiques permettant de faciliter le développement,
tout en laissant la charge complète de la création de la page au programmeur.
Bien sûr cette approche allie avantages (en termes de performances) et
inconvénients (en terme de fiabilité, un module mal écrit pouvant mettre en
cause le fonctionnement global du serveur.
Une approche plus récente consiste à proposer au créateur de page de réduire
au minimum sa charge de travail en lui permettant d'insérer dans sa page
html des séquences d'instructions écrites dans le langage de programmation de
son choix.
Deux solutions principales ont été proposées :
PHP : un langage de type C que l'on peut insérer au sein du code html et qui permet de se connecter à de nombreuses bases de données,
ASP : un environnement de développement basé sur un ensemble d'objets standard que l'on peut programmer à l'aide de langages comme VBScript, JavaScript ou Perl.
Présentés comme concurrents, voire ennemis héréditaires puisque PHP est souvent associé au monde du logiciel libre alors qu'ASP a été créé par Microsoft, ces deux approches sont semblables, peut être complémentaires et en tout cas parfaitement compatibles, puisqu'un serveur Microsoft peut interpréter des pages PHP aussi bien qu'un serveur Apache peut interpréter des pages ASP (après que chacun d'eux ait été configuré correctement, cela va de soi ...)