4:e dimensionen (mjukvara)

4D programmeringsspråk
Designad av Laurent Ribardière
Utvecklare 4D SAS
Dök först upp 1984 ; 39 år sedan ( 1984 ) (dev) 1987 ; 36 år sedan ( 1987 ) (officiell)
Stabil frisättning
v18 R5 / 19 januari 2021 ; för 2 år sedan ( 2021-01-19 )
Förhandsgranska release
v18 R6 Beta
Implementeringsspråk C, C++
Plattform Cross-Plattform
OS Windows, macOS
Licens Proprietär
Filnamnstillägg 4DB, 4DC
Filformat Tolkad, sammanställd
Hemsida oss .4d .com
4D
Originalförfattare Laurent Ribardière
Utvecklare 4D SAS
Initial release 1984 ; 39 år sedan ( 1984 ) (ss) 1987 ; 36 år sedan ( 1987 ) (v1)
Stabil frisättning
v18 R5 / 19 januari 2021 ; för 2 år sedan ( 2021-01-19 )
Förhandsgranska release
v18 R6 Beta
Skrivet i C++ , C
Operativ system Windows , Mac OS
Typ RAD RDBMS IDE Language GUI Designer Web Server
Licens Proprietär
Hemsida oss .4d .com
4D-server
Originalförfattare Laurent Ribardière
Utvecklare 4D SAS
Initial release 1993 ; 30 år sedan ( 1993 ) (v1)
Stabil frisättning
v18 R5 / 19 januari 2021 ; för 2 år sedan ( 2021-01-19 )
Förhandsgranska release
v18 R6 Beta
Skrivet i C++ , C
Operativ system Windows , Mac OS
Typ RDBMS Web Server Application Server SQL Server Databas Server Language
Licens Proprietär
Hemsida oss .4d .com

4D ( 4th Dimension , eller Silver Surfer , som det var känt under tidig utveckling) är ett relationsdatabashanteringssystem och IDE utvecklat av Laurent Ribardière . 4D skapades 1984 och fick en något försenad offentlig release för Macintosh 1987 med sitt eget programmeringsspråk .

4D-produktlinjen har sedan dess utökats till en SQL -backend , integrerad kompilator , integration av PHP och flera produktivitetsplugin-program och gränssnitt. Några av plugin-programmen som skapats av 4D inkluderar 4D Write (en ordbehandlare), 4D View (något som ett kalkylblad, men med extra funktionalitet) och 4D Internetkommandon (som gjorde det möjligt att lägga till Internet-relaterad funktionalitet till en databas) . Det finns också över 100 plugins från tredje part, gratis och kommersiella.

4D kan också användas som en webbserver för att köra kompilerade databasapplikationer.

Idag publiceras 4D av det franska företaget 4D SAS och har en försäljnings-, distributions- och supportnärvaro på de flesta större marknader, där USA, Storbritannien och Frankrike är de primära marknaderna. Produkten är lokaliserad på mer än ett dussin språk.

Historia

Silver Surfer, som den kallades under tidig utveckling, utvecklades av Laurent Ribardière 1984. Efter förhandlingar med Ribardiere var det planerat att Apple Inc. (tidigare Apple Computer Inc) skulle publicera programvaran men Apple avbröt planen, enligt uppgift på grund av press från andra potentiella databasutgivare som hävdade att om Apple hade sin egen "varumärkes"-databas skulle tredjepartsprodukter missgynnas på marknaden. Apple försökte på den tiden säkerställa att välkända programutgivare stödde Macintosh-plattformen, och som ett resultat återgick projektet till Laurent Ribardière , som tillsammans med den franska affärskvinnan Marylene Delbourg-Delphis publicerade 4th Dimension. Även om det publicerades oberoende stödde Apple det nya företaget och använde 4D i stor utsträckning i hela organisationen för projekt, inklusive fitnesscenterledning och CIM (Computer Integrated Manufacturing). Ett antal Apple-personal blev 4D-experter, inklusive Lance McAndrew i Apples Cupertino- huvudkontor och Andrew O'Donoghue i Apples Irland -baserade europeiska tillverkningshögkvarter, där en 4th Dimension-applikation skötte administrationen av det europeiska servicecentret.

Under de närmaste åren växte 4th Dimensions installerade bas, och utgivaren ACI etablerade ett USA-baserat dotterbolag som heter ACIUS, ursprungligen ledd av Guy Kawasaki . Efter 16 års verksamhet som ACIUS fram till 2000 ändrades namnet officiellt till 4D Inc.

1993 introducerades 4D Server v1.1, klient/serverversionen av 4th Dimension tillsammans med releasen av 4th Dimension v3.1.

1995 gick 4D v3.5 över plattformar och har sedan dess stöttat både Microsoft Windows och Apple Macintosh operativsystem.

1997 var 4D v6 den första versionen av 4D som innehöll en helt integrerad webbserver, vilket gjorde det möjligt för utvecklare att översätta 4D-formulär till HTML i farten med enbart 4D-språket.

2004 var 4D 2004 den första versionen av 4D som gjorde det möjligt för utvecklare att skapa fristående, klient/server-, webb- och Service Oriented Applications (SOA) utan att ändra någon kod.

Under 2008 lade 4D v11 till ett SQL-lager till 4D-databasmotorn och utökade inbyggd SQL till 4D-programmeringsspråket, vilket gjorde det möjligt för 4D-utvecklare att skriva inbyggd SQL-kod för att ansluta till antingen lokala eller fjärrservrar.

Under 2010 integrerade 4D v12 möjligheten att exekvera PHP-funktioner/skript från 4D-programmeringsspråket. Denna version stödde också nya replikerings- och synkroniseringskommandon och inkluderade en 64-bitarsversion av 4D Server.

Versionshistorik

Gren Senaste versionen Initial release Slutlig utgåva Status februari 2022 Anteckningar
v19.x v19.LTS 12 juli 2021 Pågående Stöds Inbyggt stöd för Apple Silicon, klasser
v18.x v18.LTS 16 januari 2020 Pågående Stöds Projektdatabaser för versionskontroll, inbyggda krypteringsverktyg, 4D för iOS, 4D Write Pro, 4D View Pro
v17.x v17.4 10 juli 2018
13 december 2020 (4D v17.5)
Supporten upphörde 13 december 2020 ORDA (Object Relational Data Access), Samlingar, Objektnotation, Dynamiska formulär
v16.x v16.6 10 januari 2017
24 juli 2019 (4D v16.6)
Supporten upphörde 24 juli 2019 Nytt cachehanteringssystem, Preemptive Multithreading, 4D Dev Pro 64 bitar
v15R v15R5 10 november 2015 14 september 2016 Ersatt av 16.x Förhandsgranskning av funktioner som ska finnas i v16.x
v15.x v15.6 16 juli 2015 25 april 2017 Supporten avslutades 25 april 2018 64-bitars 4D-server för Mac-servrar; Nytt nätverkslager
v14R v14R5 maj 2014 mars 2015 Stöds inte längre förhandsgranskning av funktioner som ska finnas i v15.x
v14.x v14.6 12 december 2013 20 december 2016 Stöds inte längre 4D Mobile (Anslutningsalternativ för 4D Server som en datakälla för Wakanda (mjukvara) ) ; Strukturerade JSON-objekt (C_Object); SQL-vyer; nya verktyg för underhåll och övervakning, nytt journalsystem.
v13.x v13.6 14 februari 2012 18 juni 2015 Stöds inte längre Ny flertrådad HTTP-server; automatisk sessionshantering; ny utbyggbar HTTP-klient; webkit-integration och utökat Javascript-stöd; berikad listruta; extern dokumenthantering.
v12.x v12.6 3 juni 2010 8 oktober 2013 Stöds inte längre 64-bitars 4D-server för Windows-servrar; PHP integration; Synkronisering och replikering
v11.x v11.9 23 september 2008 7 juli 2011 Stöds inte längre SQL-motor; integrerat underhållscenter (MSC); SVG-hantering; Integrerat webbområde
2004.x 2004.8 31 augusti 2004 30 juni 2009 Stöds inte längre Förnyat gränssnitt; Integrering av ODBC-kommandon på hög nivå, 4D Customizer, 4D Backup och 4D Engine
2003.x 2003.8r2 17 mars 2003 11 april 2006 Stöds inte längre XML; Webbservice; Inbäddad kompilator
v6.8.x 6.8.6 15 april 2002 24 september 2004 Stöds inte längre
v6.7.x 6.7.5 Stöds inte längre
v6.5.x 18 maj 1999 Stöds inte längre
v6.0.x 6.0.5 1997 27 februari 1998 Stöds inte längre Integrerad webbserver
v3.x Stöds inte längre 4D v3.5 var den första plattformsoberoende versionen (mac/win),
v1.x 1987 Stöds inte längre Endast Mac

Arkitektur

En 4D-applikation kan köras i antingen fristående läge eller klient-serverläge.

Enanvändare

I fristående läge används 4D-applikationen (4D.exe på Windows eller 4D.app på Mac) för att öppna strukturfilen (4DB/4DC) direkt tillsammans med den tillhörande datafilen (4DD).

Klient-server

I Client-Server-paradigmet används 4D Server-applikationen (4DServer.exe på Windows eller 4DServer.app på Mac) för att öppna strukturfilen (4DB/4DC)-filen direkt tillsammans med den tillhörande datafilen (4DD). 4D kan sedan användas i fjärrläge för att ansluta till 4D-servern.

Application Editions

4D har två applikationer; 4D- och 4D-server. 4D Server körs endast som en server men 4D kan köras i antingen fristående eller fjärrläge.

4D

4D kan köras i två lägen. 4D i enanvändarläge tillåter 1 person att köra applikationen. 4D i fjärrläge används för att ansluta till en 4D-server.

4D-server

4D Server används för klient-server-anslutning till applikationen. I det här läget laddar 4D Server strukturfilen (4DB eller 4DC) och även datafilen (4DD) och ger nätverksåtkomst till 4D (i fjärrkontrollen). Varje arbetsstation har en dynamiskt uppdaterad cache för resurserna de arbetar med, medan 4D-servern underhåller data och kod.

Syntax

Det här avsnittet kommer att innehålla syntaxexempel som visar olika programmeringskonstruktioner som används i 4D, till exempel för loopar och variabel användning.

Datatyper

4D-fält, variabler och uttryck kan vara av följande datatyper:

Data typ Fält Variabel Uttryck
Sträng Ja Ja Ja
Antal (dubbel) Ja Ja Ja
Datum Ja Ja Ja
Tid Ja Ja Ja
Boolean Ja Ja Ja
Bild Ja Ja Ja
Pekare Nej Ja Ja
KLICK Ja Ja Nej
Array Nej Ja Nej
Heltal 64 bitar Ja Nej Nej
Flyta Ja Nej Nej
Objekt Ja Ja Ja
Samling Ja Ja Ja
Odefinierad Nej Ja Ja

Mer information om 4D-datatyp finns på dokumentationssidan [ 4D Data Types]

Variabelt omfattning

Lokala variabler har prefixet med en $ som $myLocalVariable och lever endast under hela metoden.

Processvariabler har inget prefix som myProcessVariable och lever under hela processens varaktighet.

Interprocessvariabler (eller globala) har prefixet <> som <>myGlobalVariable och lever under hela programmets varaktighet.

Jämförelse av looping

För

For(vCounter;1;100) // Gör något Sluta för

Medan

$i :=1 // Initiera räknaren While($i<=100) // Loopa 100 gånger // Gör något $i :=$i +1 // Behöver öka räknaren End while

Upprepa

$i :=1 // Initiera räknaren Upprepa // Gör något $i :=$i +1 // Behöver öka räknaren tills($i=100) // Loop 100 gånger

Kapslade loopar

Följande exempel går igenom alla element i en tvådimensionell array:

For($vlElem;1;Size of array(anArray)) // ... // Gör något med raden // ... For($vlSubElem;1;Size of array(anArray{$vlElem})) / / Gör något med elementet anArray{$vlElem}{$vlSubElem}:=... Slut för Slut för

Följande exempel bygger en array av pekare till alla datumfält som finns i databasen:

ARRAY POINTER($apDateFields;0) $vlElem:=0 For($vlTable;1;Hämta sista tabellnummer) // slinga över varje tabellnummer med $vTable som nummer If(Är tabellnumret giltigt($vlTable)) / / kontrollera om tabellnummer $vTable är giltigt // endast loop på den giltiga tabellen For($vlField;1;Hämta sista fältnummer($vlTable)) // loop över varje fältnummer i aktuell tabell // med $vlField som aktuellt fältnummer If(Är fältnumret giltigt($vlTable;$vlField)) // kontrollera om fältnumret är giltigt $vpField:=Field($vlTable;$vlField) // få pekare till fältet If(Type($vpField- >)=Är datum) // kontrollera om det aktuella fältet är ett datum // utför endast dessa åtgärder om fältet är ett datum $vlElem:=$vlElem+1 INSERT I ARRAY($apDateFields;$vlElem) $apDateFields{$vlElem} :=$vpField End if End If End for End If End för

externa länkar