Qore (linguaggio di programmazione) - Qore (programming language)

Qore
Paradigma multi-paradigma : thread-safe / parallela / memoria condivisa , funzionale , imperativo , orientato agli oggetti ( basato sulle classi ), procedurale , funzionale
Progettato da David Nichols
Sviluppatore David Nichols
Rilascio stabile
0.9.4.2 / 27 marzo 2020 ; 18 mesi fa ( 2020-03-27 )
Disciplina di digitazione Dinamico, opzionalmente forte
Linguaggio di implementazione C++ , Pthread
OS Multipiattaforma
Licenza Licenza MIT , GNU General Public License , GNU Lesser General Public License
Estensioni dei nomi dei file .q, .qm,.qtest
Sito web www .qore .org
Influenzato da
Perl , D , C++ , Java

Qore è un linguaggio di programmazione dinamico interpretato , di alto livello , di uso generale , con raccolta di rifiuti , con supporto per l'incorporamento di codice e il sandboxing con tipizzazione forte opzionale e un focus sul supporto fondamentale per il multithreading e la scalabilità SMP.

Qore è unico perché è un linguaggio di scripting interpretato con supporto fondamentale per il multithreading (il che significa che più di una parte dello stesso codice può essere eseguita contemporaneamente) e inoltre perché è dotato di gestione automatica della memoria (il che significa che i programmatori non devono allocare e memoria libera in modo esplicito) supportando anche l' idioma RAII con distruttori per la gestione delle risorse basata sull'ambito e la programmazione sicura dalle eccezioni . Ciò è dovuto all'implementazione unica della raccolta di prompt di Qore per la garbage collection .

Script Qore

Gli script Qore hanno in genere le seguenti estensioni:

  • .q: per gli script Qore
  • .qm: per moduli utente Qore
  • .qtest: per gli script di test Qore

Gli script eseguibili Qore su sistemi operativi simili a Unix inizieranno in genere con un hashbang per specificare il nome del file dell'interprete come segue:

#!/usr/bin/env qore

Sintassi

La sintassi di Qore è simile e ispirata ai seguenti linguaggi di programmazione:

  • Perl : senza %new-style, la sintassi di Qore è molto simile a Perl ; le foreachdichiarazioni, splice, push, pop, chompgli operatori, le espressioni regolari compatibili con Perl5, e altro ancora
  • Java : con %new-style, il codice Qore sembra più simile a Java ; la synchronizedparola chiave, l' instanceofoperatore, l'implementazione dell'oggetto e della classe
  • C++ : ereditarietà multipla, gestione delle eccezioni, metodi statici, metodi astratti
  • D : le istruzioni on_exit, on_success, e on_errorforniscono funzionalità di riconoscimento delle eccezioni simili a D's scope(exit), scope(failure), consentendo di posizionare il codice di pulizia sensibile alle eccezioni accanto al codice che richiede la pulizia
  • Haskell : i map, foldl, foldr, e selectoperatori con valutazione pigra degli operatori funzionali e degli elenchi e delle dichiarazioni

Tipi di dati

I tipi di base includono: boolean, string, integer, float, date, binary, list, hash(array associativi) e object, nonché il codice codeper il codice utilizzato come tipo di dati.

Sono supportati anche tipi complessi come hash<string, bool>, list<string>, reference<list<string>>nonché hash type-safe .

Multithreading

Nonostante sia un linguaggio interpretato, Qore è stato progettato per supportare il multithreading come principio di progettazione fondamentale. Tutti gli elementi di Qore sono thread-safe e il linguaggio in generale è stato progettato tenendo presente la scalabilità SMP. Poiché tutti gli elementi del linguaggio sono stati progettati per supportare il multithreading, i programmi e gli script Qore non devono limitarsi a un sottoinsieme delle funzionalità di Qore, motivo per cui non esiste un blocco dell'interprete globale in Qore.

La funzionalità di threading in Qore è fornita dalla libreria di thread POSIX del sistema operativo .

Raccolta dei rifiuti

Qore offre un approccio unico alla raccolta dei rifiuti chiamato raccolta di prompt che consente di eseguire immediatamente i distruttori quando gli oggetti escono dall'ambito, anche se hanno riferimenti ricorsivi a se stessi. Ciò consente a Qore di supportare l' idioma RAII e di eseguire anche la gestione automatica della memoria raccolta inutilizzata.

Supporto per l'incorporamento del codice e il sandboxing

Qore è stato progettato per supportare la logica di incorporamento e sandboxing nelle applicazioni; questo vale anche per le applicazioni scritte in Qore e per le applicazioni che utilizzano l'API C++ pubblica della libreria Qore. Utilizzando la Programclasse che rappresenta un contenitore logico con controlli sandbox, è possibile creare e distruggere oggetti discreti in fase di esecuzione contenenti codice incorporato per estendere o modificare il comportamento dell'applicazione in modi definiti dall'utente.

Libreria di runtime

La libreria di runtime standard di Qore supporta la mappatura dei dati, le API per la comunicazione con i database (incluse le API di alto livello per le operazioni SQL, la gestione dello schema e le azioni DBA), le API client e le implementazioni dell'infrastruttura server per molti protocolli inclusi HTTP , REST (con convalida dello schema REST/ la generazione di codice compresa Swagger supporto), client / server SOAP supporto (compreso il codice e la generazione del messaggio), WebSocket , protocolli RPC , API connettore generici , le API di mappatura dei dati generici , e molti formati di file e protocolli di file e di scambio dati e altro ancora.

test

Qore supporta i test tramite il modulo QUnit che facilita i test automatizzati e i processi di integrazione continua per il codice scritto in Qore.

Disponibilità

Il repository Git (software) di Qore è ospitato su GitHub . I pacchetti binari sono disponibili come RPM , in MacPorts e in FreeBSD Ports così come per altri sistemi operativi, incluso Microsoft Windows ; vedere Informazioni generali sulla fonte e sul download sul wiki di Qore per ulteriori informazioni.

Riferimenti

link esterno