AZ-Prolog概要

AZ-Prologは1980年代に広く普及したProlog-KABAのPrologソースコードをそのまま走らせることができ、かつ、フルコンパイルすることでスタンドアローンアプリケーションを生成することができる処理系として開発し、1989年に最初の版(OS/2,UNIX)の出荷を行いました。
初版のリリース以来、基本的なProlog言語仕様の上に、時代の要請に応じて実用的なアプリケーションを構築するために、処理性能を強化し、多くの拡張述語・機能を追加した製品です。

AZ-Prologは、「ISO/DEC-10 Prolog」に準拠した、世界最速級の処理性能を誇る論理型言語Prolog処理系です。

Prologによる手軽なプログラム開発やデバッグの環境を提供する「インタプリタ」、インタプリタ上での実行を高速化する「バイトコード・コンパイラ」、さらに高速な単独実行プログラムの作成を実現する「C言語ソースコード・コンパイラ」、プログラムをWEBサイトとして公開可能にする「CGIインタプリタ」などを備えています。

64ビットOS対応により、OSの提供する広大なメモリ空間を利用することができ、従来は解が求まらなかった巨大なプログラムも走らせることが可能です。
また、CPUのマルチコア化に伴い、その性能をフルに活用するため、プログラムを複数のプロセスに分散して並列で駆動するMPI(Message Passing Interface)ライクな仕組みを取り入れました。これにより、Prologプログラムをより高速に実行することができます。

さらに、制約論理の基本的な組込述語やソケット系の拡張組込述語など豊富な拡張機能により、複雑高度なプログラムが効率よく処理でき、ネットワーク時代に対応したプログラミング等、開発できるアプリケーションの幅や可能性を広げます。

Version9以降においては、AZ-PrologでHPSGなどの単一化文法を容易に実装するため、データ型として素性構造型を導入いたしました。
ICOTで開発されたCU-Prologを参考に仕様検討、動作検証をおこないましたが、次の点で異なります。

・セミコロンによる制約記述は取り入れておりません。
・変数に制約条件を直接記述するシンタックスを取り入れました。変数間の関係、チェックが簡素化できます。
・差分リストに似た素性構造の差分表現を導入しました。

Version9以降において、Prologのデータ型(項)に素性構造型を追加しました。これにより、HPSGなどの単一化文法を容易に記述できるようになりました。
Version9.5以降において、型付素性構造型をサポートしました。

動作環境

対象OSWin32/64(Windows 10/8/7)
Linux 32/64 (Ubuntu 16.04/14.04/12.04)
Mac OS(v10.12 Sierra)、Mac OS X(v10.9 Mavericks, v10.10 Yosemite, v10.11 El Capitan)
対応CコンパイラMicrosoft Visual Studio 2017/2015/2013、GCC
ハードウェア上記OSが動作する環境。64ビット版では6Gバイト以上のメモリを推奨
ディスク容量60MB以上

※Win32版は64ビットOS上でも動作しますが、Win64版は32ビットOSでは動作しません。 一部の拡張機能については外部ライブラリを利用している関係から、2015年現在、32ビット版のみ対応のものがあります(現状はCaboChaのみ)。
Mac版は、v10.9 Mavericks以上でないと動作保障の対象外となります。

32ビット版と64ビット版の主な相違点

 32ビット版64ビット版
セルサイズ8byte16byte
整数の範囲-2147483648~2147483647
e_register/3,repeat/1のとる値も同じ
-9223372036854775808~9223372036854775807
e_register/3,repeat/1のとる値も同じ
数値演算整数と浮動小数点数(倍精度)の混在する計算結果は浮動小数点数になりますが、浮動小数点数の仮数部(52ビット)よりも整数の範囲が大きいため、大きな整数の演算では、計算結果が情報落ちすることがあります。
数値アレイ1,2,4byte1,2,4,8byte
ヒープ・スタックサイズ合計最大2GバイトOSと実メモリの提供範囲


AZ-Prolog Version 9 の主な特徴

  • 素性構造をデータ構造とするプログラムを簡単に書くことができ、短いコードで構文解析などができます。
  • 世界最高速級の処理性能
    性能評価リストはこちら
  • freeze/2、frozen/2、in/2、notin/2などの制約論理の基本的な組込述語とProlog記述された制約論理パッケージが付属していますので、複雑高度なプログラムが効率よく処理できます。
  • ソケット系の拡張組込述語がネットワーク時代に対応したプログラミングが可能です。
  • MPIライクなマルチプロセス並列処理機能のサポート
    並列化可能なモジュールをプロセスに分散し、CPUのコア数に比例した高速化が図れます。
  • Microsoft Win32/64 APIに対応
    OLEオートメーション(クライアント及びコントローラ)機能をサポートしています。
  • 多様な外部ライブラリとの接続インタフェースの提供
    鬼車、MeCab、CaboCha、ODBC、REDISのインタフェースを備えています。
  • マルチOS対応
    Windows、Linux、UNIXなどをはじめとする複数のOSに対応し、パーソナルコンピュータから、エンジニアリングワークステーションに致るまで広範囲に対応します。Prologソースは、各システムでほぼそのまま共通に利用できます。
  • ISO準拠
    言語仕様は事実上のProlog標準仕様である「ISO/DEC-10 Prolog」に準拠しています。
  • 各スタック領域などのワークエリアの大きさを自由に設定可能
    プログラムエリアなどのメモリ容量の制限を取払い、特に64ビット版では、ほぼ無限に等しい(上限はOSやハード構成に依存します)プログラムエリアを確保出来ます。 しかも、各ワークエリア毎の最大使用量を認知し、各ワークエリアを必要最小限に設定する事もできます。
  • 様々な実行環境
    AZ-Prologの実行環境は
    ・プログラム開発・デバッグ時に使用するインタプリタ。
    ・実行/デリバリ時に威力を発揮するコンパイラ。
    ・Webアプリケーションとして公開できるCGIインタプリタ
    と使い分けすることにより効率的なプログラム開発と公開が可能です。
  • C言語ソースを生成し、単独実行可能プログラムを生成可能
    AZ-Prologコンパイラはその出力としてC言語のソースコードを生成します。 通常は生成されたCソースを各OSの標準Cコンパイラでコンパイルし、リンカでAZ-Prologの組込述語ライブラリ・Cコンパイラ標準関数ライブラリなどとリンクすることにより「単独実行可能プログラム」を生成します。ユーザが作成したCプログラムとソースまたはオブジェクトレベルでのリンクも可能です。
  • ユーザプログラムを組込述語として定義が可能
    PrologやC言語で記述されたプログラムをコンパイルして、インタプリタの組込述語として追加登録できます。さらにプログラム開発の効率が向上します。
  • マルチバッファで、EmacsライクなProlog用のエディタ(AzEdit)を内蔵
    EmacsライクのPrologプログラム用のフルスクリーンエディタ(AzEdit)を 標準のインタプリタに組込述語として内蔵しており、同時に8個までのテキストファイルを編集する事が出来るマルチバッファ機能を装備しています。また、エディタ白身Prologで記述されており、そのソースコードも付属していますので、機能の追加・変更、キー割当て等のカスタマイズも自由に出来ます。
  • 強力なソースレベルデバッガ装備
    トレース・スパイ・ブレーク機能を内蔵したソースレベルデバッガを装備しています。またソースレベルデバッガでトレースする事で、Prologの動作を把握できるためProlog言語を理解する上でも大きな助けとなります。
  • トップレベル(コンソール画面上)におけるテンプレート機能
    トップレベル(コンソール画面上)で、過去に入力した文字列を10行前までの入力を記憶し、そのままかまたは編集して再入力できるテンプレート機能があります。
  • 豊富な組込述語(400以上)
  • 算術演算
    AZ-Prologは浮動小数点演算をサポートしています。
    加えて、三角関数・対数・指数関数などの算術関数も利用できます。
  • アレイ(配列)型
    データ型としてアレイを導入しました。高速な書換え・検索が可能です。
  • 完全日本語対応
    AZ-Prologはコメント文は勿論、アトム・述語名・変数名・その他どの部分にも漢字が使えます。 勿論、内蔵エディタ(AzEdit)も漢字に対応しています。
  • グローバルレジスタ採用
    数値やアトム、それぞれ専用のレジスタが32個ずつ用意されています。
    アサートやファイルの操作なしにグローバルなデータを保存できますから、さらに高速に実行できます。
  • 任意の階層からより浅い階層に一気に実行制御を戻す大域脱出機能
    Prologの階層構造プログラムにおいて実行時にthrow述語のある階層から、Catch述語のあるより浅い階層に一気に実行制御を戻す(ジャンプする)事かが可能です。
  • プログラム開発をより容易にする豊富なサンプルプログラム集の付属
    より良い開発環境を提供するシステムユーティリティプログラム、プログラム作成のヒントとなる実用例のサンプルプログラム、プログラムの一部としてそのまま使えるユーティリティプログラムなどが付属しています。なお、一部OSの違いによりWindows版またはLinux版・Mac版のみ対応している機能がありますのでご了承下さい。
上部へスクロール