4ª Dimensão (software) - 4th Dimension (software)
Projetado por | Laurent Ribardière |
---|---|
Desenvolvedor | 4D SAS |
Apareceu pela primeira vez | 1984 | (dev) 1987 (oficial)
Versão estável | v18 R5 / 19 de janeiro de 2021
|
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 |
Autor (es) original (is) | Laurent Ribardière |
---|---|
Desenvolvedor (s) | 4D SAS |
lançamento inicial | 1984 | (ss) 1987 (v1)
Versão estável | v18 R5 / 19 de janeiro de 2021
|
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 |
Autor (es) original (is) | Laurent Ribardière |
---|---|
Desenvolvedor (s) | 4D SAS |
lançamento inicial | 1993 | (v1)
Versão estável | v18 R5 / 19 de janeiro de 2021
|
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 ( 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 $myLocalVariable
e só vivem durante a duração do método.
Variáveis de processo não têm prefixo como myProcessVariable
e vivem durante toda a duração do processo.
Variáveis interprocessos (ou globais) são prefixadas com um <>
like <>myGlobalVariable
e 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