4th Dimension

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 15:08, 26 января 2018.
4D Server
Logo4D.jpg
Создатели: Laurent Ribardière
Разработчики: 4D SAS
Выпущена: 1993; 26 years ago (1993) (v1)
Постоянный выпуск: 16.0 / 10 January 2017 года; 2 years ago (2017-01-10)
Предыдущий выпуск: 16R2 / 28 March 2017 года; 2 years ago (2017-03-28)
Состояние разработки: Активный
Написана на: C++, C
Операционная система: Windows, Mac OS
Тип ПО: RDBMS Web Server Application Server SQL Server Database Server Language
Лицензия: Проприетарная
Веб-сайт www.4d.com

4D (4th Dimension, а также Silver Surfer) — представляет собой систему управления реляционными базами данных и IDE, разработанную Лораном Рибардьером. 4D был создан в 1984 году и имел несколько задержанный публичный релиз для Macintosh в 1987 году со своим собственным языком программирования.

С тех пор линейка продуктов 4D расширилась до внутреннего интегрированного компилятора SQL, интеграции PHP и нескольких модулей расширения и интерфейсов. Некоторые из плагинов, созданных 4D, включают в себя 4D Write (текстовый процессор), 4D Draw (для рисования фигур), 4D View (несколько похожий на электронную таблицу, но с дополнительной функциональностью) и 4D Internet Commands (которые позволяют добавлять все виды функциональности, связанной с Интернетом, к базе данных). Есть также более 100 сторонних плагинов, как свободных, так и коммерческих.

4D также может использоваться как веб-сервер для запуска скомпилированных приложений баз данных.

Сегодня 4D публикуется французской компанией 4D SAS и имеет продажи, дистрибуцию и поддержку на большинстве основных рынков, причем основными рынками являются США, Великобритания и Франция. Продукт локализован на более чем десяти языках, включая английский, французский, немецкий, японский, иврит, арабский, корейский и персидский.[Источник 1]

Архитектура

Приложение 4D может работать как в автономном режиме, так и в режиме клиент-сервер.

Одиночный пользователь

В автономном режиме приложение 4D (4D.exe для Windows или 4D.app на Mac) используется для открытия структурного файла (4DB / 4DC) непосредственно вместе с соответствующим файлом данных (4DD).

Клиент-сервер

В парадигме клиент-сервер приложение 4D Server (4DServer.exe для Windows или 4DServer.app на Mac) используется для открытия структурного файла (4DB / 4DC) непосредственно вместе с соответствующим файлом данных (4DD). 4D может затем использоваться в удаленном режиме для подключения к 4D-серверу.

Издание приложения

4D имеет два приложения; 4D и 4D Server. Сервер 4D работает только как сервер, но 4D можно запускать в автономном или удаленном режиме.

4D

4D можно запускать в двух режимах. 4D в однопользовательском режиме позволяет 1 человеку запускать приложение. 4D в удаленном режиме используется для подключения к серверу 4D.

4D Server

4D Server используется для подключения к серверу Client-Server. В этом режиме сервер 4D загружает файл структуры (4DB или 4DC), а также файл данных (4DD) и обеспечивает сетевой доступ к 4D (удаленно). Каждая рабочая станция имеет динамически обновляемый кэш ресурсов, с которыми они работают, а 4D-сервер поддерживает данные и код.

Синтаксис

Раздел содержит примеры синтаксиса, демонстрирующие различные конструкции программирования, используемые в 4D, например, для циклов и использования переменных.

Типы данных

Поля 4D, переменные и выражения могут иметь следующие типы данных: [Источник 2]

Тип данных Поле Переменная Выражение
Строка Да Да Да
Число (двоичное) Да Да Да
Дата Да Да Да
Время Да Да Да
Булевые Да Да Да
Изображение Да Да Да
Указатель Нет Да Да
BLOB Да Да Нет
Массив Нет Да Нет
Целочисленные 64 бита Да Нет Нет
Плавающие Да Нет Нет
Объект Да Да Да
Неопределенный Нет Да Да

Более подробную информацию о типе данных 4D можно найти на странице документации 4D Типы данных

Переменная область

Локальные переменные имеют префикс $, например $ myLocalVariable, и существуют только в течение метода.

Переменные процесса не имеют префикса типа myProcessVariable и существуют в течение всего процесса.

Переменные Inter-process (глобальные) имеют префикс <>, например <> myGlobalVariable, и существуют в течение работы приложения.

Сравнение циклов

For

For(vCounter;1;100)
  // Что-нибудь выполнить
End for

While

 $i :=1 // Инициализация счётчика
 While($i<=100) // Пройти 100 раз
  // Что-нибудь выполнить
    $i :=$i +1 // Увеличить счётчик
 End while

Repeat

 $i :=1 // Инициализация счётчика
 Repeat
  // Что-нибудь выполнить
    $i :=$i +1 // Увеличение счётчика
 Until($i=100) // Loop 100 times

Оптимизация циклов

Можно использовать переменные Real, Integer и Long Integer, а также межпроцессные, процессные и локальные счетчики переменных. Для длинных повторяющихся циклов, особенно в скомпилированном режиме, рекомендуется использовать локальные переменные Long Integer.

Пример:

 C_LONGINT($vlCounter) // Использование переменных типа Long Integer
 For($vlCounter;1;10000)
  // Что-нибудь выполнить
 End for

Вложенные циклы

Следующий пример проходит через все элементы двумерного массива:

 For($vlElem;1;Size of array(anArray))
  // ...
  // Сделать что-нибудь со строкой
  // ...
    For($vlSubElem;1;Size of array(anArray{$vlElem}))
       // Выполнить действие над элементом
       anArray{$vlElem}{$vlSubElem}:=...
    End for
 End for

В следующем примере создается массив указателей ко всем полям данных, присутствующих в базе данных:

 ARRAY POINTER($apDateFields;0)
 $vlElem:=0
 For($vlTable;1;Get last table number)
   // Цикл по каждому номеру таблицы с $vTable в качестве номера
    If(Is table number valid($vlTable)) 
      // Проверить правильность $vTable
      // Выполнить цикл только в нужной таблице
       For($vlField;1;Get last field number($vlTable)) 
         // Цикл по каждому номеру поля в текущей таблице
         // с $vlField в качестве номера текущего поля
          If(Is field number valid($vlTable;$vlField))
            // Проверка правильности номера поля
             $vpField:=Field($vlTable;$vlField) // Получить указатель на поле
             If(Type($vpField->)=Is date) 
               // Проверка является ли текущее поле датой
               // Выполняются только эти действия, если поле является датой
                $vlElem:=$vlElem+1
                INSERT IN ARRAY($apDateFields;$vlElem)
                $apDateFields{$vlElem}:=$vpField
             End if
          End If
       End for
    End If
 End for

Источники

  1. 4th Dimension (software) // wikipedia.org. URL: https://en.wikipedia.org/wiki/4th_Dimension_(software) (дата обращения: 25.01.2018)
  2. 4D Doc Center // 4d.com. URL: http://doc.4d.com/4Dv15R3/4D/15-R3/Data-Types.300-2695014.en.html (дата обращения: 25.01.2018)

Ссылки