| パラダイム | マルチパラダイム:スレッドセーフ/並列/共有メモリ、関数型、命令型、オブジェクト指向(クラスベース)、手続き型、関数型 |
|---|---|
| デザイン: | デビッド・ニコルズ |
| 開発者 | デビッド・ニコルズ |
| 安定版リリース | 1.16.1 / 2023年7月2日 |
| タイピングの規律 | ダイナミック、オプションで強力 |
| 実装言語 | C++、Pスレッド |
| OS | クロスプラットフォーム |
| ライセンス | MIT ライセンス、GNU 一般公衆利用許諾書、GNU 劣等一般公衆利用許諾書 |
| ファイル名拡張子 | .q、、.qm.qtest |
| Webサイト | 詳しくはこちら |
| 影響を受けた | |
| Perl、D、C++、Java | |
Qoreは、解釈型、高レベル、汎用、ガベージ コレクションの 動的プログラミング言語であり、オプションの強力な型指定によるコードの埋め込みとサンドボックス化をサポートし、マルチスレッドと SMP スケーラビリティの基本的なサポートに重点を置いています。
Qoreは、マルチスレッド(同じコードの複数の部分を同時に実行できる)を基本的にサポートするインタープリタ型スクリプト言語であり、さらに自動メモリ管理(プログラマがメモリを明示的に割り当てたり解放したりする必要がない)機能を備えているだけでなく、スコープベースのリソース管理と例外安全なプログラミングのためのデストラクタを備えたRAIIイディオムもサポートしているという点でユニークです。[1]これは、ガベージコレクション 用のQore独自のプロンプトコレクション実装によるものです。
Qore スクリプト
Qore スクリプトには通常、次の拡張子があります。
.q: Qore スクリプト用.qm: Qore ユーザーモジュール用.qtest: Qore テスト スクリプト用
Unix 系オペレーティング システムで実行可能な Qore スクリプトは、通常、次のようにインタープリターのファイル名を指定する ハッシュバンで始まります。
#!/usr/bin/env qore
構文
Qoreの構文は、以下のプログラミング言語に似ており、インスピレーションを受けています。[2]
- Perl : を除けば、Qore の構文はPerl
%new-styleと非常に似ています。ステートメント、、、、演算子、Perl5互換の正規表現などがあります。foreachsplicepushpopchomp - Java : により、QoreコードはJava
%new-styleに似たものになります。[3]キーワード、演算子、オブジェクト、クラスの実装synchronizedinstanceof - C++ : 多重継承、例外処理、静的メソッド、抽象メソッド
- D :
on_exit、、on_successおよびステートメントは、Dの、on_errorと同様の例外認識機能を提供し、クリーンアップを必要とするコードの隣に例外認識クリーンアップコードを配置できるようにします。scope(exit)scope(failure) - Haskell :
map関数およびリスト演算子と文の遅延評価を備えたfoldl、、、foldrおよび演算子select
データ型
基本的な型にはboolean、、、、、、[4]、 (連想配列)、、[ 5]、およびデータ型として使用されるコードのコードがstringあります。 [6]integerfloatdatebinary listhashobjectcode
hash<string, bool>、、list<string>などの複合型reference<list<string>>や型セーフハッシュもサポートされています。
マルチスレッド
Qore はインタプリタ言語であるにもかかわらず、基本的な設計原則としてマルチスレッドをサポートするように設計されています。Qore のすべての要素はスレッドセーフであり、言語は一般的に SMP のスケーラビリティを考慮して設計されています。言語のすべての要素がマルチスレッドをサポートするように設計されているため、Qore プログラムとスクリプトは Qore の機能のサブセットに制限される必要はなく、これがQore にグローバル インタプリタ ロックがない理由でもあります。[7]
Qore のスレッド機能は、オペレーティング システムのPOSIX スレッド ライブラリによって提供されます。
ガベージコレクション
Qore は、プロンプト コレクションと呼ばれる独自のガベージ コレクション アプローチを特徴としており、オブジェクトがスコープ外になると、たとえオブジェクト自体への再帰参照があっても、デストラクタをすぐに実行できます。これにより、Qore はRAII イディオムをサポートし、ガベージ コレクションによる自動メモリ管理も実行できます。
コードの埋め込みとサンドボックスのサポート
Qore は、アプリケーションへの埋め込みとサンドボックス ロジックをサポートするように設計されています。これは、Qore で記述されたアプリケーションだけでなく、Qore ライブラリのパブリック C++ API を使用するアプリケーションにも適用されます。Programサンドボックス コントロールを備えたロジック コンテナーを表すクラスを使用することで、埋め込みコードを含む個別のオブジェクトを実行時に作成および破棄し、ユーザー定義の方法でアプリケーションの動作を拡張または変更することができます。[8]
ランタイムライブラリ
Qore の標準ランタイム ライブラリは、データ マッピング、データベースと通信するための API (SQL 操作、スキーマ管理、DBA アクション用の高レベル API を含む)、HTTP、REST ( Swaggerサポートを含む REST スキーマ検証/コード生成を含む)、クライアント/サーバーSOAPサポート (コードとメッセージの生成を含む)、WebSocket、RPC プロトコル、汎用コネクタ API、汎用データ マッピング API、多くのファイル形式、ファイルおよびデータ交換プロトコルなど、多くのプロトコルのクライアント API とサーバー インフラストラクチャ実装をサポートしています。[9]
テスト
Qore は、QUnit モジュールによるテストをサポートしており、Qore で記述されたコードの 自動テストと継続的インテグレーションプロセスを容易にします。
可用性
Qore のGit (ソフトウェア)リポジトリは GitHub でホストされています。バイナリ パッケージは RPM として、MacPortsおよびFreeBSD Portsで入手可能で、 Microsoft Windowsを含む他のオペレーティング システムでも入手できます。詳細については、Qore wiki の一般的なソースとダウンロード情報を参照してください。
参考文献
- ^ 「なぜ Qore を使うのか?」 Qore.org. 2016-06-13 . 2016-06-14閲覧。
- ^ "qore/開発時について · qore language/qore · GitHub". Github.com 。2016 年 8 月 10 日に取得。
- ^ 「Qore プログラミング言語リファレンスマニュアル: 解析ディレクティブ」。Docs.qore.org。2016年 8 月 10 日閲覧。
- ^ 「基本データ型」。Qore.org 。 2012年5月31日閲覧。
- ^ 「Qore プログラミング言語リファレンスマニュアル: コンテナデータ型」。Docs.qore.org。2016年 8 月 10 日閲覧。
- ^ 「Qore プログラミング言語リファレンスマニュアル: コードデータ型」。Docs.qore.org。2016年 8 月 10 日閲覧。
- ^ 「Qore プログラミング言語リファレンスマニュアル: スレッド」。Docs.qore.org。2016年 8 月 10 日閲覧。
- ^ 「プログラムクラス」。Qore.org 。 2016年6月13日閲覧。
- ^ “モジュール · qore language/qore Wiki · GitHub". Github.com。 2016-06-12 。2016 年 8 月 10 日に取得。
外部リンク
- 公式サイト
- Qore ウィキ ( github.com )
- Perl プログラマーのための Qore ( houston.pm.org )
- openSUSE ( software.opensuse.org )
- NetBSD ( ftp.netbsd.org )
- FreeBSD ( portsmon.freebsd.org )について
