Как правило, любой веб-проект приличного размера будет использовать около пяти языков: HTML, CSS, Javascript, какой-нибудь серверный язык «выполнения задач» (ASP, JSP, CGI-скрипты на Perl, PHP и т. Д.), и некоторый вариант SQL для подключения к базе данных.
(Это, конечно, отмахивание от руки аргумента о том, считаются ли HTML и CSS языками программирования - я - «они есть, но только не языки Тьюринга», но это в целом другая тема.)
Некоторые примеры того, как все они работают вместе:
Если вы идете по пути наилучшей практики, структура веб-страницы представлена в HTML, а инструкции по ее отображению - в CSS - которая может быть в том же файле, но не обязательно быть. CSS содержит несколько классов, на которые ссылается HTML, и браузер должен выяснить, как их объединить.
Если сделать еще один шаг вперед, то любые сценарии javascript на этой странице могут изменить любой из имеющихся HTML / CSS (изменить содержимое сущностей HTML, поменять один класс CSS на другой, изменить поведение CSS и и т. д.) Это делается с помощью так называемой объектной модели документа, которая, по сути, является независимым от языка и платформы API для манипулирования HTML-страницами объектно-подобным образом (после чего я медленно отступлю и просто предоставлю ссылку) к соответствующей статье вики .)
Но тогда откуда взялся весь HTML / CSS / Javascript? Это то, что делает язык на стороне сервера. В простейшей форме язык на стороне сервера - это программа, которая возвращает гигантскую строку, содержащую HTML-страницу в качестве вывода. Это, очевидно, может стать намного более сложным: формы HTML и параметры строки запроса могут быть использованы в качестве входных данных для нашей серверной программы, и тогда у вас есть весь объект AJAX, где JavaScript также отправляет данные непосредственно на язык сервера. Вы также можете придумать, где язык сервера может настраивать HTML, CSS и Javascript, который вылетает - по сути, у вас есть программа на одном языке, пишущая программу на другом языке.
Соединение между сервером и языком SQL работает практически так же. Есть много способов сделать его более сложным и безопасным, но самый простой способ для вашего серверного языка - динамически построить строку с командой SQL, передать ее в базу данных через какой-то соединитель и получить обратно. набор результатов. (Это тот случай, когда у вас действительно есть функция, которая сводится к someValue = database.executeThisSQLCommand (SQLString).)
Итак, чтобы обернуть это, различные языки в этом случае либо общаются, либо фактически пишут программы друг в друге, либо передают данные в очень простых и легко разбираемых форматах, понятных каждому. (Струны, в основном.)