K−Prolog の特長

次へ

歴史

K-Prologコンパイラは、国産初のUNIX用Prolog言語処理系として 1983年に出荷を開始したK-Prologインタプリタをコンパイラのために 新しい実装技術で書き直して拡張した製品です。
実装技術については雑誌などで公表しておりますが、より洗練された方式を目指して 不断の改良を行なっています。
この間、機能的には世界初の漢字機能はもとよりモジュール概念や C言語インタフェース、キャッチアンドスロー、エラー処理などの新しい概念を 実装して評価を求め続けました。これらの機能は、多くの処理系が類似の機能として 実装してきており、また、Prolog言語の標準に組み込まれました。

言語

Prolog言語の仕様としては多くの処理系と同様にエジンバラ構文を採用しております。 さらに、ISOにおけるProlog言語の標準の制定に伴い、 言語仕様や組込み述語の標準への適合を推進しVersion5で完全適合としました。
バイト単位でしか文字を扱えない処理系がすべてであった時代から 文字単位での取り扱いを主張してきたのは他でもないK-Prologでした。 現在のISO規格では多バイト文字についても文字単位で取り扱うように 定められています。

言語仕様諸元

   整数の範囲 :  制限なし(無限多倍長)
  浮動小数点数 :  倍精度(double)
  最大アリティ :  65535
  最大アトム長 :  1023文字(漢字)
  文字列の表現 :  "
  最大文字列長 :  制限なし

実装技術

K-Prologはインタプリタとコンパイラで構成されます。インタプリタは それ自体高性能の中間コードコンパイラ方式のProlog処理系で高い開発効率を 持つ開発環境をサポートします。
コンパイラは別のロードモジュールとして提供され、開発環境からのコンパイルと 自立型コンパイルの両者に使えるようになっています。コンパイルコードは C言語を中間言語として機械語のロードモジュールに変換されます。また、 TROやインデキシングなど種々の 最適化を行なっております。
コンパイルはモジュール単位で行なわれ、コンパイルされたモジュールは インタプリタからインクリメンタルローディングによって読み込んで インタプリタコードと混在させて使うことが出来ます。また、makeにより 簡単に自立型ロードモジュールに組み込むことが出来ます。

マニュアル

日本語マニュアルをHTML形式で提供しています。
初学者にとって取り組みやすいマニュアルとなっております。

開発環境

ヒストリ機能やファイル名の指定を簡単にする拡張ファイル名、つづり訂正機能は、 100万ステップに及ぶPrologプログラムの開発経験の中から必要な機能として 育ってきたものです。また、cppと類似のプリプロセッサ機能も大規模な開発の 効率を上げるためにために導入されたものです。
Listing時に変数名を復元するようにしたのは実はK-Prologが世界で最初でした。
現実のアプリケーションの快適な開発のため細かい改良を続けてきた結果が 現在のK-Prologの姿を与えています。

プリプロセッサ

C言語におけるcppの役割は良く知られていると思います。K-Prologは cppと類似のプリプロセッサpppを備えています。基本的にはcppと同じ機能ですが、 Prolog言語と良く適合するように改良してあります。また、 プリプロセッサレベルのエラーも開発環境で対応できるようになっています。

C言語インタフェース

C言語のプログラムを接続するためにインタフェース定義ファイルを コンパイルする機能を実装しています。インタフェース定義ファイルは、 C言語の関数と引数の型を宣言するもので、引数の型として整数、浮動小数点数、 配列や文字列を指定できるのでC言語プログラムを容易に接続できます。
インタフェース定義ファイルのコンパイル結果はモジュールとなり C言語のプログラムはコンパイルされた述語と全く同じように使えるようになります。
C言語インタフェースの実例をサンプルプログラムとして提供しています。
Java言語インタフェース
Java言語インタフェースを解説します。

その他の機能

その他、機能の詳細についてはマニュアルの 機能編を参照して下さい。


次へ