4-е измерение (программное обеспечение) - 4th Dimension (software)

4D язык программирования
Разработано Лоран Рибардиер
Разработчик 4D SAS
Впервые появился 1984 ; 37 лет назад (разработчик) 1987 ; 34 года назад (официальный) ( 1984 ) ( 1987 )
Стабильный выпуск
v18 R5 / 19 января 2021 г . ; 5 месяцев назад ( 2021-01-19 )
Предварительный выпуск
v18 R6 Бета
Язык реализации C, C ++
Платформа Кроссплатформенность
Операционные системы Windows, macOS
Лицензия Проприетарный
Расширения имени файла 4ДБ, 4ДК
Форматы файлов Интерпретировано, составлено
Веб-сайт нас .4d .com
4D
Автор (ы) оригинала Лоран Рибардиер
Разработчики) 4D SAS
Первый выпуск 1984 ; 37 лет назад (сс) 1987 г . ; 34 года назад (v1) ( 1984 ) ( 1987 )
Стабильный выпуск
v18 R5 / 19 января 2021 г . ; 5 месяцев назад ( 2021-01-19 )
Предварительный выпуск
v18 R6 Бета
Написано в C ++ , C
Операционная система Windows , Mac OS
Тип RAD RDBMS IDE Language GUI Designer Веб-сервер
Лицензия Проприетарный
Веб-сайт нас .4d .com
4D Сервер
Logo4D.svg
Автор (ы) оригинала Лоран Рибардиер
Разработчики) 4D SAS
Первый выпуск 1993 ; 28 лет назад (v1) ( 1993 )
Стабильный выпуск
v18 R5 / 19 января 2021 г . ; 5 месяцев назад ( 2021-01-19 )
Предварительный выпуск
v18 R6 Бета
Написано в C ++ , C
Операционная система Windows , Mac OS
Тип РСУБД Веб-сервер Сервер приложений Сервер базы данных SQL Server Язык
Лицензия Проприетарный
Веб-сайт нас .4d .com

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

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

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

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

История

Silver Surfer, как его называли во время ранней разработки, был разработан Лораном Рибардьером в 1984 году. После переговоров с Рибардьер планировалось, что Apple Inc. (ранее Apple Computer Inc.) опубликует программное обеспечение, но Apple отменила план, как сообщается, из-за давления. от других потенциальных издателей баз данных, которые утверждали, что если бы у Apple была собственная база данных «брендов», продукты сторонних производителей оказались бы в невыгодном положении на рынке. В то время Apple пыталась гарантировать, что известные издатели программного обеспечения поддерживают платформу Macintosh, и в результате проект вернулся к Лорану Рибардье , который вместе с французской бизнес- леди Мэрилен Дельбур-Дельфис опубликовал 4th Dimension. Несмотря на независимую публикацию, Apple поддержала новое предприятие и широко использовала 4D во всей организации для проектов, включая управление фитнес-центрами и CIM (Computer Integrated Manufacturing). Ряд сотрудников Apple стали экспертами по 4D, в том числе Лэнс МакЭндрю из штаб-квартиры Apple в Купертино и Эндрю О'Донохью из ирландской производственной штаб-квартиры Apple в Европе, где приложение 4th Dimension управляло всей администрацией Европейского сервисного центра.

В течение следующих нескольких лет установленная база 4th Dimension росла, и издатель ACI основал дочернюю компанию ACIUS в США, которую первоначально возглавлял Гай Кавасаки . После 16 лет работы в качестве ACIUS до 2000 года название было официально изменено на 4D Inc .

В 1993 г. был представлен 4D Server v1.1, клиент-серверная версия 4th Dimension, а также выпуск 4th Dimension v3.1.

В 1995 году 4D v3.5 стала кроссплатформенной и с тех пор поддерживает операционные системы Microsoft Windows и Apple Macintosh .

В 1997 году 4D v6 была первой версией 4D, которая содержала полностью интегрированный веб-сервер, позволяющий разработчикам переводить формы 4D в HTML на лету, используя только язык 4D.

В 2004 году 4D 2004 была первой версией 4D, которая позволила разработчикам создавать автономные, клиент-серверные, веб-приложения и сервис-ориентированные приложения (SOA) без изменения кода.

В 2008 году 4D v11 добавила уровень SQL в ядро ​​базы данных 4D и расширила собственный SQL до языка программирования 4D, что позволило разработчикам 4D писать собственный код SQL для подключения к локальным или удаленным серверам.

В 2010 году в 4D v12 была интегрирована возможность выполнять функции / сценарии PHP из языка программирования 4D. Эта версия также поддерживала новые команды репликации и синхронизации и включала 64-битную версию 4D Server.

История версий

Ветка Последняя версия Первый выпуск Окончательный релиз По состоянию на февраль 2019 г. Заметки
v18.x v18.LTS 16 янв.2020 г. Непрерывный Поддерживается Базы данных проекта для контроля версий, встроенные инструменты шифрования, 4D для iOS, 4D Write Pro, 4D View Pro
v17.x v17.4 10 июля 2018 г. Непрерывный Поддерживается ORDA (объектно-реляционный доступ к данным), коллекции, объектная нотация, динамические формы
v16.x v16.6 10 янв 2017 Непрерывный Поддержка закончилась 24 июля 2019 г. Новая система управления кешем, вытесняющая многопоточность, 4D Dev Pro, 64-разрядная версия
v15R v15R5 10 ноя 2015 14 сен 2016 Заменено версией 16.x Предварительный просмотр функций, которые будут в v16.x
v15.x v15.6 16 июл 2015 25 апреля 2017 Поддержка закончилась 25 апреля 2018 г. 64-битный 4D-сервер для серверов Mac; Новый сетевой уровень
v14R v14R5 Май 2014 г. Март 2015 г. Больше не поддерживается предварительный просмотр функций, которые будут в v15.x
v14.x v14.6 12 декабря 2013 г. 20 декабря 2016 Больше не поддерживается 4D Mobile (варианты подключения для 4D Server в качестве источника данных для Wakanda (программное обеспечение) ); Структурированные объекты JSON (C_Object); Представления SQL; новые инструменты для обслуживания и мониторинга, новая система журналов.
v13.x v13.6 14 февраля 2012 г. 18 июн 2015 Больше не поддерживается Новый многопоточный HTTP-сервер; автоматическое управление сессией; новый расширяемый HTTP-клиент; интеграция с webkit и расширенная поддержка Javascript; расширенный список; внешний документооборот.
v12.x v12.6 3 июн 2010 8 октября 2013 г. Больше не поддерживается 64-битный 4D-сервер для серверов Windows; Интеграция с PHP; Синхронизация и репликация
v11.x v11.9 23 сен 2008 7 июл 2011 Больше не поддерживается Движок SQL; комплексный центр технического обслуживания (MSC); Управление SVG; Интегрированная веб-область
2004.x 2004,8 31 августа 2004 г. 30 июня 2009 г. Больше не поддерживается Обновленный интерфейс; Интеграция высокоуровневых команд ODBC, 4D Customizer, 4D Backup и 4D Engine
2003.x 2003.8r2 17 марта 2003 г. 11 апреля 2006 г. Больше не поддерживается XML; Веб-службы; Встроенный компилятор
v6.8.x 6.8.6 15 апреля 2002 г. 24 сен 2004 Больше не поддерживается
v6.7.x 6.7.5 Больше не поддерживается
v6.5.x 18 мая 1999 г. Больше не поддерживается
v6.0.x 6.0.5 1997 г. 27 февраля 1998 г. Больше не поддерживается Встроенный веб-сервер
v3.x Больше не поддерживается 4D v3.5 была первой кроссплатформенной версией (mac / win),
v1.x 1987 г. Больше не поддерживается Только Mac

Архитектура

Приложение 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 Сервер. 4D Server работает только как сервер, но 4D может работать как в автономном, так и в удаленном режиме.

4D

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

4D Сервер

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

Синтаксис

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

Типы данных

Поля, переменные и выражения 4D могут быть следующих типов данных:

Тип данных Поле Переменная Выражение
Нить да да да
Номер (двойной) да да да
Дата да да да
Время да да да
Логический да да да
Картина да да да
Указатель Нет да да
BLOB да да Нет
Множество Нет да Нет
Целое число 64 бита да Нет Нет
Плавать да Нет Нет
Объект да да да
Неопределенный Нет да да

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

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

Локальные переменные имеют префикс $like $myLocalVariableи действуют только на время действия метода.

Переменные процесса не имеют префикса like myProcessVariableи действуют на протяжении всего процесса.

Межпроцессные (или глобальные) переменные имеют префикс <>Like <>myGlobalVariableи действуют на протяжении всего приложения.

Сравнение зацикливания

Для

For(vCounter;1;100)
  // Do something
End for

Пока

 $i :=1 // Initialize the counter
 While($i<=100) // Loop 100 times
  // Do something
    $i :=$i +1 // Need to increment the counter
 End while

Повторить

 $i :=1 // Initialize the counter
 Repeat
  // Do something
    $i :=$i +1 // Need to increment the counter
 Until($i=100) // Loop 100 times

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

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

Вот пример:

 C_LONGINT($vlCounter) // use local Long Integer variables
 For($vlCounter;1;10000)
  // Do something
 End for

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

В следующем примере рассматриваются все элементы двумерного массива:

 For($vlElem;1;Size of array(anArray))
  // ...
  // Do something with the row
  // ...
    For($vlSubElem;1;Size of array(anArray{$vlElem}))
       // Do something with the element
       anArray{$vlElem}{$vlSubElem}:=...
    End for
 End for

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

 ARRAY POINTER($apDateFields;0)
 $vlElem:=0
 For($vlTable;1;Get last table number)
   // loop over each table number with $vTable as the number
    If(Is table number valid($vlTable)) 
      // check if table number $vTable is valid
      // only loop on the valid table 
       For($vlField;1;Get last field number($vlTable)) 
         // loop over each field number within current table 
         // with $vlField as the current field number
          If(Is field number valid($vlTable;$vlField))
            // check if field number is valid
             $vpField:=Field($vlTable;$vlField) // get pointer to field
             If(Type($vpField->)=Is date) 
               // check if current field is a date
               // only performs these actions if field is a date
                $vlElem:=$vlElem+1
                INSERT IN ARRAY($apDateFields;$vlElem)
                $apDateFields{$vlElem}:=$vpField
             End if
          End If
       End for
    End If
 End for

Рекомендации

Внешние ссылки