Выполнение программы предполагает выполнение процессором инструкций и транслирование множества команд прочим устройствам компьютера. Между разработчиком и процессором существует множество слоев: среда разработки, операционная система и т.д. Для того чтобы были выполнены, написанные на понятном разработчику языке инструкции, код должен быть скомпилирован, то есть преобразован в исполняемый код понятный компьютеру. Языки программирования можно разбить на два класса: компилируемые и интерпретируемые (на самом деле в настоящее время становится популярен гибридный подход).
Компиляция
Анализ всего кода программы и преобразование в исполняемый код для компьютера. Достоинство: получается быстрый код, оптимизированный под определенный процессор или архитектуру. Недостаток: процесс компиляции может быть длительным, исправление одной строчки требует пересборки всего проекта, компиляция нужна отдельная под каждую платформу (процессор, ОС).
Интерпретация
Построчный анализ, обработка и выполнение исходного кода программы или запроса. В отличие от компиляции, где весь текст программы, перед запуском, анализируется и транслируется в машинный или байт-код, без её выполнения. Достоинством такого подхода является мгновенная реакция. Недостаток: такой интерпретатор обнаруживает ошибки в тексте программы только при попытке выполнения команды (или строки) с ошибкой. А еще это медленно и требует много ресурсов.

Суть интерпретируемого ЯП в том, что код выполняется непосредственно в браузере на устройстве пользователя.
Чтобы данные появились на устройстве:
- Пользователь запрашивает их через интерфейс.
- Клиентское приложение в браузере формирует запрос/пул запросов на бэкенд.
- Бэкенд обрабатывает запрос и отправляет его на фронтенд.
- Клиентское приложение обрабатывает ответ и представляет информацию пользователю посредством интерфейса.
