ワードとは?

ここでいうワード(word)は、Mops/Forthのプログラムを構成する基礎的な単位です。計算機科学でいうword --- データ記憶・処理の単位、例えば、32ビットなど --- とは全く意味が異なります。

最も狭い意味でいえば、ワードとは、他のプログラミング言語でいう、関数(Function)やプロシーヂャー(Procedure)、あるいは、サブルーチン(subroutine)などに当たるものの総称です。

しかし、データ処理等の「動作」のある機能的単位という観点から限定しても、Mops/Forthのワードには、普通に関数や手続として想定されるものには当てはまらないようなものもの含まれています。それは、新しくワード(関数、手続等)を定義するに用いられるワードです。例えば、コロン":"やセミコロン";"は、単なる記号のように見えるかも知れませんが、実際にはどちらも固有の動作を持つワードです。変数の宣言に用いられる文字列("Variable"や"Value")もまたワードです。Mops固有のものとしては、クラスやメソッドを定義する際に用いる「記号」もワードに他なりません。これらは、開発環境内部的な働きをするワードといえます。また、スタック上のアイテムを並替・コピー・削除するスタック操作子もまたワードです。

私的な見解ですが、メッセージ(メソッド名)は関数に当たるような意味でワードと考えるのは難しいように思います。というのは、本来、メッセージは何らかのオブジェクトとバインドしないことには確定した意味(動作)を持たないからです。Mopsでは「オブジェクトとバインドされたメッセージ」がワードであると考えることもできるかも知れません。強いていえばメッセージは一種のprefixといえるかも知れません。

少し広げると、変数もワードです。実際、変数にはそれ固有の動作があり、単なる格納庫とはいえません。Mopsとして考えると、インスタンスやクラスもワードになります。
この定義では、上で述べたメッセージも含めて、Mops/Forthでは何らかの固有の働き(意味)を持つ文字列は、ほとんど全てワードに当たります。ワードでないのは区切り文字くらいのものでしょう。

最も広い意味としては、「空白文字またはテキスト境界で区切られた、非空白文字からなる一文字以上の文字列」をワードとする、という定義もあります。これでは、コメントの中に書かれた英単語もワードに含まれてしまいますが、大きく網をかけるという趣旨でしょう。通常は、この中でプログラムにとって意味があるものとして書かれたもの(つまり、コメントの内容としてのワードは除く)が、Mops/Forthワードといわれます。

Mops/Forthワードには既定義と未定義の別があります。未定義ワードを呼び出そうとすると、"undefined word"エラー(-13)が表示されます。

関連項目:





最終更新:2019年07月11日 07:51