Введение
Язык программирования четвертого поколения (4GL) – программный продукт FOCUS – это язык программирования четвертого поколения (4GL) и среда разработки, предназначенная для создания запросов к базам данных. Разработанный компанией Information Builders Inc., он изначально создавался для обработки и анализа данных на мейнфреймах IBM. Впоследствии были выпущены версии для миникомпьютеров, таких как VAX, и других платформ. Позже FOCUS был адаптирован для персональных компьютеров и (в 1997 году) для Всемирной паутины – продукт WebFOCUS.
the software product
FOCUS is a fourth generation programming language (4GL) computer programming language and development environment that is used to build database queries. Produced by Information Builders Inc., it was originally developed for data handling and analysis on the IBM mainframe. Subsequently versions for minicomputers and such as the VAX and other platforms were implemented. FOCUS was later extended to personal computers and (in 1997) to the World Wide Web: the WebFOCUS product.
Описание
Хотя FOCUS напоминает другие инструменты доступа к данным и анализа, такие как SQL и SAS, он также включает функции отображения и представления отчетов и диаграмм. Он автоматизирует процесс идентификации файлов операционной системой, открытия входного файла, чтения следующей записи, открытия выходного файла, записи следующей записи и закрытия файлов. Эта базовая операция позволяет пользователю/программисту сосредоточиться на деталях работы с данными внутри каждой записи, по сути работая почти полностью в неявном цикле программы, который выполняется для каждой записи, подобно RPG (генератору программ отчетов). Другие процедуры оперируют с набором данных в целом, например, печать или статистический анализ, и требуют от пользователя/программиста лишь указать этот набор данных. По сравнению с языками программирования общего назначения, такая структура позволяет пользователю/программисту меньше разбираться в технических деталях данных и способах их хранения, и больше – в содержащейся в них информации. Это размывает грань между пользователем и программистом, привлекая специалистов, чья деятельность связана с бизнесом или исследованиями, а не с информационными технологиями. В свою очередь, это имеет двойственный эффект: позволяет быстро получать ответы на бизнес- или исследовательские вопросы, даже те, которые требуют нескольких итераций для получения окончательного результата; но также может приводить к созданию большого объема плохо написанного и/или сложного в поддержке исходного кода.
Описание основного файла (MFD)
Уникальной особенностью FOCUS в то время было то, что он предоставлял пользователю возможность создавать файл описания данных (называемый "описанием главного файла"), ссылающийся на фактический файл данных или даже несколько различных файлов описания данных, обращающихся к одному и тому же файлу данных разными способами, в отличие от обычной практики жесткого кодирования структуры файла в программу. Таким образом, файлы любой структуры из любого источника можно было получать или создавать множеством различных способов, что позволяло избежать значительной части манипуляций с данными (например, конкатенации или разбора), которые часто требовались при использовании других, более ранних языков программирования. Например, к одному и тому же фактическому файлу данных можно было получить доступ (для чтения или записи) как к последовательности текстовых строк длиной 80 байт, или как к 40 двузначным числовым полям, или как к 10 восьмибайтовым числам с плавающей точкой и т.д., просто переписав соответствующее описание главного файла по мере необходимости.
WebFOCUS (англ.) (недоступная ссылка)
В 1997 году была представлена веб-версия FOCUS под названием "WebFOCUS", которая основывалась на возможностях доступа к данным и формирования отчетов FOCUS, расширяя их до визуально ориентированной клиентской архитектуры с тонким клиентом, доступной из любого веб-браузера. Язык WebFOCUS имеет как "процедурную", так и "непроцедурную" командную структуру. Первая предназначена для немедленного выполнения, а вторая помещается в стек памяти для последующего выполнения.