4e Dimension (logiciel) - 4th Dimension (software)

Langage de programmation 4D
Conçu par Laurent Ribardière
Développeur SAS 4D
Première apparition 1984 ; il y a 37 ans (dev) 1987 ; il y a 34 ans (officiel) ( 1984 ) ( 1987 )
Version stable
v18 R5 / 19 janvier 2021 ; il y a 5 mois ( 2021-01-19 )
Version préliminaire
v18 R6 bêta
Langage d'implémentation C, C++
Plate-forme Multiplateforme
Système d'exploitation Windows, macOS
Licence Propriétaire
Extensions de nom de fichier 4DB, 4DC
Formats de fichiers Interprété, Compilé
Site Internet nous .4d .com
4D
Auteur(s) original(aux) Laurent Ribardière
Développeur(s) SAS 4D
Première version 1984 ; il y a 37 ans (ss) 1987 ; il y a 34 ans (v1) ( 1984 ) ( 1987 )
Version stable
v18 R5 / 19 janvier 2021 ; il y a 5 mois ( 2021-01-19 )
Version préliminaire
v18 R6 bêta
Écrit en C++ , C
Système opérateur Windows , Mac OS
Taper Serveur Web de concepteur d'interface graphique de langage RAD RDBMS IDE
Licence Propriétaire
Site Internet nous .4d .com
Serveur 4D
Logo4D.svg
Auteur(s) original(aux) Laurent Ribardière
Développeur(s) SAS 4D
Première version 1993 ; il y a 28 ans (v1) ( 1993 )
Version stable
v18 R5 / 19 janvier 2021 ; il y a 5 mois ( 2021-01-19 )
Version préliminaire
v18 R6 bêta
Écrit en C++ , C
Système opérateur Windows , Mac OS
Taper SGBDR Web Server Application Server SQL Server Database Server Language
Licence Propriétaire
Site Internet nous .4d .com

4D ( 4th Dimension , ou Silver Surfer , comme on l'appelait au début du développement) est un système de gestion de base de données relationnelle et un IDE développé par Laurent Ribardière . 4D a été créé en 1984 et a eu une sortie publique légèrement retardée pour Macintosh en 1987 avec son propre langage de programmation

La gamme de produits 4D s'est depuis étendue à un back-end SQL , un compilateur intégré, l'intégration de PHP et plusieurs plug-ins et interfaces de productivité. Certains des plug-ins créés par 4D incluent 4D Write (un traitement de texte), 4D View (un peu comme un tableur, mais avec des fonctionnalités supplémentaires) et 4D Internet Commands (qui vous permettent d'ajouter toutes sortes de fonctionnalités liées à Internet à une base de données) . Il existe également plus de 100 plugins tiers, gratuits et commerciaux.

4D peut également être utilisé comme serveur Web , pour exécuter des applications de bases de données compilées.

Aujourd'hui, 4D est édité par la société française 4D SAS et est présent dans la vente, la distribution et l'assistance sur la plupart des principaux marchés, les États-Unis, le Royaume-Uni et la France étant les principaux marchés. Le produit est localisé dans plus d'une douzaine de langues, dont l'anglais, le français, l'allemand, le japonais, le tchèque, l'hébreu, l'arabe, le coréen et le persan.

Histoire

Silver Surfer, comme on l'appelait au début du développement, a été développé par Laurent Ribardière en 1984. À la suite de négociations avec Ribardiere, il était prévu qu'Apple Inc. (anciennement Apple Computer Inc) publierait le logiciel, mais Apple a annulé le plan, apparemment en raison de pressions. d'autres éditeurs de bases de données potentiels qui ont affirmé que si Apple avait sa propre base de données de « marques », les produits tiers seraient désavantagés sur le marché. Apple a essayé à l'époque de s'assurer que des éditeurs de logiciels bien connus prennent en charge la plate-forme Macintosh et, par conséquent, le projet est revenu à Laurent Ribardière , qui, avec la femme d'affaires française Marylene Delbourg-Delphis, a publié 4e Dimension. Bien que publié de manière indépendante, Apple a soutenu la nouvelle entreprise et a largement utilisé 4D dans toute l'organisation pour des projets tels que la gestion de centres de fitness et CIM (Computer Integrated Manufacturing). Un certain nombre de membres du personnel d'Apple sont devenus des experts 4D, notamment Lance McAndrew au siège d' Apple à Cupertino et Andrew O'Donoghue au siège de la fabrication européenne d' Apple en Irlande , où une application 4e Dimension gérait l'ensemble de l'administration du centre de service européen.

Au cours des années suivantes, la base installée de 4e Dimension s'est agrandie et l'éditeur ACI a créé une filiale américaine ACIUS, initialement dirigée par Guy Kawasaki . Après 16 ans d'exploitation sous le nom d'ACIUS jusqu'en 2000, le nom a été officiellement changé pour 4D Inc .

En 1993, 4D Server v1.1, la version client/serveur de 4e Dimension a été introduite avec la sortie de 4e Dimension v3.1.

En 1995, 4D v3.5 est devenu multiplateforme et prend depuis lors en charge les systèmes d'exploitation Microsoft Windows et Apple Macintosh .

En 1997, 4D v6 était la première version de 4D à contenir un serveur Web entièrement intégré, permettant aux développeurs de traduire les formulaires 4D en HTML à la volée en utilisant uniquement le langage 4D.

En 2004, 4D 2004 était la première version de 4D à permettre aux développeurs de créer des applications autonomes, client/serveur, Web et orientées services (SOA) sans modifier aucun code.

En 2008, 4D v11 a ajouté une couche SQL au moteur de base de données 4D et étendu le SQL natif au langage de programmation 4D, ce qui a permis aux développeurs 4D d'écrire du code SQL natif pour se connecter à des serveurs locaux ou distants.

En 2010, 4D v12 a intégré la possibilité d'exécuter des fonctions/scripts PHP depuis le langage de programmation 4D. Cette version prenait également en charge les nouvelles commandes de réplication et de synchronisation et incluait une version 64 bits de 4D Server

Historique des versions

Branche Dernière version Première version Version finale Statut févr. 2019 Remarques
v18.x v18.LTS 16 janv. 2020 En cours Prise en charge Bases de données de projet pour le contrôle de version, outils de chiffrement intégrés, 4D pour iOS, 4D Write Pro, 4D View Pro
v17.x v17.4 10 juillet 2018 En cours Prise en charge ORDA (Object Relational Data Access), Collections, Notation d'objets, Formulaires dynamiques
v16.x v16.6 10 janv. 2017 En cours Support terminé le 24 juillet 2019 Nouveau système de gestion de cache, multithreading préemptif, 4D Dev Pro 64 bits
v15R v15R5 10 novembre 2015 14 sept. 2016 Remplacé par 16.x Aperçu des fonctionnalités à intégrer dans la v16.x
v15.x v15.6 16 juil. 2015 25 avr. 2017 Support terminé le 25 avril 2018 Serveur 4D 64 bits pour serveurs Mac ; Nouvelle couche réseau
v14R v14R5 mai 2014 Mars 2015 N'est plus pris en charge aperçu des fonctionnalités à être dans v15.x
v14.x v14.6 12 déc. 2013 20 déc. 2016 N'est plus pris en charge 4D Mobile (Options de connectivité pour 4D Server en tant que source de données pour Wakanda (logiciel) ) ; Objets JSON structurés (C_Object) ; vues SQL ; nouveaux outils de maintenance et de surveillance, nouveau système de journalisation.
v13.x v13.6 14 févr. 2012 18 juin 2015 N'est plus pris en charge Nouveau serveur HTTP multithread ; gestion automatique des sessions ; nouveau client HTTP extensible ; intégration du kit Web et prise en charge étendue de Javascript ; zone de liste enrichie; gestion des documents externes.
v12.x v12.6 3 juin 2010 8 octobre 2013 N'est plus pris en charge Serveur 4D 64 bits pour serveurs Windows ; Intégration PHP ; Synchronisation et réplication
v11.x v11.9 23 sept. 2008 7 juil. 2011 N'est plus pris en charge moteur SQL ; centre de maintenance intégré (MSC) ; gestion SVG; Espace Web intégré
2004.x 2004.8 31 août 2004 30 juin 2009 N'est plus pris en charge Interface repensée ; Intégration de commandes ODBC de haut niveau, 4D Customizer, 4D Backup et 4D Engine
2003.x 2003.8r2 17 mars 2003 11 avril 2006 N'est plus pris en charge XML ; Services Web; Compilateur intégré
v6.8.x 6.8.6 15 avril 2002 24 sept. 2004 N'est plus pris en charge
v6.7.x 6.7.5 N'est plus pris en charge
v6.5.x 18 mai 1999 N'est plus pris en charge
v6.0.x 6.0.5 1997 27 février 1998 N'est plus pris en charge Serveur Web intégré
v3.x N'est plus pris en charge 4D v3.5 était la première version multiplateforme (mac/win),
v1.x 1987 N'est plus pris en charge Mac uniquement

Architecture

Une application 4D peut fonctionner soit en mode Standalone, soit en mode Client-Serveur.

Utilisateur unique

En mode autonome, l'application 4D (4D.exe sous Windows ou 4D.app sous Mac) permet d'ouvrir directement le fichier de structure (4DB/4DC) ainsi que le fichier de données associé (4DD).

Serveur client

Dans le paradigme Client-Serveur, l'application 4D Server (4DServer.exe sous Windows ou 4DServer.app sous Mac) permet d'ouvrir directement le fichier de structure (4DB/4DC) ainsi que le fichier de données associé (4DD). 4D peut ensuite être utilisé en mode distant pour se connecter au 4D Server.

Éditions d'applications

4D a deux applications ; 4D et 4D Serveur. 4D Server fonctionne uniquement en tant que serveur mais 4D peut être exécuté en mode autonome ou distant.

4D

4D peut être exécuté en deux modes. 4D en mode mono-utilisateur permet à 1 personne d'exécuter l'application. 4D en mode distant est utilisé pour se connecter à un 4D Server.

Serveur 4D

4D Server est utilisé pour la connectivité Client-Serveur à l'application. Dans ce mode, 4D Server charge le fichier de structure (4DB ou 4DC) ainsi que le fichier de données (4DD) et fournit un accès réseau à 4D (en distant). Chaque poste de travail dispose d'un cache mis à jour dynamiquement des ressources avec lesquelles il travaille, tandis que 4D Server conserve les données et le code.

Syntaxe

Cette section comprendra des exemples de syntaxe démontrant différentes constructions de programmation utilisées dans 4D, telles que les boucles for et l'utilisation des variables.

Types de données

Les champs, variables et expressions 4D peuvent être des types de données suivants :

Type de données Domaine Variable Expression
Chaîne Oui Oui Oui
Nombre (double) Oui Oui Oui
Date Oui Oui Oui
Temps Oui Oui Oui
booléen Oui Oui Oui
Photo Oui Oui Oui
Aiguille Non Oui Oui
GOUTTE Oui Oui Non
Déployer Non Oui Non
Entier 64 bits Oui Non Non
Flotter Oui Non Non
Objet Oui Oui Oui
Indéfini Non Oui Oui

Vous trouverez plus d'informations sur le type de données 4D sur la page de documentation Types de données 4D

Portée variable

Les variables locales sont préfixées par un $like $myLocalVariableet ne vivent que pendant la durée de la méthode.

Les variables de processus n'ont pas de préfixe comme myProcessVariableet vivent pendant toute la durée du processus.

Les variables inter-processus (ou globales) sont préfixées par un <>like <>myGlobalVariableet vivent pendant toute la durée de l'application.

Comparaison de bouclage

Pour

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

Pendant que

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

Répéter

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

Optimisation des boucles

Vous pouvez utiliser des variables Real, Integer et Long Integer ainsi que des compteurs de variables inter-processus, processus et locaux. Pour les longues boucles répétitives, en particulier en mode compilé, utilisez des variables locales de type entier long.

Voici un exemple:

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

Boucles imbriquées

L'exemple suivant passe en revue tous les éléments d'un tableau à deux dimensions :

 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

L'exemple suivant crée un tableau de pointeurs vers tous les champs de date présents dans la base de données :

 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

Les références

Liens externes