4D ( 4th Dimension , или Silver Surfer , как он был известен на ранних этапах разработки) — это реляционная система управления базами данных и интегрированная среда разработки, разработанная Лораном Рибардьером . [3] 4D была создана в 1984 году [4] и имела немного задержанный публичный релиз для Macintosh в 1987 году [5] [6] [7] с собственным языком программирования . [1]
С тех пор линейка продуктов 4D расширилась до SQL back-end , интегрированного компилятора , интеграции PHP и нескольких плагинов и интерфейсов для повышения производительности. Некоторые из плагинов, созданных 4D, включают 4D Write (текстовый процессор), 4D View (что-то вроде электронной таблицы, но с дополнительной функциональностью) и 4D Internet Commands (позволяющий добавлять в базу данных функциональность, связанную с Интернетом). Существует также более 100 сторонних плагинов, бесплатных и коммерческих.
4D также можно использовать в качестве веб-сервера для запуска скомпилированных приложений баз данных.
Сегодня 4D издается французской компанией 4D SAS и имеет продажи, дистрибуцию и поддержку на большинстве основных рынков, причем основными рынками являются США, Великобритания и Франция. Продукт локализован на более чем дюжине языков.
Silver Surfer, как он был известен на ранних этапах разработки, был разработан Лораном Рибардьером в 1984 году. После переговоров с Рибардьером планировалось, что Apple Inc. (ранее Apple Computer Inc) опубликует программное обеспечение, но Apple отменила этот план, как сообщается, из-за давления со стороны других потенциальных издателей баз данных, которые утверждали, что если у Apple будет собственная «брендовая» база данных, сторонние продукты окажутся в невыгодном положении на рынке. [8] В то время Apple пыталась обеспечить поддержку платформы Macintosh известными издателями программного обеспечения, и в результате проект вернулся к Лорану Рибардьеру , который вместе с французской бизнес-леди Мэрилен Дельбур-Дельфис опубликовал 4th Dimension. Хотя издание было независимым, Apple поддержала новое предприятие и широко использовала 4D во всей организации для проектов, включая управление фитнес-центром и CIM (компьютерно-интегрированное производство). Несколько сотрудников Apple стали экспертами по 4D, в том числе Лэнс МакЭндрю из штаб-квартиры Apple в Купертино и Эндрю О'Донохью из европейской производственной штаб-квартиры Apple в Ирландии , где приложение 4th Dimension управляло администрацией Европейского сервисного центра.
В течение следующих нескольких лет установленная база 4th Dimension росла, и издатель ACI основал дочернюю компанию в США под названием ACIUS, изначально возглавляемую Гаем Кавасаки . После 16 лет работы под названием ACIUS до 2000 года название было официально изменено на 4D Inc. [ 9]
В 1993 году была представлена 4D Server v1.1, клиент-серверная версия 4th Dimension, а также выпуск 4th Dimension v3.1. [10]
В 1995 году 4D v3.5 стал кроссплатформенным и с тех пор поддерживает операционные системы Microsoft Windows и Apple Macintosh . [11]
В 1997 году 4D v6 стала первой версией 4D, которая содержала полностью интегрированный веб-сервер, позволяющий разработчикам переводить 4D-формы в HTML «на лету», используя только язык 4D. [12]
В 2004 году 4D 2004 стала первой версией 4D, которая позволила разработчикам создавать автономные клиент-серверные, веб- и сервисно-ориентированные приложения (SOA) без изменения кода. [13]
В 2008 году 4D v11 добавила уровень SQL к ядру базы данных 4D и расширила собственный SQL в языке программирования 4D, что позволило разработчикам 4D писать собственный код SQL для подключения к локальным или удаленным серверам. [14] [15]
В 2010 году 4D v12 интегрировала возможность выполнения функций/скриптов PHP из языка программирования 4D. Эта версия также поддерживала новые команды репликации и синхронизации и включала 64-битную версию 4D Server. [16]
[2]
Приложение 4D может работать как в автономном режиме, так и в режиме клиент-сервер.
В автономном режиме приложение 4D (4D.exe в Windows или 4D.app на Mac) используется для открытия файла структуры (4DB/4DC) напрямую вместе с соответствующим файлом данных (4DD).
В парадигме клиент-сервер приложение 4D Server (4DServer.exe на Windows или 4DServer.app на Mac) используется для открытия файла структуры (4DB/4DC) напрямую вместе с соответствующим файлом данных (4DD). Затем 4D можно использовать в удаленном режиме для подключения к 4D Server.
4D имеет два приложения: 4D и 4D Server. 4D Server работает только как сервер, но 4D может работать как в автономном, так и в удаленном режиме.
4D может работать в двух режимах. 4D в однопользовательском режиме позволяет одному человеку запускать приложение. 4D в удаленном режиме используется для подключения к серверу 4D.
4D Server используется для клиент-серверного подключения к приложению. В этом режиме 4D Server загружает файл структуры (4DB или 4DC), а также файл данных (4DD) и обеспечивает сетевой доступ к 4D (в удаленном режиме). Каждая рабочая станция имеет динамически обновляемый кэш ресурсов, с которыми она работает, в то время как 4D Server обслуживает данные и код.
В этот раздел будут включены примеры синтаксиса, демонстрирующие различные конструкции программирования, используемые в 4D, такие как циклы for и использование переменных.
Поля, переменные и выражения 4D могут иметь следующие типы данных: [18]
Более подробную информацию о типе данных 4D можно найти на странице документации [Типы данных 4D].
Локальные переменные имеют префикс « $
лайк» $myLocalVariable
и существуют только в течение всего времени выполнения метода.
Переменные процесса не имеют префикса myProcessVariable
и существуют на протяжении всего процесса.
Межпроцессные (или глобальные) переменные имеют префикс « <>
лайк» <>myGlobalVariable
и действуют на протяжении всего времени работы приложения.
Для (vCounter;1;100) // Сделай что-нибудьКонец для
$i :=1 // Инициализируем счетчик While($i<=100) // Цикл 100 раз // Сделай что-нибудь $i :=$i +1 // Необходимо увеличить счетчик Конец, пока
$i :=1 // Инициализируем счетчик Повторить // Сделай что-нибудь $i :=$i +1 // Необходимо увеличить счетчик Until($i=100) // Цикл 100 раз
В следующем примере перебираются все элементы двумерного массива:
Для ($vlElem;1;Размер массива(anArray)) // ... // Сделать что-нибудь со строкой // ... Для ($vlSubElem;1;Размер массива (anArray{$vlElem})) // Сделать что-нибудь с элементом anArray{$vlElem}{$vlSubElem}:=... Конец для Конец для
В следующем примере создается массив указателей на все поля дат, присутствующие в базе данных:
УКАЗАТЕЛЬ МАССИВА($apDateFields;0) $vlЭлем:=0 For($vlTable;1;Получить номер последней таблицы) // цикл по каждому номеру таблицы с $vTable в качестве номера Если(Является ли номер таблицы действительным($vlTable)) // проверяем, действителен ли номер таблицы $vTable // цикл только по допустимой таблице For($vlField;1;Получить последний номер поля($vlTable)) // цикл по каждому номеру поля в текущей таблице // с $vlField в качестве текущего номера поля Если(Является ли номер поля допустимым($vlTable;$vlField)) // проверяем, действителен ли номер поля $vpField:=Field($vlTable;$vlField) // получить указатель на поле Если(Тип($vpField->)=Является датой) // проверяем, является ли текущее поле датой // выполняет эти действия только если поле является датой $vlЭлем:=$vlЭлем+1 ВСТАВИТЬ В МАССИВ($apDateFields;$vlElem) $apDateFields{$vlElem}:=$vpField Конец, если Конец Если Конец для Конец Если Конец для