4ª Dimensão (software) - 4th Dimension (software)

Linguagem de programação 4D
Projetado por Laurent Ribardière
Desenvolvedor 4D SAS
Apareceu pela primeira vez 1984 ; 37 anos atrás (dev) 1987 ; 34 anos atrás (oficial) ( 1984 ) ( 1987 )
Versão estável
v18 R5 / 19 de janeiro de 2021 ; 5 meses atrás ( 2021-01-19 )
Versão de visualização
v18 R6 Beta
Linguagem de implementação C, C ++
Plataforma Multiplataforma
SO Windows, macOS
Licença Proprietário
Extensões de nome de arquivo 4DB, 4DC
Formatos de arquivo Interpretado, Compilado
Local na rede Internet us .4d .com
4D
Autor (es) original (is) Laurent Ribardière
Desenvolvedor (s) 4D SAS
lançamento inicial 1984 ; 37 anos atrás (ss) 1987 ; 34 anos atrás (v1) ( 1984 ) ( 1987 )
Versão estável
v18 R5 / 19 de janeiro de 2021 ; 5 meses atrás ( 2021-01-19 )
Versão de visualização
v18 R6 Beta
Escrito em C ++ , C
Sistema operacional Windows , Mac OS
Modelo RAD RDBMS IDE Language GUI Designer Web Server
Licença Proprietário
Local na rede Internet us .4d .com
4D Server
Logo4D.svg
Autor (es) original (is) Laurent Ribardière
Desenvolvedor (s) 4D SAS
lançamento inicial 1993 ; 28 anos atrás (v1) ( 1993 )
Versão estável
v18 R5 / 19 de janeiro de 2021 ; 5 meses atrás ( 2021-01-19 )
Versão de visualização
v18 R6 Beta
Escrito em C ++ , C
Sistema operacional Windows , Mac OS
Modelo Servidor de aplicativos RDBMS Web Server Servidor de banco de dados SQL Server Idioma do servidor
Licença Proprietário
Local na rede Internet us .4d .com

4D ( 4th Dimension , ou Silver Surfer , como era conhecido durante o desenvolvimento inicial) é um sistema de gerenciamento de banco de dados relacional e IDE desenvolvido por Laurent Ribardière . 4D foi criado em 1984 e teve um lançamento público ligeiramente atrasado para Macintosh em 1987 com sua própria linguagem de programação

Desde então, a linha de produtos 4D se expandiu para um back-end SQL , compilador integrado, integração de PHP e vários plug-ins e interfaces de produtividade. Alguns dos plug-ins criados por 4D incluem 4D Write (um processador de texto), 4D View (algo como uma planilha, mas com funcionalidade extra) e 4D Internet Commands (que permite adicionar todo tipo de funcionalidade relacionada à Internet a um banco de dados) . Existem também mais de 100 plug-ins de terceiros, gratuitos e comerciais.

4D também pode ser usado como servidor web , para executar aplicações de banco de dados compiladas.

Hoje, 4D é publicado pela empresa francesa 4D SAS e tem uma presença de vendas, distribuição e suporte na maioria dos principais mercados, sendo os Estados Unidos, o Reino Unido e a França os principais mercados. O produto está localizado em mais de uma dúzia de idiomas, incluindo inglês, francês, alemão, japonês, tcheco, hebraico, árabe, coreano e persa.

História

Silver Surfer, como era conhecido durante o desenvolvimento inicial, foi desenvolvido por Laurent Ribardière em 1984. Após negociações com a Ribardiere, estava planejado que a Apple Inc. (anteriormente Apple Computer Inc) publicaria o software, mas a Apple cancelou o plano, supostamente devido à pressão de outros editores de banco de dados em potencial que alegaram que, se a Apple tivesse seu próprio banco de dados de 'marca', os produtos de terceiros estariam em desvantagem no mercado. Na época, a Apple tentou garantir que editores de software bem conhecidos suportassem a plataforma Macintosh e, como resultado, o projeto foi revertido para Laurent Ribardière , que com a empresária francesa Marylene Delbourg-Delphis publicou a 4th Dimension. Embora publicado de forma independente, a Apple apoiou o novo empreendimento e usou 4D extensivamente em toda a organização para projetos incluindo gerenciamento de centros de fitness e CIM (Computer Integrated Manufacturing). Um número de pessoal da Apple tornou-se 4D especialistas, incluindo Lance McAndrew na da Apple Cupertino sede e Andrew O'Donoghue no da Apple irlandeses sede fabrico europeu baseado, onde uma aplicação 4th Dimension conseguiu toda a administração Centro de Serviço Europeu.

Ao longo dos anos seguintes, a base instalada da 4th Dimension cresceu e a editora ACI, estabeleceu uma subsidiária com base nos Estados Unidos, a ACIUS, inicialmente liderada por Guy Kawasaki . Após 16 anos de funcionamento como ACIUS até 2000, o nome foi mudado oficialmente para 4D Inc .

Em 1993, 4D Server v1.1, a versão cliente / servidor de 4th Dimension foi introduzida junto com o lançamento de 4th Dimension v3.1.

Em 1995, 4D v3.5 foi multiplataforma e desde então suporta os sistemas operacionais Microsoft Windows e Apple Macintosh .

Em 1997, 4D v6 foi a primeira versão de 4D a conter um servidor web totalmente integrado, permitindo aos desenvolvedores traduzir formulários 4D em HTML em tempo real usando apenas a linguagem 4D.

Em 2004, 4D 2004 foi a primeira versão de 4D que permite aos desenvolvedores criar aplicações autônomas, cliente / servidor, web e Service Oriented Applications (SOA) sem alterar nenhum código.

Em 2008, 4D v11 adicionou uma camada SQL ao motor de banco de dados 4D e estendeu o SQL nativo à linguagem de programação 4D, o que permitiu aos desenvolvedores 4D escrever código SQL nativo para se conectar a servidores locais ou remotos

Em 2010, 4D v12 integrou a capacidade de executar funções / scripts PHP desde a linguagem de programação 4D. Esta versão também suporta novos comandos de replicação e sincronização e inclui uma versão de 64 bits de 4D Server

Histórico de versão

Galho Última versão lançamento inicial Último lançamento Status de fevereiro de 2019 Notas
v18.x v18.LTS 16 de janeiro de 2020 Em andamento Suportado Bancos de dados de projetos para controle de versão, ferramentas de criptografia integradas, 4D para iOS, 4D Write Pro, 4D View Pro
v17.x v17.4 10 de julho de 2018 Em andamento Suportado ORDA (acesso a dados relacionais a objetos), coleções, notação de objetos, formulários dinâmicos
v16.x v16.6 10 de janeiro de 2017 Em andamento O suporte terminou em 24 de julho de 2019 Novo sistema de gerenciamento de cache, multithreading preemptivo, 4D Dev Pro 64 bits
v15R v15R5 10 de novembro de 2015 14 de setembro de 2016 Substituído por 16.x Visualização dos recursos na versão 16.x
v15.x v15.6 16 de julho de 2015 25 de abril de 2017 O suporte terminou em 25 de abril de 2018 4D Server 64 bits para servidores Mac; Nova camada de rede
v14R v14R5 Maio de 2014 Março de 2015 Não mais suportado visualização de recursos na v15.x
v14.x v14.6 12 de dezembro de 2013 20 de dezembro de 2016 Não mais suportado 4D Mobile (opções de conectividade para 4D Server como fonte de dados para Wakanda (software) ); Objetos JSON estruturados (C_Object); Visualizações SQL; novas ferramentas de manutenção e monitoramento, novo sistema de journaling.
v13.x v13.6 14 de fevereiro de 2012 18 de junho de 2015 Não mais suportado Novo servidor HTTP multithread; gerenciamento automático de sessão; novo cliente HTTP extensível; integração de webkit e suporte estendido de Javascript; caixa de listagem enriquecida; gestão de documentos externos.
v12.x v12.6 3 de junho de 2010 8 de outubro de 2013 Não mais suportado 4D Server 64 bits para servidores Windows; Integração PHP; Sincronização e Replicação
v11.x v11.9 23 de setembro de 2008 7 de julho de 2011 Não mais suportado Motor SQL; centro de manutenção integrado (MSC); Gerenciamento de SVG; Área Web Integrada
2004.x 2004.8 31 de agosto de 2004 30 de junho de 2009 Não mais suportado Interface renovada; Integração de comandos ODBC de alto nível, 4D Customizer, 4D Backup e 4D Engine
2003.x 2003.8r2 17 de março de 2003 11 de abril de 2006 Não mais suportado XML; Serviços web; Compilador Embutido
v6.8.x 6,8.6 15 de abril de 2002 24 de setembro de 2004 Não mais suportado
v6.7.x 6.7.5 Não mais suportado
v6.5.x 18 de maio de 1999 Não mais suportado
v6.0.x 6.0.5 1997 27 de fevereiro de 1998 Não mais suportado Servidor Web Integrado
v3.x Não mais suportado 4D v3.5 foi a primeira versão multiplataforma (mac / win),
v1.x 1987 Não mais suportado Apenas Mac

Arquitetura

Uma aplicação 4D pode ser executada tanto no modo autônomo como no modo cliente-servidor.

Único usuário

Em modo autônomo, a aplicação 4D (4D.exe no Windows ou 4D.app no ​​Mac) se utiliza para abrir o arquivo de estrutura (4DB / 4DC) diretamente junto com o arquivo de dados associado (4DD).

Servidor cliente

No paradigma cliente-servidor, a aplicação 4D Server (4DServer.exe no Windows ou 4DServer.app no ​​Mac) é usada para abrir o arquivo de estrutura (4DB / 4DC) diretamente junto com o arquivo de dados associado (4DD). 4D pode então ser usado em modo remoto para conectar ao 4D Server.

Edições de aplicativos

4D tem duas aplicações; 4D e 4D Server. 4D Server só funciona como servidor, mas 4D pode funcionar tanto em modo autônomo como em modo remoto.

4D

4D pode ser executado em dois modos. 4D em modo de usuário único permite que 1 pessoa execute a aplicação. 4D em modo remoto é usado para conectar a um 4D Server.

4D Server

4D Server é usado para a conectividade cliente-servidor à aplicação. Neste modo, 4D Server carrega o arquivo de estrutura (4DB ou 4DC) e também o arquivo de dados (4DD) e fornece acesso à rede a 4D (em remoto). Cada estação de trabalho possui um cache atualizado dinamicamente dos recursos com que estão trabalhando, enquanto 4D Server mantém os dados e o código.

Sintaxe

Esta seção incluirá exemplos de sintaxe que demonstram diferentes construções de programação usadas em 4D, como loops for e uso de variável.

Tipos de dados

Os campos, variáveis ​​e expressões 4D podem ser dos seguintes tipos de dados:

Tipo de dados Campo Variável Expressão
Fragmento sim sim sim
Número (duplo) sim sim sim
Data sim sim sim
Tempo sim sim sim
boleano sim sim sim
Foto sim sim sim
Pointer Não sim sim
BLOB sim sim Não
Variedade Não sim Não
Inteiro 64 bits sim Não Não
Flutuador sim Não Não
Objeto sim sim sim
Indefinido Não sim sim

Mais informações sobre os tipos de dados 4D podem ser encontradas na página de documentação dos Tipos de dados 4D

Escopo Variável

Variáveis ​​locais são prefixadas com um $semelhante $myLocalVariablee só vivem durante a duração do método.

Variáveis ​​de processo não têm prefixo como myProcessVariablee vivem durante toda a duração do processo.

Variáveis ​​interprocessos (ou globais) são prefixadas com um <>like <>myGlobalVariablee vivem durante toda a duração da aplicação.

Comparação de looping

Para

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

Enquanto

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

Repetir

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

Otimizando loops

Você pode usar variáveis ​​reais, inteiras e inteiras longas, bem como contadores entre processos, processos e variáveis ​​locais. Para loops repetitivos longos, especialmente no modo compilado, use variáveis ​​de número inteiro longo locais.

Aqui está um exemplo:

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

Loops aninhados

O exemplo a seguir percorre todos os elementos de uma matriz bidimensional:

 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

O exemplo a seguir cria uma matriz de ponteiros para todos os campos de data presentes no banco de dados:

 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

Referências

links externos