4e Dimension (logiciel) - 4th Dimension (software)
Conçu par | Laurent Ribardière |
---|---|
Développeur | SAS 4D |
Première apparition | 1984 | (dev) 1987 (officiel)
Version stable | v18 R5 / 19 janvier 2021
|
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 |
Auteur(s) original(aux) | Laurent Ribardière |
---|---|
Développeur(s) | SAS 4D |
Première version | 1984 | (ss) 1987 (v1)
Version stable | v18 R5 / 19 janvier 2021
|
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 |
Auteur(s) original(aux) | Laurent Ribardière |
---|---|
Développeur(s) | SAS 4D |
Première version | 1993 | (v1)
Version stable | v18 R5 / 19 janvier 2021
|
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 ( 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 $myLocalVariable
et ne vivent que pendant la durée de la méthode.
Les variables de processus n'ont pas de préfixe comme myProcessVariable
et vivent pendant toute la durée du processus.
Les variables inter-processus (ou globales) sont préfixées par un <>
like <>myGlobalVariable
et 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
- Site officiel
- Documentation 4D ( statique & live )
- Base de connaissances 4D
- 4e Dimension (logiciel) chez Curlie
- Base de données 4D sur Stack Overflow
- Archive de la liste de diffusion 4d-tech