24. Общая характеристика языков программирования. Компиляторы, интерпретаторы
Язык программирования – формальный язык общения человека с компьютером. ЯП служит для создания программ, которые при их выполнении позволяют получить конкретный результат. Выделяется три составные части ЯП: 1)Синтаксис ЯП - это совокупность правил образования правильных конструкций языка. Любой язык программирования может быть определён, как некоторое множество цепочек из некоторого непустого конечного множества символов, называемого алфавитом языка.2)Семантика ЯП - это совокупность правил и соглашений, устанавливаемых описанием языка для выявления смысла текстов на этом языке и их интерпретации человеком или автоматом; виды семантики:операционная;денотационная (математическая);дедуктивная(аксиоматическая,логическая);трансляционная и др.3)Прагматика ЯП – соотнесение объектов предметной области с реальными характеристиками решаемой задачи, вопросы времени и стоимости вычислений, удобство и наглядность представления данных.
С помощью языка программирования создается не готовая программа, а толь-ко текст программы, описывающий разработанный алгоритм. Чтобы получить ра-ботающую программу, необходимо: • либо автоматически перевести текст в машинный код (для этого служат программы-компиляторы) и затем использовать отдельно от исходного текста; • либо сразу выполнять команды языка, указанные в тексте программы (этим занимаются программы-интерпретаторы).
Компиляторы полностью обрабатывают весь текст программы (исходный код). Они просматривают его в поисках синтаксических ошибок (иногда несколь-ко раз), выполняют смысловой анализ и автоматически переводят (транслируют) на машинный язык – генерируют машинный код.
Законченная программа: • компактна и эффективна; • работает в сотни раз быстрее программы, выполняемой с интерпретатором; • может быть перенесена на другие компьютеры с процессором, поддержи-вающим соответствующий машинный код.
Основной недостаток компиляторов – трудоемкость трансляции языков, ориентированных на обработку данных сложной структуры.
Интерпретатор берет очередной оператор языка из текста программы, анали-зирует его и сразу исполняет (обычно после анализа оператор транслируется в не-которое промежуточное представление или даже машинный код для более эффек-тивного дальнейшего исполнения). После того как текущий оператор выполнен, интерпретатор перейдет к следующему.
Недостатки интерпретаторов: • если оператор выполняется в программе многократно, то интерпретатор всякий раз будет выполнять его так, будто встретил впервые (программы с боль-шим объемом повторяющихся вычислений работают медленно); • для выполнения программы на другом компьютере там должен быть уста-новлен интерпретатор.
Достоинства интерпретаторов: • можно в любой момент остановить работу программы, исследовать содер-жимое памяти, организовать диалог с пользователем, выполнить сколь угодно сложные преобразования данных и при этом постоянно контролировать состояние окружающей программно-аппаратной среды (высокая надежность работы); • интерпретатор при выполнении каждого оператора проверяет множество характеристик ОС и информирует разработчика о возникающих проблемах; • интерерпретатор очень удобен для использования в качестве инструмента изучения программирования, так как позволяет понять принципы работы любого отдельного оператора языка.
В реальных системах программирования смешаны технологии компиляции и интерпретации. В процессе отладки программа может выполняться по шагам, а результирующий код не обязательно будет машинным.
Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня (ЯПНУ).
С помощью ЯПНУ создаются очень эффективные и компактные программы, т. к. разработчик получает доступ ко всем возможностям процессора.
Языки программирования высокого уровня (ЯПВУ) ближе и понятнее челове-ку. Особенности компьютерных архитектур в них не учитываются, поэтому про-граммы на уровне исходных текстов переносимы на другие платформы, для кото-рых есть транслятор этого языка. Разрабатывать программы значительно проще, допускается меньше ошибок.