Logtalk は、大規模なプログラミングに適した機能セットでProlog言語を拡張および活用するオブジェクト指向ロジックプログラミング言語です。[ 1 ]カプセル化とデータ隠蔽、関心の分離、コードの再利用性の向上をサポートします。[ 1 ] Logtalk は、標準の Prolog 構文にいくつかの演算子とディレクティブを追加して使用します。
Logtalk言語の実装はオープンソースライセンスの下で配布されており、バックエンドコンパイラとしてProlog実装(公式および事実上の標準に準拠)[ 1 ]を使用して実行できます。
Logtalkは、オブジェクト指向プログラミングと論理プログラミングの利点を組み合わせることを目指しています。[ 1 ]オブジェクト指向は、ソフトウェアの個別の再利用可能なユニットの開発を重視し、論理プログラミングは、各オブジェクトの知識を宣言的に表現することを重視します。
オブジェクト指向プログラミング言語である Logtalk の主な機能には、クラス(オプションのメタクラス付き) とプロトタイプの両方のサポート、パラメトリック オブジェクト、[ 2 ]プロトコル(インターフェース)、カテゴリ (コンポーネント、アスペクト、ホットパッチ)、多重継承、パブリック/プロテクト/プライベート継承、イベント駆動型プログラミング、高レベルのマルチスレッドプログラミング、[ 3 ]リフレクション、およびドキュメントの自動生成が含まれます。
Prologプログラマにとって、Logtalkは高い移植性を提供します。具体的には、述語名前空間(静的オブジェクトと動的オブジェクトの両方をサポート)、公開/保護/非公開のオブジェクト述語、共帰納的述語、インターフェースと実装の分離、シンプルで直感的なメタ述語意味論、ラムダ式、確定節文法、項展開メカニズム、条件付きコンパイルといった機能を備えています。また、事実上の標準コアモジュール機能に基づいたモジュールシステムも提供します(内部的には、モジュールはプロトタイプとしてコンパイルされます)。
Logtalkの構文はPrologに基づいています。
?- write ( 'Hello world' ), nl . Hello world true . オブジェクトの定義:
:-オブジェクト(my_first_object)。 :-初期化(( write ( 'Hello world' ), nl ))。 :-公開(p1 / 0 )。 p1 :- write ( 'これは公開述語です' ), nl . :-プライベート(p2 / 0 )。 p2 :- write ( 'これはプライベート述語です' ), nl . :- end_object。 オブジェクトを使用する際は、my_first_object.lgt ファイルに保存されていると仮定します。
?- logtalk_load (my_first_object). Hello world true。 ?- my_first_object :: p1。 これは 公開述語 です。true。 プライベート述語にアクセスしようとするとエラーが発生します。
?- my_first_object :: p2. エラー: error( permission_error (access, private_predicate, p2), my_first_object :: p2, user) Logtalkでは、匿名述語(ラムダ式)に以下の構文を使用します。
{ FreeVar1、FreeVar2、 ... } / [ LambdaParameter1、LambdaParameter2、 ...] >>ゴール自由変数を使用せず、リストマッピング述語を使用した簡単な例は次のとおりです。
| ?- meta :: map([ X , Y ] >> ( Yは2 * X )、[ 1 , 2 , 3 ]、Ys ) 。Ys = [ 2 , 4 , 6 ] はい カリー化もサポートされています。上記の例は次のように記述できます。
| ?- meta :: map([ X ] >> ([ Y ] >> ( Y is 2 * X )), [ 1 , 2 , 3 ], Ys ). Ys = [ 2 , 4 , 6 ] はい サポートされているバックエンド Prolog コンパイラには、B-Prolog、Ciao Prolog、CxProlog、ECLiPSe、GNU Prolog、JIProlog、Quintus Prolog、Scryer Prolog、SICStus Prolog、SWI-Prolog、Tau Prolog、Trealla Prolog、XSB、およびYAPが含まれます。[ 4 ] Logtalk では、オブジェクトとカテゴリ内からバックエンド Prolog コンパイラ ライブラリを使用できます。
Logtalkには、オンラインヘルプ、ドキュメント作成ツール(PDFおよびHTMLファイルを生成可能)、エンティティ図生成ツール、組み込みデバッガ(ほとんどのPrologコンパイラに搭載されている従来のプロシージャボックスモデルの拡張版に基づく)、コードカバレッジ分析機能を備えた単体テストフレームワークがあり、選択されたバックエンドPrologプロファイラおよびグラフィカルトレーサーとも互換性があります。[ 5 ]
Logtalkは、製品製造情報の交換に使用されるSTEPデータモデルを処理するために使用されてきました。[ 6 ]また、選好推論と制約解決 を可能にする推論システムを実装するためにも使用されています。[ 7 ]