Введение
Группа языков программирования
A fourth generation programming language (4GL) is a high level computer programming language that belongs to a class of languages envisioned as an advancement upon third generation programming languages (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Some researchers state that 4GLs are a subset of domain specific languages. The concept of 4GL was developed from the 1970s through the 1990s, overlapping most of the development of 3GL, with 4GLs identified as "non procedural" or "program generating" languages, contrasted with 3GLs being algorithmic or procedural languages. While 3GLs like C, C++, C#, Java, and JavaScript remain popular for a wide variety of uses, 4GLs as originally defined found uses focused on databases, reports, and websites. Some advanced 3GLs like Python, Ruby, and Perl combine some 4GL abilities within a general purpose 3GL environment, and libraries with 4GL like features have been developed as add ons for most popular 3GLs, producing languages that are a mix of 3GL and 4GL, blurring the distinction. In the 1980s and 1990s, there were efforts to develop fifth generation programming languages (5GL).
Язык программирования четвертого поколения (4GL) — это язык программирования высокого уровня, относящийся к классу языков, задуманных как развитие языков программирования третьего поколения (3GL). Каждое поколение языков программирования стремится обеспечить более высокий уровень абстракции от внутренних деталей компьютерного оборудования, делая язык более удобным для программиста, мощным и универсальным. Хотя определение 4GL менялось со временем, его можно охарактеризовать как работу преимущественно с большими объемами информации одновременно, а не с отдельными битами и байтами. Языки, позиционируемые как 4GL, могут поддерживать управление базами данных, генерацию отчетов, математическую оптимизацию, разработку графических интерфейсов или веб-разработку. Некоторые исследователи считают, что 4GL являются подмножеством предметно-ориентированных языков. Концепция 4GL разрабатывалась с 1970-х по 1990-е годы, во многом совпадая с развитием 3GL, при этом 4GL определялись как "непроцедурные" или "языки, генерирующие программы", в отличие от 3GL, которые являются алгоритмическими или процедурными языками. В то время как 3GL, такие как C, C++, C#, Java и JavaScript, остаются популярными для широкого спектра задач, 4GL в их первоначальном определении нашли применение в основном для работы с базами данных, отчетами и веб-сайтами. Некоторые продвинутые 3GL, такие как Python, Ruby и Perl, объединяют некоторые возможности 4GL в среде 3GL общего назначения, а библиотеки с функциями, аналогичными 4GL, были разработаны как дополнения к большинству популярных 3GL, создавая языки, представляющие собой смесь 3GL и 4GL, что стирает границы между ними. В 1980-х и 1990-х годах предпринимались попытки разработать языки программирования пятого поколения (5GL).
A fourth generation programming language (4GL) is a high level computer programming language that belongs to a class of languages envisioned as an advancement upon third generation programming languages (3GL). Each of the programming language generations aims to provide a higher level of abstraction of the internal computer hardware details, making the language more programmer friendly, powerful, and versatile. While the definition of 4GL has changed over time, it can be typified by operating more with large collections of information at once rather than focusing on just bits and bytes. Languages claimed to be 4GL may include support for database management, report generation, mathematical optimization, GUI development, or web development. Some researchers state that 4GLs are a subset of domain specific languages. The concept of 4GL was developed from the 1970s through the 1990s, overlapping most of the development of 3GL, with 4GLs identified as "non procedural" or "program generating" languages, contrasted with 3GLs being algorithmic or procedural languages. While 3GLs like C, C++, C#, Java, and JavaScript remain popular for a wide variety of uses, 4GLs as originally defined found uses focused on databases, reports, and websites. Some advanced 3GLs like Python, Ruby, and Perl combine some 4GL abilities within a general purpose 3GL environment, and libraries with 4GL like features have been developed as add ons for most popular 3GLs, producing languages that are a mix of 3GL and 4GL, blurring the distinction. In the 1980s and 1990s, there were efforts to develop fifth generation programming languages (5GL).
История
Хотя термин 4GL ранее использовался в статьях и обсуждениях, он был впервые формально введен Джеймсом Мартином в его книге 1981 года «Разработка приложений без программистов» для обозначения непроцедурных языков спецификаций высокого уровня. Ранние 4GL в зачаточной форме были реализованы в продукте Informatics MARK IV (1967) и в системе MAPPER компании Sperry (1969 год – внутреннее использование, выпуск 1979 года). Существует несколько причин появления и сохраняющегося интереса к «4GL». Термин применим к широкому спектру программных продуктов, а также к подходу, ориентированному на расширенные семантические свойства и возможности реализации. Подобно тому, как 3GL предоставило программисту больше возможностей, 4GL открыло среду разработки для более широкой аудитории. Ранняя схема ввода данных для 4GL поддерживала ввод данных в пределах 72 символов на перфокарте (8 байт использовалось для последовательности), при этом метка карты определяла тип или функцию. При умелом использовании нескольких карт колода 4GL могла обеспечить широкий спектр возможностей обработки и отчетности, в то время как эквивалентная функциональность, реализованная на 3GL, могла потребовать, возможно, целую коробку или больше перфокарт. Формат в 72 символа сохранялся некоторое время по мере развития аппаратного обеспечения, увеличения объема памяти и появления терминальных интерфейсов. Несмотря на свои ограничения, этот подход поддерживал высокосложные приложения. По мере совершенствования интерфейсов, увеличения длины операторов и внедрения обработки входных данных на основе грамматики, возможности расширялись. Пример этого описан на странице Nomad. Другой пример возможностей Nomad проиллюстрирован Николасом Роулингсом в его комментариях для Музея истории компьютеров о NCSS (см. ссылку ниже). Он сообщает, что Джеймс Мартин попросил Роулингса найти решение для стандартной задачи, которую Мартин назвал «Проблемой инженера»: «предоставлять 6%-е повышение инженерам, средний рейтинг работы которых составлял 7 или выше». Мартин предоставил «дюжину страниц COBOL, а затем всего одну-две страницы Mark IV из Informatics». Роулингс предложил следующее единственное утверждение, выполняющее операцию над набором данных за один проход.
На развитие 4GL повлияло несколько факторов, при этом ограничения аппаратного и программного обеспечения играли значительную роль. Когда 4GL было впервые представлено, разнообразие аппаратных средств и операционных систем требовало разработки специализированной поддержки приложений, адаптированной к конкретной системе, для обеспечения продаж. Одним из примеров является система MAPPER, разработанная компанией Sperry. Несмотря на свои корни в прошлом, система оказалась успешной во многих приложениях и была портирована на современные платформы. Последняя версия встроена в предложение BIS компании Unisys. MARK IV теперь известен как VISION:BUILDER и предлагается компанией Computer Associates. Железная дорога Santa Fe использовала MAPPER для разработки системы в проекте, который стал ранним примером 4GL, быстрого прототипирования и программирования пользователями. Идея заключалась в том, что обучить специалистов по железным дорогам использованию MAPPER было проще, чем обучать программистов «тонкостям железнодорожных операций». Одним из ранних (и переносимых) языков, обладающих свойствами 4GL, был Ramis, разработанный Джеральдом К. Коэном в Mathematica, компании, занимающейся разработкой математического программного обеспечения. Коэн покинул Mathematica и основал Information Builders для создания аналогичного 4GL, ориентированного на отчетность, под названием FOCUS. Более поздние типы 4GL связаны с системами управления базами данных и значительно отличаются от более ранних типов в использовании методов и ресурсов, которые стали результатом общего прогресса в области вычислительной техники с течением времени. Интересным аспектом развития 4GL стало осознание того, что графические интерфейсы и связанные с ними рассуждения, выполняемые пользователем, формируют «язык», который недостаточно изучен.
Среда с низким уровнем кода
В двадцать первом веке системы 4GL стали появляться как среды или платформы с низким уровнем кодирования, предназначенные для решения задачи быстрой разработки приложений в сжатые сроки. Поставщики часто предлагают готовые примеры систем, такие как CRM, управление контрактами и отслеживание ошибок, на основе которых можно осуществлять разработку с минимальным объемом программирования.