2 The Interactive Development Environment

Denys Duchier and Andreas Sundstr�m

このチュートリアルは多くのコードの例を含み、進むとともにそれらを対話的に試してみる事が強く推奨されます。これは Mozart システムの対話開発環境を活用する事によりとても快適に行う事が出来ます。私達は普通それを OPI Oz Programming Interface と呼び、それは ``The Oz Programming Interface'' に広範に記述されています。このセクションでは、私達のコードの例を試す事を始められるのに過不足無い量の OPI についての学習をします。

2.1OPI を始める

Unix環境では、OPI はコマンド oz をシェルプロンプトから実行する事で開始します。Windows環境では、インストール後に提供しているであろう Mozart システムプログラムグループから Mozart を選んでクリックして下さい。この様なウィンドウを目にすることになるでしょう。

OPI はプログラミングのフロントエンドとして Emacs エディタを使っています。あなたが Emacs やその用語に親しんでいなければ、Emacs メニューバーのヘルプメニューからEmacs のオンラインチュートリアル [Sta91] を引いてみるといいでしょう。

開始直後のウィンドウは2つのテキストバッファに分かれています。Oz と呼ばれる上のバッファはあなたがコードの小片を書いて対話的に実行を行える場所です。それは Oz コードにとって、emacs lisp コードにとっての *scratch* バッファと同じ役割を演じます。下のバッファは *Oz Compiler* と呼ばれ、あなたの話を Mozart サブプロセスのコンパイラによって変換した結果を表示します。

2.2 Hello World

伝統的な Hello World の例から始めましょう。Oz バッファの中に以下をタイプして下さい:

{Show 'Hello World'}

この例は Oz が手続きを呼び出す一風変わった構文を示しています。: それは {}(curly braces) によって指示されます。ここでは、手続き Show がアトム(atom) 'Hello World' という1つの引数で呼び出されています。

この小片を実行するため、タイプした行にカーソルを合わせ、メニューバーの Oz メニューから Feed Line を選択しましょう。このようになるでしょう:

コンパイラからの変換は {Show 'Hello World'} を餌(fed)としてコンパイラに与えた結果として accepted の様になっていれば、正しく構文解析されてコンパイルされています。実行はされましたが、そうだとして、出力はどこでしょう?確かに実行はされているのですが、出力は *Oz Emulator* と呼ばれる別のバッファに表れます。:これは実行結果を含みます。Oz メニューから Show/Hide -> Emulator を選べば、このようになるでしょう:

2.3プログラマへの良いニュース

OPI は対話的コード開発をサポートする多くの特徴を持っています。

2.3.1コード編集

oz-mode は Oz のコードを編集するための主要なモードで、自動インデントだけでなくコードの色付けのための font-lock をサポートします。

2.3.2キーバインド

前に示した Oz バッファからだけでなく、oz-mode のどのバッファからでも Mozart サブプロセスと対話が出来ます。さらには、Hello World の例で実行した全ての動作は Oz メニューからの代わりにキーバインドからより便利に呼び出せます。

C-. C-l

現在の行をフィード(Ozに命令を取り込ませる)

C-. C-r

選択した部分をフィード

C-. C-b

全バッファをフィード

M-C-x

現在の段落(paragraph)をフィード

C-. C-p

同上

C-. c

*Oz Compiler* バッファの表示on/off切り替え

C-. e

*Oz Emulator* バッファの表示on/off切り替え

段落(paragraph)とは空白行で区切られた記述部分の事です。

2.3.3コンパイルエラー

OPI はコンパイラによって報告されたエラーの便利な引用もサポートしています。Oz バッファに以下の様なエラー含みのコードをタイプしてみましょう:

local A B in 
   A = 3
   proc {B}
      {Show A + 'Tinman'}
   end 
   {B 7}
end

そして M-C-x を使ってコンパイラにフィードしましょう。コンパイラは2つのエラーを報告し、私達はそれらを見る事になります:

C-x ` (Control-x backquote)は、最初のエラーメッセージを見えるようにしてソースバッファ中でバグが存在しているとされる場所にポインタを位置させます。

確かに、整数とアトムを加算すべきではありません!C-x ` をもう一度呼び出すと:

この様に、私達は誤って引数を取らない手続き(nullary procedure)を実引数(argument)に適用しています。

2.3.4グラフィカルな開発ツール

Mozart システムは多くのグラフィカルなツールを持っています。ここでは Browser のみに言及しましょう。これは ``The Oz Browser'' 中に広く記述されています。これまで、手続き Show を単に値を表示するために使っていました。その代わりに、Browse を使ってグラフィカルな表示インターフェースを得られます。例として、以下をフィードしましょう:

{Browse 'Hello World'}

以下の新しいウィンドウのポップアップを引き起こします:

あまり面白くないですね、しかしこのコードをフィードしてみましょう:

declare W H
{Browse foo(width:W height:H surface:thread W*end)}

今度は browser ウィンドウは部分的に知識が得られている(初期化されている)項のみを表示します(なぜなら WH は宣言されているものの値に束縛されていないので):

ここで W=3 をフィードしてみると、browser が私達が今まさに加えた情報を反映させるために自動的に表示を更新します。

H=5 をフィードすると再び browser は更新し全て具体化された項を表示します:

browser は並行計算(スレッド)の進行に伴う項の具体化(instantiation)の進化に加えてより多くの情報を見る事を可能にします。


Seif Haridi and Nils Franz�n
Version 1.4.0 (20080704)