Qore (programovací jazyk)
Qore | |
Druh | viacparadigmový, interpretovaný, imperatívny, objektovo orientovaný |
---|---|
Tvorca | David Nichols |
Používané prípony | .q , .qm , .qtest |
Qore je interpretovaný, vysoko-úrovňový, univerzálne použiteľný, dynamický programovací jazyk používajúci garbage collector a ponúkajúci podporu pre code embedding, sandboxing, s voliteľným silným typovaním a dôrazom na natívnu podporu viacvláknového programovania a SMP škálovateľnosť.
Qore je unikátny vďaka tomu, že ide o interpretovaný skriptovací jazyk s natívnou podporou pre viac vlákien (teda môže v tej istej chvíli bežať viacero častí kódu súčasne) a tiež preto, že ponúka automatickú správu pamäte (programátori nemusia explicitne prideľovať a uvoľňovať pamäť). Okrem toho podporuje RAII idióm s deštruktormi pre blokovú správu zdrojov a "výnimkovo bezpečné" programovanie.[1] To je umožnené jedinečnou implementáciou Qore Garbage Collectoru, ktorý je schopný zbierať zdroje dopytovo.[2]
Qore skripty
[upraviť | upraviť zdroj]Qore skripty majú spravidla nasledovné koncovky:
.q
: Qore skripty.qm
: Qore užívateľské moduly.qtest
: Qore testové skripty
Spustiteľné Qore skripty pre Unixové operačné systémy typicky začínajú tzv. "hashbangom" na určenie interpreteru:
#!/usr/bin/env qore
Syntax
[upraviť | upraviť zdroj]Syntax Qore je podobná a inšpirovaná syntaxou nasledujúcich jazykov:[3]
- Perl: bez
%new-style
je Qore syntax veľmi podobná Perl,foreach
výraz,splice
,push
,pop
achomp
operátory, Perl5 kompatibilné regulárne výrazy a iné - Java: s
%new-style
sa Qore viac podobá na Javu,[4] kľúčové slovosynchronized
,instanceof
operátor a implementácia objektov a tried - C++: viacnásobná dedičnosť, spracovanie výnimiek, statické metódy, abstraktné metódy
- D:
on_exit
,on_success
,on_error
výrazy poskytujú výnimkovú funkcionalitu podobnú v D používanýchscope(exit)
ascope(failure)
, umožňujúcu umiestnenie kódu ošetrujúceho výnimku vedľa kódu, ktorý ju vyvolal - Haskell:
map
,foldl
,foldr
aselect
operátory
Dátové typy
[upraviť | upraviť zdroj]Základné typy sú: boolean
, string
, integer
, float
, date
, binary
,[5] list
, hash
(slovník / asociatívne pole), object
[6] a code
pre kód použitý ako dátový typ.[7]
Viacvláknové programovanie
[upraviť | upraviť zdroj]Napriek tomu, že je Qore interpretovaný jazyk, bol vytvorený s podporou viacerých vlákien ako základným dizajnovým princípom. Všetky časti Qore sú vláknovo bezpečné a vo všeobecnosti bol jazyk navrhovaný s prihliadnutím na SMP škálovateľnosť. Z tohto dôvodu Qore programy a skripty nemusia byť obmedzované na podmnožinu Qore funkcionality a taktiež je to dôvod, prečo v Qore neexistuje globálny interpreterový zámok.[8]
Vláknová funkcionalita je v Qore poskytovaná POSIX knižnicou operačného systému.
Garbage Collection
[upraviť | upraviť zdroj]Qore ponúka jedinečný prístup v súvislosti s garbage collectorom, tzv. "prompt collection"[2], ktorý dovoľuje spúšťať deštruktory objektov okamžite po tom, ako sa tieto ocitnú mimo pôsobnosti a to aj v prípade, že držia rekurzívne referencie na seba samých. To umožňuje Qore podporovať RAII idióm a tiež vykonávanie automatickej správy pamäte.
Podpora code embeddingu a sandboxingu
[upraviť | upraviť zdroj]Qore bol navrhnutý tak, aby v aplikáciách podporoval code embedding a sandboxovú logiku. To platí ako v prípade aplikácií napísaných v Qore, tak aj pri aplikáciách používajúcich C++ API z Qore verejnej knižnice. Použitím Program
triedy, ktorá reprezentuje logický kontajner so sandboxovým ovládaním, diskrétne objekty obsahujúce embedded code, ktoré môžu byť vytvárané a ničené za behu, na rozšírenie alebo pozmenenie aplikácie používateľom.[9]
Runtime knižnica
[upraviť | upraviť zdroj]Štandardná Qore runtime knižnica podporuje mapovanie dát, API pre komunikáciu s databázami (vrátane vysoko-úrovňových API pre SQL operácie, správu schém a DBA akcie), klientské API a implementácie serverových infraštruktúr pre mnoho protokolov ako HTTP, REST, WebSocket, RPC protokoly a veľa protokolov na formátovanie súborov a na transfer súborov a dát.[10]
Testovanie
[upraviť | upraviť zdroj]Qore podporuje testovanie prostredníctvom QUnit modulu ktorý zaobstaráva automatické testovanie a nepretržité integračné procesy pre kód napísaný v Qore.
Dostupnosť
[upraviť | upraviť zdroj]Qore Git repozitár je na GitHube. Binárne balíky sú dostupné ako RPM, v MacPorts a vo FreeBSD Ports ako aj pre iné operačné systémy, vrátane Microsoft Windows. Viď General Source and Download Info na Qore wiki pre viac informácií.
Referencie
[upraviť | upraviť zdroj]- ↑ Why use Qore? [online]. Qore.org, 2016-06-13, [cit. 2016-11-04]. Dostupné online.
- ↑ a b Prompt Collection [online]. Qore.org, 2016-06-14, [cit. 2016-11-04]. Dostupné online.
- ↑ qore/ABOUT at develop · qorelanguage/qore · GitHub [online]. [Cit. 2016-11-04]. Dostupné online.
- ↑ Qore Programming Language Reference Manual: Parse Directives [online]. [Cit. 2016-11-04]. Dostupné online.
- ↑ Qore Programming Language Reference Manual: Basic Data Types [online]. Qore.org, [cit. 2016-11-04]. Dostupné online.
- ↑ Qore Programming Language Reference Manual: Container Data Types [online]. [Cit. 2016-11-04]. Dostupné online.
- ↑ Qore Programming Language Reference Manual: Code Data Types [online]. [Cit. 2016-11-04]. Dostupné online.
- ↑ Qore Programming Language Reference Manual: Threading [online]. [Cit. 2016-08-10]. Dostupné online.
- ↑ Qore Programming Language Reference Manual: Qore::Program Class Reference [online]. Qore.org, [cit. 2016-11-04]. Dostupné online.
- ↑ Modules · qorelanguage/qore Wiki · GitHub [online]. 2016-06-12, [cit. 2016-11-04]. Dostupné online.
Externé odkazy
[upraviť | upraviť zdroj]- Oficiálna stránka
- Qore Wiki (github.com)
- Qore for the Perl Programmer Archivované 2017-02-13 na Wayback Machine (houston.pm.org)
- openSUSE Archivované 2016-08-08 na Wayback Machine (software.opensuse.org)
- NetBSD (ftp.netbsd.org)
- FreeBSD (portsmon.freebsd.org)