WSFN ( Which Stands for Nothing ) [1] は、Li-Chen Wangが作成したロボットを制御するためのインタプリタ型 プログラミング言語です。この言語は、可能な限り小さくなるように設計されており、"tiny" 言語[2]は、 Wang の以前の作品であるPalo Alto Tiny BASIC [3]に似ています。[4] WSFN は、1977 年 9 月にDr. Dobb's Journalで初めて発表されました。
この言語は主に、ロボットに特定の方向に移動するように指示する 1 文字のコマンドで構成されており、その他のコマンドはテストや基本的な数学演算を実行します。これらは、名前付きマクロにグループ化して、より複雑なプログラムを作成できます。元のバージョンには、ロボットをVDM-1ディスプレイ上のカーソルとして、またはCromemco Dazzlerディスプレイ上にグラフィカルにシミュレートするコードも含まれていました。これは、1969 年にLogoプログラミング言語に追加されたタートル グラフィックスに似ています。
拡張 WSFNは、 Harry Stewart によって書かれ、 1981 年にAtari Program Exchange [5]によって公開されたAtari 8 ビット コンピューター用の実装です。タートル グラフィックスのサポートに加えて、そのプラットフォームのグラフィックスとサウンド機能を制御するためのコマンドがいくつか追加されています。これは、「グラフィックスに重点を置いた初心者向け言語」として提供されました。[引用が必要]
構文
WSFN は、タートルやロボットの動きを制御するための 1 文字のコマンドで構成されています。これらのコマンドはいずれも、先頭に数字を付けることで繰り返すことができます。[2]たとえば、はFタートルを 1 ステップ前進させ、 は25F25 ステップ移動します。と はR、Lタートルをそれぞれ右または左に 1 単位回転させます。また、 を真北にリセットすることもできますN。ステップ サイズと回転単位はロボットのハードウェアによって定義されますが、タートル グラフィックス バージョンでは 1 ピクセルと 45 度に設定されています。ロボット バージョンでは欠落していますが、コンピューター バージョンでは、 はHタートルを画面の中央に戻し、 はC以前の描画をクリアします。したがって、次の文字列を使用して正方形を描くことができます。[6]
BCWHN25F2R25F2R25F2R25F
これらの命令は、描画色を黒に設定し、画面をクリアし(現在の色で塗りつぶします)、色を白に設定し、タートルをホームに戻し、タートルを北にリセットし、次に25ステップの長さの4本の線を描き、各線の間で右に90度回転させます。結果は、画面の中央に左下隅がある白い正方形になります。[6]
コマンドのリストを括弧で囲むことでマクロを作成することができます。例えば、正方形の1辺を描くコードを括弧内に入れて、それを4回呼び出すことで、同じ正方形を描くことができます。[6]
BCWHN4(25F2R)
マクロは他のマクロ内で呼び出すことができます。たとえば、次のコードは、画面の中央を回転しながら、それぞれ45度ずつオフセットされた8つの正方形を描画します。[6]
BCWHN8(4(25F2R)R)
Dマクロには、 efine コマンド (代わりに拡張 WSFN を使用)を使用して名前を割り当てることができます=。このコードでは、画面をクリアして描画をリセットする「X」というマクロと、正方形を描く「Z」という別のマクロを定義しています。次に、これらを使用して、上記の例と同じ回転する正方形を描画します。[7]
DX(BCWHN) DZ4(25F2R) X8(ZR)
WSFN には、とで増減できる単一の累算器 からなる基本的な数学機能があります。文字は、数字が出現できる場所ならどこにでも配置できます。各ステップの間に累算器を 5 回増分することで、一連の正方形を大きくすることができます。[2]A+-A
DX(BCWHN) 25A DZ4(AF2R) X8(Z5+AR)
この構文の副作用は、A-Aの数値で減分命令を実行するため、アキュムレータがゼロに設定されることです。同様に、A+アキュムレータの値は2倍になります。[2]
プログラム制御も同様に初歩的で、 IF/THEN/ELSE構造を扱うコマンドの数で構成されています。最も基本的な形式はTestコマンドで、アキュムレータが0以上の場合に2つのパスのいずれかに従います。たとえば、このコマンドは、アキュムレータが0以外の場合はタートルを左に90度回転させ、0の場合は右に45度回転させます。[2]
T(2L)R
T分岐構造のバリエーションには?、50%の確率でランダムに最初のまたは2番目の分岐にジャンプする や、Sロボットの接触センサーがトリガーされたかどうかをテストする などがある。[8]拡張WSFNは を変更して、Sタートルの前のカラーを返すようにし、以前の描画のヒット検出を可能にし、Eタートルが描画領域の端に当たった場合に右側のマクロにジャンプする dge テストを追加した。[9]オリジナルのWSFNには に相当するものがなくE、代わりに描画領域をラップして、タートルが画面の反対側に再表示されるようにする。[2]拡張WSFNは、このスタイルのプレイフィールドラップをオプションとしてサポートしている。[10]
WSFNコードは1文字のコマンドと再帰構文を使用しているため、非常に難解です。たとえば、これはシェルピンスキー曲線を描くWSFNプログラムです: [11]
DIT(-I2FI5RG5RI2FI+)2R DG4F DY (HN63F2R61FRC4 (2FI))
マクロ「I」の定義には、その中にIの呼び出しが含まれていることに注意してください。これはWSFNコンセプトの重要な側面です。言語は本質的に高度に再帰的であるため、フラクタルのような自己相似パターンのプログラミングを数行のコードで簡単に実現できます。[11]
拡張 WSFN の重要な概念は、マクロの実行中でもキーボードが常にアクティブであることです。これにより、キーボード入力によって実行中のプログラムを中断することができます。この技術を使用すると、タートルを特定の方法で動かすマクロを作成し、それをキーボードの文字に割り当てて、異なるキーを連続して押すことでこれらの動きを実行できます。W描画中にユーザーが応答する時間を与えるために、ait コマンドを所定の場所に追加することで、これを支援できます。[12]
キーワード
ドブス博士のオリジナルの論文より。[13]
拡張WSFNマニュアルより。[14]
参考文献
- ^ Atari コンピュータのブルーブック。WIDL ビデオ。1983 年。ISBN 9780684179216。
- ^ abcdef Wang 1977、334ページ。
- ^ ワン、リーチェン(1976 年 5 月)。 「パロアルト タイニー BASIC」。ドブ博士の日記。1 (5):12~25。
- ^ Rauskolb, Robert (1976 年 12 月). 「Dr. Wang の Palo Alto Tiny BASIC」(PDF) . Interface Age . pp. 92–108.
- ^ atariarchives.org の APX リスト
- ^ abcd スチュワート 1982、4ページ。
- ^ 王1977年、345ページ。
- ^ 王 1977、334、335頁。
- ^ スチュワート1982年、10ページ。
- ^ スチュワート1982年、3ページ。
- ^ ab Wang 1977、336ページ。
- ^ スチュワート1982年、5ページ。
- ^ 王 1977.
- ^ スチュワート 1982年。
文献
- Wang, Li-Chen (1977 年 9 月)。「ロボットの制御のための対話型プログラミング言語」。Dr . Dobb's Journal。第 2 巻、第 8 号。334 ~ 345 ページ。
- スチュワート、ハリー (1982)。拡張 WSFN (PDF)。APX。
