Непроцедурные языки
Все рассмотренные языки имеют одну общую черту: базовый оператор в них – это оператор присваивания, который заставляет компьютер переместить данные из одного места в другое (x = y). В действительности это относительно низкий уровень абстракций. Более новые языки скорее предназначены для того, чтобы описать проблему и переложить на компьютер выяснение, как ее решить, чем и как перемещать данные.
Существует два направления формализма непроцедурных языков: функциональное и логическое программирование.
Функциональное программирование основано на математическом понятии чистой функции, которая не изменяет ни своего окружения, ни свою структуру, ни область применения. Понятие чистой функции лучше всего продемонстрировать на функции обычного языка типа C++. Пользователь может использовать системную функцию языка C++ только изменив ее структуру, добавив один, два или несколько операторов. Современные программные пакеты, основанные на функциональном программировании, представляют собой языки высокого уровня абстракции. К ним относятся электронные таблицы, настольные издательские системы, пакеты моделирования и другие средства абстрактного программирования. Генератор приложений такого пакета позволяет пользователю описывать последовательность экранов и структур баз данных.
Логическое программирование основано на законах математической логики. Компилятор реально не преобразует программу в машинные коды, скорее он пытается решить математическую проблему и ее решение выдает в качестве результата. Так как абстракция оставляет индексы, указатели, циклы и т. п. вне языка, эти программы могут быть на порядок короче обычных. Использование в языках математического формализма, делает их универсальными, выходящими за рамки конкретных прикладных областей. Основная проблема описательного (логического) программирования состоит в том, что решение процедурных задач выполняется обычными конструкциями программирования.
Непроцедурным языкам следует отдавать предпочтение всякий раз, когда необходимо запрограммировать поиск в больших объемах информации или решение задачи, не имеющей точного описания процесса. Примерами могут служить обработка текстов (перевод, проверка стиля и т. п.), распознавание образов (видение, генетика и т. п.) и оптимизация процессов (планирование).
Вывод
Невозможно установить точный класс любого языка, так как каждый из них обладает свойствами из других классов. Можно говорить о преобладании, главенстве свойств данного класса в данном языке.
2. Среды программирования
2.1. Компоненты среды программирования
Дата добавления: 2016-08-08; просмотров: 845;