Предназначены для решения задач искусственного интеллекта, к ним относят такие языки, которые способны в зависимости от набора исходных данных модифицировать алгоритм работы, т.е. «на ходу» менять программу.
Функциональные языки. В их основе лежит понятие функции как «черного ящика», имеющего вектор параметров (аргументов) на входе и результат r (скаляр) на выходе:
(7.1)
В функциональных языках программирования отсутствуют операторы: все действия, в том числе и управляющие конструкции, выполняются при помощи вызовов функций. Поскольку каждая функция возвращает значение, ее можно подставить в качестве аргумента другой функции, что позволяет записывать сложные выражения в функциональной форме. Одним из первых функциональных языков стал интерпретируемый язык LISP (Лисп), созданный в конце 50-х гг.
Логические языки. Логическое программирование представляет собой попытку возложить на программиста только постановку задачи, а поиски путей ее решения предоставить транслятору. Язык этой группы Prolog (Пролог) был создан в начале 70-х годов Аланом Колмероэ. В его основу положена математическая модель теории исчисления предикатов. Программа на этом языке строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. Человек только описывает структуру задачи, а внутренний «мотор» Пролога сам ищет решение с помощью методов поиска и сопоставления.