(5/10からの続きです)
大幅にスクリプトを見直す際に、一番問題になるのはスクリプト間の連携の部分だなと頭の中で漠然と感じていました。
1つのスクリプトのメモリの上限が64KBである限り、64KBを超えるプログラムを作る必要がある場合はスクリプトを分割しなければなりません。
そのためにスクリプトAからスクリプトBにメッセージを送信して役割分担を行います。
図で表すと以下のおようなイメージです。
LSLやこれまでの自作言語はファイル=スクリプトのため、
と読み替えることができます。 そして開発環境ではファイルとファイルの関係性は特に表示されませんので、
というように、スクリプトAとスクリプトBの間の関係性は、その2つのファイルを参照して見なければなりません。
同じような関係で、オブジェクトとオブジェクトのメッセージのやり取りがありますが、
他のオブジェクトのスクリプトで何が行われているかは把握できませんので、これは管理する必要はありません。
Hitoshina - Langugageのhlファイルは、1つ抽象度をあげてオブジェクトにあたるものを.hlファイルで定義するように設計しました。 そうすることで各スクリプトをscript型の変数として定義する事ができ、スクリプト間のLinkMessageを管理する事ができるようになりました。 具体的にはスクリプトAからチャンネルXでスクリプトBにLinkMessageを送信する定義をしている場合、スクリプトBでチャンネルXを受ける定義をしていなければ、コンパイル時に警告が表示されます。
以下はHitoshina - Languageでのサンプルコードです。
script a;
script b;
a #init {
"message":-100 -> b;
}
b #linkmsg :-100 |str msg| {
msg -> owner;
}
この言語設計により安心して抜け漏れのないメッセージ送信の処理が記述できるようになり、スクリプトの処理の整理を上手く進める事ができました。