Введение
Язык программирования пятого поколения (5GL) — это язык программирования высокого уровня, основанный на решении задач посредством ограничений, заданных программе, а не на алгоритме, написанном программистом. Большинство языков, основанных на ограничениях и логическом программировании, а также некоторые другие декларативные языки, относятся к языкам пятого поколения.
A fifth generation programming language (5GL) is a high level programming language based on problem solving using constraints given to the program, rather than using an algorithm written by a programmer. Most constraint based and logic programming languages and some other declarative languages are fifth generation languages.
История
В то время как языки программирования четвертого поколения предназначены для разработки конкретных программ, языки пятого поколения созданы для того, чтобы компьютер решал поставленную задачу без участия программиста. Таким образом, пользователю необходимо лишь определить, какие проблемы требуется решить и какие условия должны быть выполнены, не задумываясь о реализации конкретных процедур или алгоритмов для их решения. Языки пятого поколения в основном используются в исследованиях в области искусственного интеллекта. OPS5 и Mercury – примеры языков пятого поколения, как и ICAD, разработанный на основе Lisp. KL ONE представляет собой пример смежной концепции – языка фреймов. В 1980-х годах языки пятого поколения считались перспективным направлением развития, и некоторые предсказывали, что они заменят процедурное программирование на программирование, основанное на ограничениях, для всех задач, которые можно представить в виде серии логических ограничений. Наиболее заметным примером является проект Японии по созданию компьютерных систем пятого поколения, реализованный с 1982 по 1993 год, в рамках которого планировалось разработать масштабную компьютерную сеть, использующую эти инструменты. Однако по мере создания более крупных программ недостатки данного подхода стали очевидны. Оказалось, что получение эффективного алгоритма для решения задачи, заданной набором ограничений, само по себе является сложной проблемой. Этот ключевой этап пока не поддается автоматизации и по-прежнему требует интуиции и опыта человеческого программиста.
Распространенное заблуждение
Известно, что некоторые поставщики время от времени рекламируют свои языки программирования как 5GL. Однако чаще всего они предлагают 4GL с расширенными возможностями автоматизации и встроенной базой знаний. Поскольку шумиха вокруг 5GL в 1980-х годах утихла, а все проекты были в конечном итоге закрыты, осведомленность о 5GL снизилась. Это позволило поставщикам повторно использовать этот термин в маркетинге новых инструментов, не вызывая особых возражений у современных поколений программистов.