Qore (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Saltar para a navegação Saltar para a pesquisa
Qore
Paradigma multi-paradigma: segura do ponto de vista de fios de execução/concorrente/memória partilhada, funcional, imperativa, orientada a objectos (baseada em classes), procedimental, funcional
Última versão 0.8.13.7 (11 de setembro de 2018; há 0 dia)
Criado por David Nichols
Estilo de tipagem: dinâmica, opcionalmente forte
Influenciada por Perl, D, C++, Java
Licença: MIT License, GNU General Public License, GNU Lesser General Public License
Página oficial www.qore.org

Qore é uma linguagem de programação dinâmica interpretada, de alto nível, de uso geral, com colector de lixo e com capacidade para incorporação de código e isolamento de processos com tipificação forte opcional. Também permite múltiplos fios de execução e escalabilidade de multiprocessamento simétrico (SMP).

A linguagem Qore é única porque é uma linguagem interpretada com capacidade para múltiplos fios de execução (o que significa que mais do que uma parte do mesmo código pode ser executada ao mesmo tempo), tem gestão automática de memória (ou seja, os programadores não precisam de reservar e libertar memória explicitamente), é compatível com o padrão RAII (Aquisição de Recurso é Inicialização) através de destrutores para gestão de recursos baseada em alcance e permite programação com segurança no tratamento de excepções.[1] Isto deve-se à implementação exclusiva de colecta pronta,[2] ou colecta de lixo determinística, da linguagem Qore.

Scripts Qore[editar | editar código-fonte]

Os scripts Qore têm geralmente as seguintes extensões:

  • .q: para scripts Qore
  • .qm: para módulos do utilizador Qore
  • .qtest: para scripts de teste Qore

Os scripts executáveis Qore em sistemas operativos do tipo Unix começam normalmente com uma linha mágica para especificar a localização do interpretador:

#!/usr/bin/env qore

Sintaxe[editar | editar código-fonte]

A sintaxe da linguagem Qore é inspirada nas seguintes linguagens de programação, com as quais partilha semelhanças:[3]

  • Perl: sem a etiqueta %new-style, a sintaxe da Qore é muito semelhante à do Perl; a expressão foreach, os operadores splice, push, pop, chomp, as expressões regulares compatíveis com Perl5, entre outros
  • Java: com a etiqueta %new-style, o código Qore parece-se mais ao do Java;[4] a palavra-chave synchronized, o operador instanceof, a codificação de objectos e classes
  • C++: herança múltipla, tratamento de excepções, métodos estáticos, métodos abstractos
  • D: as expressões on_exit, on_success, e on_error facultam funcionalidade de reconhecimento de excepções semelhante a scope(exit), scope(failure), permitindo que código de limpeza com reconhecimento de excepções seja colocado junto ao código que precisa de limpeza
  • Haskell: os operadores map, foldl, foldr, e select

Tipos de dados[editar | editar código-fonte]

Os tipos básicos incluem: boolean, string, integer, float, date, binary,[5] list, hash (vectores associativos), e object, bem como code para código usado como tipo de dados.[6]

Múltiplos fios de execução[editar | editar código-fonte]

Apesar de ser uma linguagem interpretada, a Qore foi concebida para permitir múltiplos fios de execução como princípio fundamental de desenho. Todos os elementos da Qore são seguros do ponto de vista dos fios de execução e, em geral, a linguagem foi concebida tendo em vista a escalabilidade de multiprocessamento simétrico (SMP). Uma vez que todos os elementos da linguagem foram feitos para permitir múltiplos fios de execução, os programas e scripts da Qore não têm de se limitar a um subconjunto das funcionalidades da Qore, razão pela qual também não há um trinco de interpretador global.[7]

A funcionalidade de fios de execução na linguagem Qore é facultada pela biblioteca de fios de execução POSIX (POSIX Threads) do sistema operativo.

Colecta de lixo[editar | editar código-fonte]

A linguagem Qore tem uma abordagem única de colecta de lixo chamada colecta pronta,[2] que permite que os destrutores corram assim que os objectos saiam do alcance, mesmo que tenham referências recursivas para si mesmos. Isto permite que a Qore seja compatível com o padrão RAII bem como gestão de memória automática com colecta de lixo.

Incorporação de código e isolamento de processos[editar | editar código-fonte]

A Qore foi concebida para permitir a lógica de incorporação e isolamento de processos nas aplicações; isto aplica-se também quer às aplicações escritas na linguagem Qore, quer às aplicações que usam a API pública de C++ da biblioteca da Qore. Ao usar a classe Program, que representa um contentor lógico com controlos de isolamento de processos, objectos discretos podem ser criados e destruídos em tempo de execução contendo código incorporado para estender ou modificar o comportamento da aplicação como o utilizador desejar.[8]

Biblioteca de tempo de execução[editar | editar código-fonte]

A biblioteca de tempo de execução da Qore permite mapeamento de dados, API para comunicação com bases de dados (incluindo API de alto nível para operações SQL, gestão de esquemas e operações de administração de base de dados), API clientes e implementações de infraestrutura de servidores para muitos protocolos, incluindo HTTP, REST, WebSocket, chamadas de procedimento remoto (RPC) e muitos protocolos de formato de ficheiros e de intercâmbio de dados e de ficheiros.[9]

Testes[editar | editar código-fonte]

A Qore permite testes através do módulo QUnit que facilita os processos de testes automáticos e integração contínua para o código escrito em linguagem Qore.

Disponibilidade[editar | editar código-fonte]

O repositório Git da Qore está alojado no GitHub Os pacotes binários estão disponíveis em RPM, MacPorts e em FreeBSD Ports, assim como para outros sistemas operativos, incluindo o Microsoft Windows. O sítio colaborativo da Qore tem mais informação (em inglês) na secção General Source and Download Info.

Referências

  1. «Why use Qore?». Qore.org. 13 de junho de 2016. Consultado em 4 de novembro de 2016. 
  2. a b «Prompt Collection». Qore.org. 14 de junho de 2016. Consultado em 4 de novembro de 2016. 
  3. «qore/ABOUT at develop · qorelanguage/qore · GitHub». Github.com. Consultado em 4 de novembro de 2016. 
  4. «Qore Programming Language Reference Manual: Parse Directives». Docs.qore.org. Consultado em 4 de novembro de 2016. 
  5. «Qore Programming Language Reference Manual: Basic Data Types». Qore.org. Consultado em 4 de novembro de 2016. 
  6. «Qore Programming Language Reference Manual: Code Data Types». Docs.qore.org. Consultado em 4 de novembro de 2016. 
  7. «Qore Programming Language Reference Manual: Threading». Docs.qore.org. Consultado em 4 de novembro de 2016. 
  8. «Qore Programming Language Reference Manual: Qore::Program Class Reference». Qore.org. Consultado em 4 de novembro de 2016. 
  9. «Modules · qorelanguage/qore Wiki · GitHub». Github.com. 12 de junho de 2016. Consultado em 4 de novembro de 2016. 

Ligações externas[editar | editar código-fonte]