レッスン1

はじめよう

Mopsを起動するため、もしも‘Mops ƒ’フォルダが開いていなかったなら、そのアイコンをダブルクリックしてください。そして、"PowerMops"という名前のついたアイコンをダブルクリックします。Mopsウィンドウがスクリーン上に現れるはずです。


(あなたのMopsウィンドウが上と完全に同じではないとしても、問題ありません!)

OS X上では、Apple(アップル)メニューの項目は平常通りで、Mopsによって影響されません【Mopsは英語アプリケーションなので、日本語システムにしている場合は、項目名が英語に変わりますが。】。Application(アプリケーション)メニュー(例えば、PowerMopsメニュー)は‘About Mops…’メニューアイテムをもっていて、これは現在あなたが走行させているMopsのバージョンを知らせるダイアログを表示します。

OS 9上では、アプリケーションメニューというものはなく、アップルメニューが‘About Mops…’メニューアイテムを持っています。

【この段落は、英文とすこし違います。n.s.】
File(ファイル)メニューは、よくあるものと同じですが、見慣れない項目(load…)を持っています。後で、これを用いて、あなたのプログラムコードを含むテキストファイルをロードすることができます。‘Save Dictionaly’アイテムは、Mops辞書をファイルとして保存します。これによって、あなたのコードをロードしたMopsの現状を保存できます(スナップショットなどとも呼びます)。

Edit(エディット)メニューは通常のアイテムを持ちます — Cut、Copy、Paste、そしてClearです。これらは、Mopsウィンドウで利用できます。

残りのメニュー、List、ShowおよびUtilitiesは、Mopsプログラムを書いたりデバッグしたりするのに便利な、多くの操作を含んでいます。 これらのメニューについて、もっと有用な情報は、もっとあとで論じられるでしょう。

Mopsウィンドウ


当面、Mopsウィンドウの上方の部分と、ウィンドウの下方部分のもっと広い部分にある文字は無視しましょう。

ウィンドウの下方部分には点滅するカーソルが見えると思います。これはワードプロセッサやテキストエディタでよくみられるものです。何かを打ち込んでみてください。このウィンドウは実際にテキスト編集ウィンドウであることがわかります。ここには、普通のテキストエディタと同じように、テキストを打ち込んだり編集したりすることができます。

Enter(エンター)キー


しかし、重要な違いが一つあります。これは、導入部でもう見ました。つまり、ENTERキーの使い方です。多くのテキストエディターでは、ENTERキーはRETURNキーと同じものとして扱われています。 しかし、Mopsでは、ENTERはMopsコマンドの実行を引き起します。これを試してみることにしましょう。

Mopsは辞書のように振る舞う、ということができます【原文は、「前にそう述べた」とありますが、該当部分は今はないようです。古いマニュアルの導入部から削られた部分を適当に修正してここに訳しておきました。】。言い換えれば、‘PowerMops’を開いたそのときに、Macは自動的にMopsの基本的語彙をそのメモリーにロードします。 ワード—何らかの文字のグループ—をタイプしてENTERを押す度毎に、 Mopsはその辞書内に当のワードを検索し、それに結びつけられている命令を実行します。 あなたが打ち込んだワードが現在のMops辞書内にないときは、スクリーン上にメッセージが現れ、Mopsはそのワードを発見できなかったと知らせます。ちょっと、やってみましょう。

もしも他のコンピュータ言語をご存知なら、Mopsでは(他のForthでも同じですが)、"ワード"という言葉は普通のコンピュータ用語とは異なる使われかたをすることに注意してください。 Mopsワードとは、空白(空白文字【半角空白】、タブまたは改行(CR))で区切られた一群の文字のことです。 C言語のようなプログラミング言語では、‘if(a>b)foo(bar);’(解らなくてもかまいません)のようにすることができますが、Mopsでは、これは1ワードとなってしまいます。というのは空白を含んでいないからです。 他の言語では区切り文字だったり特殊文字だったりする文字でも、Mopsワードの一部となることができます。 というのは、ワードを区切るのは空白文字だけだからです。

さて、RETURNとENTERの違いをはっきりさせましょう。

まず、意味のないワードを書いて<RETURN>キーを押してください:
Nao<RETURN>
この行は、ちょうどテキストエディターでタイプしたのと同じように、Mopsウィンドウ内に書かれるだけでしょう。 それ以外は何も起りません。 さて、こんどは、もう一度、ただし、ENTERを使ってみましょう:
Nao<ENTER>
Error # -13 undefined word
Nao
     ^
Current object: TW class: MLTEFWIND
ここでは、いくつかのことが起こっています。 ENTERを使ったため、MopsはNaoをコマンドとして解釈しようとしました。 Mopsから返ってきたメッセージは、あなたが打ち込んだワードは未定義(undefined)であるということを示しています。 これは、その名前が辞書には見つからなかったということを意味します。 —この一瞬の間に、MopsはMops辞書の3000を超えるワードの名前と、この名前とを比較したのです。 Mopsはまた、何かが間違っていることを知らせるビープ音も発するでしょう。

そして最後に、メッセージ行の下に点滅するカーソルが現れ、Mopsはあなたが次のコマンドを打ち込むことを待っているということを示しています。

さて、数999を打ち込んで、ENTERを押してみましょう。 今度はMopsからのメッセージは現れません—あなたが打ち込んだ数値が単純に受け入れられました。 それはどこに行ったのでしょう?スタックの上に置かれたのです。 あなたはそれをMopsウィンドウの上方部分の中に見ることができるでしょう。 それはスタックの表示なのです。:
Stack: depth 1
999
今度は、数888をタイプしてENTERを押してください。 これは、数999の上に置かれることがわかるでしょう。
Stack: depth 2
888
999
スタックの深さは今は2です。二つの数値がそこにあるからです。

Mopsが用いる基底数を変えることができます。 基底を10進(Mopsの起動時の基底です)から16進("hex"と略記します)に変えた時に何が起るかを観察しましょう。 次にのようにタイプしてください。
hex<ENTER>
スタック表示(Mopsウィンドウの上部)は次のように変わるはずです
Stack: depth 2
378
3E7

スタック上の数は実際には変化していません。ただ、表示が10進ではなく16進になったのです。 (16進数に慣れていないなら、もっと完全な説明がレッスン14にあります。) 10進に戻したいときは、次のように打ち込むだけです:
decimal<ENTER>

さて今度は、大文字を使って同じことを試してみましょう(つまりHEXとDECIMALを打ち込んでみましょう)。 結果は全く同じになるはずです。 これは、Mopsは、その辞書にあるワードのついてはcase-sensitiveではなく、大文字と小文字を区別しないことがその理由です。 内部的には、すべて大文字に変換されています。

次に、もう一度、未定義ワードをタイプしてみましょう。 エラーメッセージがまた現れますが、スタックが空っぽになることにも気付くでしょう。 これは、Mopsの‘エラー処理’のもうひとつの側面です—エラーに際してはスタックを空にするのです。

チュートリアル目次へ
前へ < はじめに 次へ > レッスン2



最終更新:2018年12月03日 21:07