Qore
Paradigmamulti-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ão1.0 (25 de junho de 2021; há 4 anos)
Criado porDavid Nichols
Estilo de tipagemdinâmica, opcionalmente forte
Influenciada porPerl, D, C++, Java
LicençaMIT License, GNU General Public License, GNU Lesser General Public License
Página oficialwww.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

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

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

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

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

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

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

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

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

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

📚 Artikel Terkait di Wikipedia

SIGPLAN

da Association for Computing Machinery. Principles of Programming Languages (POPL) Programming Language Design and Implementation (PLDI) International

Modelos de linguagem de grande escala

Tamara; Moon, AJung; Guo, Jin L.C. (23 de junho de 2025). Opening the Scope of Openness in AI. Proceedings of the 2025 ACM Conference on Fairness, Accountability

Oberon (sistema operacional)

commercially available platforms. PACO – (scope) PArallel COmpiler. Appears in A2 (see entry above). Compiles each scope in an independent thread. RISC5 – the

Python

de encapsulamento. Ainda na CNRI, Guido lançou a iniciativa Computer Programming for Everybody (CP4E; literalmente, "Programação de Computadores para

The Last of Us (2.ª temporada)

de abril de 2024). «Possible The Last Of Us Set Photos Teases Season 2 Scope». CGMagazine. Consultado em 7 de maio de 2024. Cópia arquivada em 7 de maio

Epigenética do comportamento

psychiatric disorders: dilemmas, achievements, applications, and future scope». American Journal of Pharmacogenomics. 5: 149–60. PMID 15952869. doi:10

História dos sistemas operacionais

MUSIC/SP. A Control Data Corporation desenvolveu o sistema operacional SCOPE na década de 1960 para processamento em lote e o posterior desenvolvimento

Coq

inteiros em apenas uma linha de prova: Require Import ZArith. Open Scope Z_scope. Goal forall a b c:Z, (a + b + c) ^ 2 = a * a + b ^ 2 + c * c + 2 *