En général, tout projet web de taille raisonnable utilise environ cinq langues : HTML, CSS, Javascript, une sorte de langage côté serveur (ASP, JSP, CGI scripts avec Perl, PHP, etc.), et une variante de SQL pour la connectivité avec la base de données.
(Il s'agit, bien entendu, d'écarter d'un revers de main la question de savoir si HTML et CSS sont ou non des langages de programmation - je suis du camp "ils le sont, mais ce ne sont pas des langages Turing-complets", mais il s'agit là d'un tout autre sujet).
Quelques exemples de la manière dont tous ces éléments fonctionnent ensemble :
Si vous suivez les meilleures pratiques, la structure d'une page web est en HTML, et les instructions pour l'afficher sont en CSS - qui pourraient être dans le même fichier, mais ne doivent pas nécessairement l'être. Le CSS contient une série de classes, auxquelles le HTML fait référence, et c'est au navigateur de déterminer comment les cliquer ensemble.
Pour aller plus loin, tout scripts javascript sur cette page peut modifier n'importe quel HTML/CSS présent (changer le contenu des entités HTML, remplacer une classe CSS par une autre, changer le comportement du CSS, etc.) Pour ce faire, il utilise ce que l'on appelle le Document Object Model, qui est essentiellement une API indépendante du langage et de la plate-forme permettant de manipuler les pages HTML à la manière d'un objet (à ce stade, je vais m'éloigner doucement et me contenter de fournir un lien vers le document article wiki pertinent .)
Mais alors, d'où vient tout le HTML / CSS / Javascript ? C'est ce que fait le langage côté serveur. Dans sa forme la plus simple, le langage côté serveur est un programme qui renvoie une chaîne géante contenant une page HTML. Cela peut évidemment devenir beaucoup plus complexe : les formulaires HTML et les paramètres de la chaîne de requête peuvent être utilisés comme entrée pour notre programme côté serveur, et puis il y a tout le truc AJAX où le javascript peut envoyer des données directement au langage côté serveur aussi. Il est également possible de faire preuve de fantaisie en permettant au langage du serveur de personnaliser le HTML, le CSS et le Javascript qui sont envoyés - essentiellement, un programme dans un langage écrit un programme dans un autre langage.
La connexion entre le langage côté serveur et SQL fonctionne à peu près de la même manière. Il existe de nombreuses façons de la rendre à la fois plus complexe et plus sûre, mais la plus simple est que le langage de votre serveur construise dynamiquement une chaîne contenant une commande SQL, la transmette à la base de données via une sorte de connecteur, et récupère un ensemble de résultats. (C'est un cas où vous avez vraiment une fonction qui se résume à someValue = database.executeThisSQLCommand( SQLString ). )
Pour résumer, les différents langages communiquent soit en écrivant des programmes les uns dans les autres, soit en transmettant des données dans des formats très simples et faciles à analyser que tout le monde peut comprendre (chaînes de caractères, principalement). (Chaînes de caractères, principalement).