(57)【特許請求の範囲】
【請求項１】
コンピュータプログラムを生成する装置であって、
ユーザによって操作できる物理空間内で配置可能であり、かつ異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトと、
物理空間で発生する物理オブジェクトに対する物理操作を観察し、対応する電気信号を生成するセンサと、
入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力するプロセッサと、を備える、コンピュータプログラム生成装置。
【請求項２】
物理オブジェクトの属性がユーザによって割当て可能である、請求項１の装置。
【請求項３】
物理オブジェクトの操作には、物理オブジェクトをピックアップすること、物理オブジェクトを降ろすこと、物理オブジェクトをスライドさせること、物理オブジェクトを別の物理オブジェクトにタッチさせることを含む、請求項１の装置。
【請求項４】
センサが、グリッドの回りでのオブジェクトの移動を検出する基準グリッドを備える、請求項１の装置。
【請求項５】
センサがカメラである、請求項１の装置。
【請求項６】
物理オブジェクトが観察に参加する、請求項１の装置。
【請求項７】
物理オブジェクトの信号をセンサが伝送する、請求項６の装置。
【請求項８】
物理オブジェクトの各々がプログラムの一部を表す、請求項１の装置。
【請求項９】
物理オブジェクトが、ロボットフィギュアを表す、請求項１の装置。
【請求項１０】
物理オブジェクトが条件論理テストを実行する、請求項１の装置。
【請求項１１】
コンピュータプログラムを生成する方法であって、
センサが、物理空間内で異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトの内の少なくとも１つの物理操作に基づいて電気信号を生成し、
プロセッサが、入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力する
コンピュータプログラム生成方法。
【請求項１２】
物理オブジェクトが所定の属性を備える、請求項１１の方法。
【請求項１３】
複数の物理オブジェクトの内から選択された１つの物理オブジェクトが、所定の属性を備え、物理空間内に配置される、請求項１１の方法。
【請求項１４】
複数の物理オブジェクトの内から選択された１つの第２の物理オブジェクトが、所定の属性を備え、物理空間内に配置される、請求項１３の方法。
【請求項１５】
さらに、プロセッサが物理操作に対応する外部表示を生成する、請求項１１の方法。
【請求項１６】
外部表示を生成することが、画像を生成し、画像を視覚ディスプレイ・デバイスに出力することを備える、請求項１５の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的に、有形コンピューティングに関し、さらに特定すると、プログラムのプログラム言語要素またはプログラミング言語を表す物理オブジェクトを操作することによるコンピュータ・プログラムの作成に関する。有形コンピューティング・システムの基本機能は、各物理オブジェクトに任意のプログラム言語要素を割り当てることができる実在する三次元作業空間のコンピュータによる観察を要求し、各オブジェクトに対する属性の割当て、または各オブジェクトの移動、あるいはその両方の結果、新しいプログラム構成要素を生成することである。
【０００２】
【従来の技術及び発明が解決しようとする課題】
ヒューマン・コンピュータ・インタフェース（ＨＣＩ）は、レバーやボタンから現在のキーボード、マウス、およびグラフィック・ディスプレイに至るまでの人間の機械との歴史的な対話から進化してきた。しかし、人とコンピュータ・プログラムの対話は、通常、デスクトップ・コンピュータ上のグラフィック・ユーザ・インタフェース（ＧＵＩ）用途に限られる。ＧＵＩの本質とは、仮想環境で現実世界の用途を描くメタファー(metaphor:比喩的表現) ―つまりアイコン―である。したがって、ＧＵＩによるソリューション (解決策）では、現実的なメタファーを利用する。
【０００３】
遍在(ubiquitous)コンピューティングは、多くのコンピュータが、ユーザに気づかれない内に、物理的環境全体で使用可能であるコンピューティングに対するアプローチである。しかし、この種のコンピューティングは、ＧＵＩスタイルの対話メタファーを、ユーザの物理的環境に配置される大型コンピュータ端末および小型コンピュータ端末にエクスポートすることによって特徴付けられる。
【０００４】
「拡張された現実」つまり「コンピュータ拡張環境」は、実在する媒体および
計算上の媒体の統合化を試みるコンピューティングに対する別のアプローチである。例えば、物理的文書は、物理的文書がある実在する机の上へのコンピュータ・ディスプレイのビデオ投影を使用してデジタル文書で移動することができる。
【０００５】
ユーザが、従来のコンピュータ画面内で三次元モデルを操作するための機構として物理的プロップを与えられる、「受動現実世界インタフェース・プロップ(prop)」も開発された。
【０００６】
仮想現実の到来とともに、ユーザが自分の手を動かし、仮想環境内の仮想構成要素と対話できるようにするために触覚に基づくインタフェースが開発された。
【０００７】
デジタル情報を日常の物理オブジェクトおよび環境に結合することにより物理的世界を拡張する、より新しいタイプのＨＣＩが「有形(tangible)ユーザ・インタフェース」（ＴＵＩ）と呼ばれる。例えば、フラット・パネル表示装置とは、物理オブジェクトに結び付けられた三次元デジタル情報との触覚に基づいた対話を可能にする物理的に具体化されたウィンドウである。したがって、ＴＵＩでは、物理オブジェクトが仮想アイコンを置換し、物理オブジェクトの操作が仮想世界で起きていることを表す。
【０００８】
直接操作プログラムを使用するその他のシステムには、物理オブジェクトのグラフィック表記のすべて仮想環境内でのユーザ操作により、プログラムを構築できるようにする「ツーントーク(ToonTalk)」が含まれる。
【０００９】
本発明は、前記のように、プログラムを作成および生成する場合に仮想環境の制限を克服するシステムを提供する。
【００１０】
本発明は、さらに、コンピュータ対話が、プログラムと、埋込みプログラムを持つデジタルアーチファクト(artifacts)を作成できるようにするシステムを提供する。
【００１１】
本発明の有形コンピューティング・システムでは、ユーザは、選択された物理オブジェクトを操作し、プログラムと他のデジタル構造を作成、制御し、このようにして汎用の制限されていないプログラムを作成する。
【００１２】
本発明は、一人または複数のユーザによる作業空間内の一セットのオブジェクトの操作を観察、理解し、オブジェクトの集合の操作に反応する有形コンピューティング・システムを提供する。作業空間における人々、位置、および物事、あるいはさらに一般的には、関心のある位置は、少なくとも、特定のセットのオブジェクトでの指定されたセットの運動が、コンピュータまたはコンピュータのネットワークに通信できる程度まで観察できなければならない。有形コンピューティング用システムに必要とされる理解の最小レベルは、有形言語を認識し、観察された入力が正しいか、あるいはエラーが検出されたときに、適切な動作(action)をトリガする能力として表されることができる。動作には、例えばコンパイル、解釈、または変換のような他のデジタル構造の生成、アクティブ・アプリケーション、例えば、ユーザ・インタフェースのための制御イベントの生成、およびエラー状態に対するエラー・メッセージの生成または是正動作を含むことがある。
【００１３】
本発明は、実在する表記からコードを規定するために使用される有形プログラミング言語も提供する。本発明の有形プログラミング言語は、オブジェクトでなされるまたはオブジェクトに適用されるジェスチャーにより他のデータ・オブジェクトでの演算を呼び出すために、観察される位置からピックアップされ、ドロップされ、使用されうる一セットの有形データ・オブジェクトとしてデータを表す。このようなジェスチャーには、例えば複数のオブジェクトに同時にタッチすることが含まれる。
【００１４】
また、本発明の有形プログラミング言語は、プログラムをメモリに保存し、メモリからプログラムを復元すること、およびデータ値を入力および出力することを含む、外部操作を許容する。
【００１５】
本発明の有形コンピューティング・システムでは、システムは、作業空間内でオブジェクトに対し行われていることを観察または感知し、これらの動作を手近な作業での有意ステップとして解釈し、これらの動作の結果としてシステムの状態を更新する。本発明の有形コンピューティング・システムでは、ユーザは、自らの計算上のニーズにさらに優れた制御を与えられる。有形オブジェクトの具体性によって、一グループのユーザは、有形プログラミング言語要素と自然に対話できるようになる。
【課題を解決するための手段】
【００１６】
本発明は、コンピュータプログラムを生成する装置であって、ユーザによって操作できる物理空間内で配置可能であり、かつ異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトと、物理空間で発生する物理オブジェクトに対する物理操作を観察し、対応する電気信号を生成するセンサと、入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力するプロセッサと、を備える、コンピュータプログラム生成装置である。
【００１７】
コンピュータプログラムを生成する方法であって、センサが、物理空間内で異なるプログラム言語要素が各々割り当てられた複数の物理オブジェクトの内の少なくとも１つの物理操作に基づいて電気信号を生成し、プロセッサが、入力として電気信号を受信し、プログラミング規則に従って物理オブジェクトの属性を割り当てし直し、割り当てし直された属性に基づいて、物理オブジェクトに適用された動作及び物理オブジェクトの属性の意味を理解して、理解内容を表すプログラムコードの対応する部分を出力するコンピュータプログラム生成方法である。
【００１８】
本発明の他の面は、添付図面とともに取られる、以下のさらに詳説された説明から明らかになるだろう。
【００１９】
【実施の形態】
図１は、本発明の有形コンピューティング・システム１０の１つの好ましい実施の形態を示す。図１に示されるように、実在する三次元の物理オブジェクト、つまりフィーコン（物理的アイコン：phicon）１２にプログラム言語要素を割り当てることができ、各フィーコン１２に属性を割り当てることによって、新しいプログラム要素、つまりイベント１４が生じる。各プログラム要素、つまりイベント１４は、有形コンピューティング・システム１０のイベント認識サブシステム１６によって認識される。認識されたイベント１４は、イベント・ストリーム１８によってイベント処理サブシステム２０に伝達される。各イベント１４は、待ち行列２２の中に入れられる。イベント１４は、状態遷移サブシステム２４によって待ち行列２２から順次引き出される。状態遷移サブシステム２４は、状態遷移が発生したか否かを判断する。言語定義サブシステム２６およびシステム状態記憶サブシステム２８は状態遷移サブシステム２４によってアクセスされ、システムの状態を判断する。処理更新３０は、フィーコン１２のイベント１４をフィーコン処理サブシステム３２で処理することによって発生する。それから、イベント１４の内部ソフトウェア表現３４がコード生成サブシステム３６によって使用され、コード記憶サブシステム４０に記憶されるプログラミング・コードを生成する。さらに、イベント１４の内部ソフトウェア表現３４は、イベント１４の外部表現のために、出力プレゼンテーション・サブシステム３８によって使用される。出力プレゼンテーション・サブシステム３８は、画面での標準グラフィック・プレゼンテーション（図示されていない）であってよい。コード記憶サブシステム４０に記憶されるコード生成サブシステム３６によって生成されるコードは、ソース・コード、オブジェクト・コードあるいはその他のコンパイル可能または実行可能なプログラム言語の形式であってよい。
【００２０】
有形コンピューティングは、１）対象となるオブジェクト１２を観察し、ユーザの動作を推論するか、２）ユーザを観察し、関係するオブジェクト１２を推論するか、あるいは３）これら２つのアプローチの組み合わせによって実現される。オブジェクト１２は、例えば、信号を伝送することによって、観察に積極的に参加することができる。オブジェクト１２は、例えば、ビデオ画像のオブジェクト分析を通して観察に消極的に参加してもよい。有形コンピューティングに必要とされる観察には、１）操作中のオブジェクト１２を識別すること、２）オブジェクト１２を配置すること、および３）オブジェクト１２に関連するイベント１４を決定することが含まれる。イベント（複数の場合がある）１４の決定には、例えば、オブジェクト１２に対して何が行われているのか、またはどのオブジェクト１２がどの組み合わせで使用されているのかが含まれる。実在するオブジェクト12は、計算の部分を表すために使用される。システム１０は、これらの実在のオブジェクト１２を使用して、意図されたデジタル表現を作り上げる場合に、ユーザによってなされる動作を観察する。オブジェクト１２および使用される動作のセットが、設計つまり意図を表現するための正確な「ボディーランゲージ」を形成する。
【００２１】
例えば、ユーザは、電気的な装置または機械的な装置内にあるハードウェアの実際の部品を採取し、それらのパーツの異なったアセンブリまたはデバイス修理のための命令を指定することができる。地理的な領域または建物の物理モデルは、物理モデルによって表される人々、位置、および物事に関連するデータを通してナビゲーションを制御するために使用されることができる。人々、位置、および物事の物理モデルが、イベントまたは考えられるイベントのナレーション、例えば、アニメーション、マンガ、映画脚本、またはプロセス説明を作成するために使用されることがある。後方支援状況、例えば、在庫管理（資材統制）、生産フロー、または戦術上の位置の物理表現は、一グループの人々が、複雑な手順または行動方針について推論してから、その表現を使用して手順または行動方針を文書化できるようにするために使用されることができる。
【００２２】
オブジェクト１２を最初に認識することは、さまざまな方法で達成され得る。例えば、ユーザは、ユーザがオブジェクトに割り当てることを希望するアイデンティティに対応する事前に割り当てられた位置にタッチすることによって、オブジェクト１２を識別することができる。同様に、物理的なスイッチベースの観察システムが使用されてもよい。別の用途の広い観察機構は、カメラ１６２が作業空間で受動的なオブジェクトを観察する、仮想観察である。観察領域のサイズおよび構成は、視野またはカメラ１６２の解像度の粒度を調節することによって変更されてもよい。
【００２３】
また、有形コンピューティング・イベントの視覚的な観察は、作業空間に導入されている物理的アイコン( フィーコン) １２の種類を識別するために色を使用することを含んでもよい。例えば、各フィーコン１２は、事前に選択された色のより大きな円に取り付けることができる。色のセットは、ブロック、フィギュア(figure)などの考えられる種類のタイプのフィーコン１２の範囲をカバーする。１つのあらかじめ定義された色が優勢となる連続する複数の領域を探すことによって、オブジェクト１２の初期認識が可能になる。システム１０は、バーコードおよびデータグリフ（絵文字）を含むさまざまな特徴を区別することによってオブジェクトを識別するためのその他の視覚的な技法を使用することがある。
【００２４】
有形コンピューティング・システム１０は、オブジェクトのアイデンティティを継続して認識できるか、あるいはシステム状態の一部としてオブジェクトのアイデンティティを記憶することができる。継続的な認識によって、オブジェクト１２は認識信号を伝送するか、あるいはそれが関係している各イベント１４の間にイベント認識サブシステム１６によって消極的に感知される。システム状態情報は、実際にイベント認識サブシステム１６によって観察されなくても、各イベント１４にどのオブジェクト１２が関係しているのかを追跡調査するために使用されてもよい。
【００２５】
データ構造は、複数のセットの物理的に近接して位置するオブジェクト１２を含む。１つまたは複数の指定された比較オブジェクト１２は、例えば、「上回る」、「下回る」、または「以上」のような条件論理テストを実行するために一セットのデータについて動作し、テストの結果に基づいて適切な動作を呼び出す。比較オブジェクト１２は、例えばテストを実行し、動作を呼び出すためにオブジェクト１２にタッチすることによるなどのジェスチャーで呼び出されることができる。１つまたは複数の反復オブジェクトは、データ構造の要素に沿って反復するか、指定された数までカウントするか、指定された数からカウントすることによって反復する。トレーニング段階によって、その反復オブジェクトが呼び出される各反復中に、一セットの有形言語動作が学習され、反復オブジェクト１２と関連付けられ、適用されることができるようになる。反復オブジェクト１２は、例えば、その学習された動作をデータ構造上で実行するためにそのオブジェクトにタッチすることによるなどのジェスチャーによって呼び出されてもよい。また、一セットの学習された動作は、オブジェクト１２と関連付けられ、複雑な動きをカプセル化するためのメカニズムを提供することができる。したがって、有形プログラミングでは、データは、観察中の位置からピックアップされ、移動され、オブジェクト１２でなされるか、オブジェクト１２に適用されるジェスチャーによって他のデータに対する動作を呼び出すために使用することができる一セットの有形データ・オブジェクト１２によって表される。このようにして、フィーコン１２のユーザ操作は、オブジェクトおよびその中のプログラミングするのに関連付けられたあらゆる表現を表す。
【００２６】
図２に図示されるように、フィーコン１２の作業空間４２内での位置を観察するには、座標系、つまりグリッド６０を識別する必要がある。フィーコン１２は空間を占めるため、グリッド６０のセル６２のサイズは、１つのフィーコン１２がグリッド６０上で１つの位置、または多くの位置を占有するように定義されることができる。座標系も層を成していてもよい。図２に図示されるように、イベント認識サブシステム１６のカメラ１６２は、グリッド６０上の多くの視覚的に強調されたフィーコン１２を観察する。視覚的に強調されたフィーコン１２は、１２という値を運ぶ「１２」データフィーコン１２２や「２で除算」演算を運ぶ結合データ／演算子フィーコン１２４のようなそれらの属性を示す観察可能なラベルを運ぶ。カメラ１６２は、画像を処理し、例えばデータフィーコン１２２のデータ「１２」の画像を出力プレゼンテーション・サブシステム３８のディスプレイ３８２上で表示する有形コンピューティング・システム１０のイベント認識サブシステム１６に、フィーコン１２を含む作業空間４２の画像を伝送する。
【００２７】
表１は、有形コンピューティング・システム１０内の１つまたは複数のフィーコン１２にユーザが適用できる動作のクラスを概略する。例えば、ユーザが、フィーコン１２を裏返したり、スピンさせたり、軸回りに回転することなどによって、フィーコン１２の向きを変更することができる。有形コンピューティング・サブシステム１０はこの動作を観察し、フィーコン１２の状態および属性および動作に基づいて、プログラミング・イベントを生成する。
【００２８】
好ましい実施の形態では、本発明の有形プログラミング方法によって、ユーザ／プログラマは、ユーザが選択したフィーコンを対話的に操作し、プログラムを作成することができる。データは、作業空間４２内の観察可能な位置からピックアップされ、作業空間４２内の別の観察可能な位置でドロップされ、フィーコン１２でなされるまたはフィーコン１２に適用されるジェスチャーによって他のデータフィーコン１２に対する動作を呼び出すために使用できる一セットの有形データフィーコン１２で表される。このようなジェスチャーには、例えば、複数のオブジェクト１２にいっしょにタッチすることが含まれる。データ構造は、複数のセットの物理的にグループ化されたフィーコン１２を含み、さらに、一つのセット内のフィーコン１２が互いに関してどのように配置されるのかを含んでもよい。比較フィーコン１２は、一セットのデータフィーコン１２の上で動作し、条件付き論理テストを実行する。このようなテストは、例えば、「上回る」または「以上」を含み、比較フイーコンにはテストに基づいて適切な動作を呼び出す。比較フィーコン１２は、そのテストおよび呼び出された動作を実行するためにジェスチャーによって呼び出されてもよい。このようなジェスチャーには、例えば、データフィーコン１２に比較フィーコン１２をタッチ（接触）させることが含まれる。反復フィーコン１２は、データ構造の要素に沿って、あるいは指定された数までカウントするか、指定された数からカウントすることによって反復する。トレーニング段階によって、いったん反復オブジェクト１２が呼び出されると、各反復中に、一セットの有形言語動作が学習され、反復オブジェクト１２に関連付けられ、適用されることができる。反復オブジェクト１２は、その学習された動作をデータ構造上で実行するためにジェスチャーによって呼び出されてもよい。例えば、データ・オブジェクト１２に反復オブジェクト１２をタッチさせることによって、データ構造上で学習された動作が実行される。一セットの学習された動作が、オブジェクト１２と関連付けられて、複雑な動きをカプセル化するためのメカニズムを提供することもできる。このような手順オブジェクト１２は、その学習された動作をデータ構造上で実行するためにジェスチャーによって呼び出されてもよい。例えば、データ・オブジェクト１２に手順オブジェクト１２をタッチさせる。１つまたは複数の制御オブジェクト１２は、学習された動作のトレーニング段階を制御する。制御オブジェクト１２にタッチすると、トレーニングセッションが停止する。学習された動きのある別のオブジェクト１２に制御オブジェクト１２をタッチさせると、学習された動作が廃棄され、タッチされたオブジェクト１２が再トレーニングできる。また、本発明の有形プログラミング言語は、データ値の入力および出力だけではなく、プログラムをメモリに保存すること、およびプログラムをメモリから復元することを含む外部動作（演算）に備える。
【００２９】
このようにして、プログラムは、多様なタイプのフィーコン１２に対し実行された観察された動作によって作成されることができる。有形言語用に設計されるインタプリタは有形プログラムを実行し、これらのプログラムは有形インタフェースを使用して、保存、検索、編集、および再実行することができる。図３は、プログラムを構築するために使用されるこれらの多様なタイプの有形フィーコン１２を示す。表２は、図４に図示されるフィーコン１２をその表現および動作とともに一覧表示する。
【００３０】
数ブロック５０は、データフィーコン１２２などの数字表現及び数字演算などの結合データ／演算子フィーコン１２４を表すために使用される。例えば、演算には、加法、減法、乗法、および除法が含まれることができる。はかりとして図示されるチェッカフィーコン５２は、条件式を表すために使用される。ロボットフィーコン５４は、反復および手続き要約を表すために使用される。例えば、ロボットフィーコン５４はタッチされると、ロボット５４はそれ以降の動作を思い出す。これは、フィーコン１２のロボットトレーニングと呼ばれる。ロボットフィーコン５４が再びタッチされると、それはロボットフィーコン５４に近接するフィーコン１２のすべてに対して再びそれらのそれ以降の動作を実行する。カウントダウンロボットフィーコン５６は反復を表すために使用される。カウントダウンロボットフィーコン５６をタッチすると、それはそれ以降の動作を思い出す。ストップライトフィーコン５８は、インタフェース状態制御を表すために使用される。例えば、ストップライトフィーコン５８にタッチした結果、ロボットフィーコン５４またはカウントダウンロボットフィーコン５６のロボットトレーニングを終了する信号が発生できる。図４および図５は、図２および図３に図示される言語要素を使用して、フィボナッチ・シーケンス(Fibonacci sequence)を決定するために、プログラムがどのように構築されるかを示す。
【００３１】
図４に図示されるように、ユーザが、さまざまな数と変数を表す一連のブロック５０をピックアップし、ブロック５０を線の内のグリッド６０上にドロップしてデータは初期化され、このようにしてデータ・シーケンスを形成する。この例では、ブロック５０によって表される数は、デフォルトによりゼロに設定される。プログラムの初期状態は、最初の２つのブロック５０にデータ値Ｉを入力することによって設定される。次に、ユーザはストップライトフィーコン５８をピックアップし、それを数の行に水平に近接していない任意のグリッド要素の上に置く。
【００３２】
次に、図４に図示されるように、ロボットフィーコン５４が初期化され、トレーニングされる。ユーザがロボットフィーコン５４をピックアップし、それを数の行のすぐ左側にドロップすると、ロボットフィーコン５４のトレーニングが発生する。ユーザはロボットフィーコン５４にタッチし、ロボットフィーコン５４のトレーニングの開始を知らせる。
【００３３】
次に、図４に図示されるように、ユーザが、ロボット５４のすぐ右側にある、行の中の第１の数ブロック５０をピックアップし、第３の数ブロック５０にこの第１の数ブロック５０をタッチさせ、それによって加法動作を実行すると、１つの反復のためのトレーニングが発生する。つまり、第１の数ブロック５０の値が第３の数ブロック５０の値に加算される。それから、ユーザは第２の数ブロック５０をピックアップし、第３の数ブロック５０に第２の数ブロック５０をタッチさせ、別の加法動作を生じさせる。つまり、第２の数ブロックの値が第３の数ブロック５０の値に加算される。それから、ユーザはストップライト５８にタッチし、ロボットフィーコン５４に対するトレーニング終了を知らせる。
【００３４】
ただちに実行されるか、別のプログラミング言語に変換され得るプログラムが、このようにして作成された。ロボットフィーコン５４のすぐ右側にあるブロック５０の行には特別な意味があり、ロボット・コンテキスト（文脈）と呼ばれる。ロボット・コンテキストに関して取られる動作は、ロボットフィーコン５４に関する相対的な位置を意味すると解釈される。反復は、増分オフセットを、これらの数ブロック５０に関連するこれらの値に加算することによって達成される。オフセットは、ゼロからコンテキスト内のオブジェクト５０の数に増分される。コンテキストの外の値を引き出す反復が発生すると、ロボットフィーコン５４の実行が停止する。
【００３５】
次に、図５に図示されるように、ユーザが第３の数ブロック５０の値をゼロにリセットすると、シーケンス計算の再初期化および実行が発生する。実行は、ロボットフィーコン５４に再びタッチし、ロボットフィーコン５４に、行中の数ごとに計算ステップを実行させることによって達成される。
【００３６】
フィボナッチ・シーケンスを決定するために図４に関して前述される有形入力イベントは、表３に示される。
【００３７】
フィボナッチ・シーケンスプログラミングのロボットトレーニングは、図４および表３を使用して、以下に示すようにトレースすることができる。ロボットフィーコン５４は、セル位置（０，０）に配置され、ユーザ６４がロボットフィーコン５４にタッチすると、トレーニングが開始する。ロボット・コンテキスト内の数ブロック５０は、ロボットフィーコン５４のすぐ右側のセル位置（０，１）、（０，２）および（０，３）に位置される。ロボット・コンテキスト内に位置されるセルでのロボットトレーニングの間にイベントが発生するたびに、ロボット・コンテキスト数が、ロボットの位置の右側にある水平セル６２から１を差し引いた数として計算される。セル位置（０，１）にある第１の数ブロック５０がピックアップされると、ロボット・コンテキスト数が０に設定される。イベント「ピックアップ」に関して、セル位置（０，１）およびコンテキスト数０が思い出される。第１の数ブロック５０がセル位置（０，３）にある数ブロック５０にタッチされると、イベント「タッチ」、位置（０，３）およびロボット・コンテキスト２が思い出される。第１の数ブロック５０の値が、セル位置（０，３）に位置する数ブロック５０の値に加算される。第１の数ブロック５０がその元のセル位置（０，１）に戻されると、イベント「ドロップ」、位置（０，１）およびロボット・コンテキスト数０が思い出される。ユーザ６４がセル位置（０，２）から第２の数ブロック５０をピックアップすると、イベント「ピックアップ」、位置（０，２）、およびロボット・コンテキスト数１が思い出される。第２の数ブロック５０がセル位置（０，３）にある数ブロック５０にタッチされると、イベント「タッチ」、位置（０，３）、およびロボット・コンテキスト数２が思い出される。第２の数ブロック５０の値は、セル位置（０，３）に位置する数ブロック５０の値に加算される。第２の数ブロック５０がその元のセル位置（０，２）に戻されると、イベント「ドロップ」、位置（０，２）およびロボット・コンテキスト数１が思い出される。ユーザ６４がセル位置（１，７）にあるストップライト５８をタッチすると、ロボットトレーニングは停止する。
【００３８】
フィボナッチ数の計算は、ロボットフィーコン５４に関して思い出された命令を実行することによって、数ブロック５０のシーケンス全体について計算される。図５は、記憶されたシーケンスの実行を示す。ロボットフィーコン５４は、セル位置（０，０）に位置され、ユーザ６４が２度目にロボットフィーコン５４にタッチすると（１度目は、前記のようにシーケンスを学習するためであった）実行が開始する。ロボット・コンテキスト内の数ブロック５０は、ロボットフィーコン５４のすぐ右側のセル位置（０，１）、（０，２）、および（０，３）に位置される。ロボット・コンテキスト内に位置するセルでのロボット実行の間にイベントが発生するたびに、記憶されたロボット・コンテキスト番号が、ロボット動作が発生しなければならないセル位置を計算するために使用される。セル位置は、記憶されたロボット・コンテキスト数とロボットフィーコン５４の水平セル位置と１とを加えたものとして計算される。第１の記憶された動作によって、セル位置（０，１）にある数ブロック５０に対するピックアップ・イベントが生じる。次に記憶された動作によって、セル位置（０，３）にある数ブロック５０でタッチ・イベントが生じる。第１の数ブロック５０の値は、セル位置（０，３）に位置する数ブロック５０の値に加算される。次に記憶された動作によって、セル位置（０，１）の数ブロック５０のドロップ・イベントが生じる。次に記憶された動作によって、セル位置（０，２）にある数ブロック５０のピックアップ・イベントが生じる。次に記憶された動作によって、セル位置（０，３）にある数ブロック５０でタッチ・イベントが発生する。第２の数ブロック５０の値は、セル位置（０，３）に位置する数ブロック５０の値に加算される。次に記憶された動作によって、セル位置（０，２）にある第２の数ブロックをドロップするイベントが生じる。
【００３９】
ロボット・コンテキスト数を１というオフセット分増加すると、命令の加法シーケンス全体が、右側に１セル位置、スライドする。このようにして、１というオフセットが使用されると、（０，０），（０，２）、（０，０）、（０，１）、（０，２）、（０，１）に位置するセルに対する動作の元のシーケンスは、（０，１）、（０，３）、（０，１）、（０，２）、（０，３）および（０，２）に位置するセルに対する演算（動作）になる。オフセット・コンテキスト数が数オブジェクト５０の数を越えるセル位置を計算すると、ロボットフィーコン５４の動作、つまりプログラムの実行が停止する。
【００４０】
図４に図示されるフィボナッチ有形プログラムは、このようにして、反復および計算を含む手順要約を説明する。ユーザ６４が、フィーコン１２の物理位置、フィーコン１２の物理外観、およびフィーコン１２の任意の移動に基づき、プログラミング規則に従って割当てし直されることができる属性を備える物理オブジェクト１２を、物理的にタッチするか、移動するか、あるいはそれ以外の場合には接触していることに注意する必要がある。各フィーコン１２はユーザまたはシステムによってそのフィーコン１２に割り当てられる属性によって説明されるため、フィーコン１２は、特定の形式に制限されていない。
【００４１】
図６の（ａ）及至図６の（ｄ）に図示されるように、ユーザがある特定の有形オブジェクト１２をタッチするか、押すか、ピックアップするか、ドロップするか、あるいはそれ以外の場合有形オブジェクト１２と対話すると、対話がイベント認識サブシステム１６によって観察される。イベント認識サブシステム１６は、特定のオブジェクト１２および特定のオブジェクトの関連する属性に基づいて、適用された動作およびその関連付けられた意味を理解する。システム１０は、観察されることに対し反応し、プログラム言語または実行済みプログラム言語（例えば、グラフィック・ディスプレイ）、あるいはその両方を生成する。図６の（ａ）及至図６の（ｄ）は、ドロップする、ピックアップする、タッチする、および「複数のオブジェクトにいっしょにタッチする」というイベントのそれぞれを認識する連続画像を描く。図６の（ａ）に図示されるドロップ・イベントは、グリッド６０上で以前には空であった位置にあるオブジェクト１２の出現によって決定される。図６の（ｂ）のピックアップ・イベントは、グリッド６０上の以前は占有されていた位置からのオブジェクト１２の消失によって決定される。図６の（ｃ）に図示されるように、第２のオブジェクト１２の以前には占有されていた位置６４内での移動は、第２のオブジェクト１２に対する第１のオブジェクト１２のタッチを示す。オブジェクト１２は、タッチ・イベントとして適格化するためには、例えば３３％という位置６４のしきい値パーセントを越えなければならない。図６の（ｃ）および図６の（ｄ）に図示されるように、２つのオブジェクト１２にいっしょにタッチすることは、１つの位置６４内に２つのオブジェクト１２を置くことによって示される。したがって、図６の（ｄ）に図示されるように、２つのオブジェクト１２にいっしょにタッチすることは、実際には、２つのイベント、即ち、位置（１，３）からのピックアップおよび位置（２，２）でのタッチ、に対応することができる。
【００４２】
別の実施の形態では、有形プログラムは、有形コンピューティング環境内のインタプリタによって実行されるか、ＪａｖａやＣのような主流のプログラミング言語に変換されてもよい。図７では、変換関数は、ロボットフィーコン５４が保存ボード７４上にドロップされ、その後にそれ以降の実行が続く場合に呼び出される。データ定義に関して初期条件の捕捉を可能にする規則(convention)も許容できる。例えば、同等なＪａｖａコードを生成するためには、変換の各呼出しが、ロボットフィーコン５４を実行するための主要な方法でＪａｖａクラスを作成する。ロボットフィーコン５４の動きは、この生成クラス用のＪａｖａ方法に変換される。一時変数は各有形位置に関係付けられ、これらの変数は位置値に一致する。これらの位置に関してなされた動作は、中間計算のためにこれらの一時変数を使用することができる。データ・フロー分析は、それ以降のコード生成ステップでの変数を排除することができる。さらに、位置変数および数動作方法を定義するすべての生成されたコードによって共用される１つの共通クラスＪＣＧがある。各ロボットフィーコン５４は、識別されたコンテキストを有する方法によって表され、各識別されたコンテキストは、ヌルとして、コンテキスト・アレイとして、またはtempアレイ（一時アレイ）の中のアレイ・インデックスとして定義されることができる。ロボットフィーコン５４の各主要ルーチンは、指定されたあらゆる非ヌル・コンテキストに対してループ内で呼び出され、反復プログラム構造を生じさせる。さらに、各チェッカ５２呼出しが、条件式のif-then-else構造を定義する。
【００４３】
一例に、表４から表１１は、さまざまな物理操作の状態遷移を説明する。特に、ドロップ、タッチ、ピックアップ、およびデータエントリの状態遷移が、この有形プログラミング言語(Tangible Programming Language) について説明される。
【００４４】
特に、各状態Ｑは、作業空間に導入される有形プログラミング・オブジェクトＯの集合、作業空間の位置Ｌ、オブジェクトＯの位置Ｌ上へのマッピングιo 、処理モードｍおよびオブジェクトＯの選択された１つＳの関数である。具体的には、Ｏは、すべての数ブロック５０、チェッカ・ブロック５２、ロボット５４と５６、およびストップライト５８の合併(union)である。各オブジェクトＯにはあるドメインにおいて一つのセットの属性を有することを理解する必要がある。これらの属性は、例えば「値（ｏ）」がオブジェクトＯの「値」属性を意味する関数記号によって説明されるのが好ましい。表４は属性を概略する。
【００４５】
また、位置Ｌが「未知の」位置、「手にした（既知の）」位置、および作業空間位置を含むことも理解する必要がある。さらに、作業空間位置は、三つ組＜ボード、行、列＞として定義されるのが好ましく、この場合「ボード」は「ツール領域(Tool Area) 」ボード、「保存領域(Save Area) 」ボード、および「作業領域(Work Area) 」ボードを含む。ツール領域ボードは、オブジェクト・タイプおよび属性値を未定義フィーコン１２に割り当てるために使用される。保存領域は、保存ルーチンを呼出すために使用される。作業領域とは、前記のように、オブジェクトが、プログラミング・イベントを生成し、データ構造またはデータ・シーケンスを形成するために配置されるところである。「未知の」位置は、オブジェクトの位置が未定義になると使用される。「手にした」位置は、オブジェクトとのジェスチャーの間に以前の位置からそのオブジェクトがピックアップされたか、除去されたことを示すために使用される。
【００４６】
処理モードｍは、「トレーニング」、「通常」、および「実行」を含む。入力Ｉは、有形インタフェース(Tangible Interface)・イベントｅおよびイベントの位置ｌ両方の関数である。有形インタフェース・イベントｅは、「ドロップ」、「ピックアップ」、「タッチ」、および「データエントリ」を含む。イベントの位置ｌは、モードに依存する。「通常」モードと「トレーニング」モードでは、有形インタフェースは、グローバル・ボード位置を提供する。また、「実行」モードでは、イベント位置ｌは、実行するロボットの位置に関連することができる。なお、ｌは英文字の小文字のエルを表す。
【００４７】
このようにして、初期システム状態ｑo は、有形プログラミング・オブジェクトＯの集合、作業空間の位置Ｌの関数であり、ιo （ｏ）は、「ツール領域」内のツール・オブジェクトを除くすべてのオブジェクトがボードから外れ、何も選択されない場合の、オブジェクトＯの位置への初期マッピングである。したがって、前述されたように、任意の状態Ｑは以下の通りとなり、
Ｑ＝｛Ｏ，Ｌ，ιo ，ｍ，Ｓ｝
ここで、
Ｏ＝有形プログラミング・オブジェクトのセット＝｛数｝∪｛チェッカ｝∪｛ロボット｝∪｛ストップインジケータ｝、｛ロボット｝＝｛歩行ロボット｝∪｛カウントダウンロボット｝となり、「｛数｝」は集合｛ｏ｜ｏ∈Ｏ、種類（ｏ）＝数｝を表す。
Ｌ＝｛未知｝∪｛手にする｝∪Ｎ3 
Ｎ3＝ＢxＮxＮ＝三つ組＜ボード、行、列＞の集合
Ｂ＝｛ツール領域、作業領域、保存領域｝
ιo ：Ｏ→Ｌ；
ｍ∈Ｍ＝｛通常，トレーニング，実行｝
Ｓ⊆Ｏ＝選択されたオブジェクト
θLは、ιo の反転マッピングである（つまり、ιo -1、オブジェクトへのマッピング位置）；
Ｉ＝｛ｅ，ｌ｝，
ｅ＝有形インタフェース・イベント∈Ｅ＝｛ドロップ，ピックアップ，タッチ，データエントリ｝
ｌ＝イベントの位置∈Ｌ−（｛未知｝∪｛手にする｝）；
Ｔ⊆Ｏは、ツール領域内のツール・オブジェクトである。注記。これはｔij∈Ｔ，Ｌo（ｔij）＝＜ツール領域，ｉ，ｊ＞になるように、事前に定義された構成である；
β：Ｌ→Ｂは、位置Ｌのボード上への射影関数である（例えば、β（＜ｂ，ｉ，ｊ＞）＝ｂ）；及び
ｑo＝初期システム状態＝｛Ｏ，Ｌ，ιo （ｏ）＝＜ツール領域，ｉ，ｊ＞ｉｆｏ＝ｔij∈Ｔ，そうでない場合は未知，Ｓ｛｝｝
【００４８】
有形プログラミング言語は、非常にコンテキストに敏感であり、物理的な現れ（例えば、オブジェクト、ジェスチャー）に対する一致 (correspondence)によって制約される限られた数の要素を含む。したがって、有形プログラミング言語は状態遷移関数によって表される。
【００４９】
有形プログラミング言語の状態遷移関数δは、表５−８に示される。状態遷移関数は、状態(States)（つまり、ｑ∈Ｑ）を入力値（つまり、δ：ＱxＩ→＞Ｑ）を基準にした状態にマッピングする。表５から表１１は、どのオブジェクト（Ｓ）が選択されるかどうかの変化性、インタフェース・モード（ｍ）、入力動作（θL （ｌ）およびメモリのあるロボットとメモリのないロボットの間の区別）によって作用されるオブジェクト、入力動作が発生しているボード（β（ｌ））、および入力イベント（Ｅ）の種類によって特徴付けられるＱxＩのサブセットに対するこのマッピングを説明する。この特徴付けは、その遷移が表５から表１１に示される３２のルールによって説明される、１０８０個の可能な状態−入力の組み合わせ（５*３*６*３*４）を導びく。さらに、表５から表１１に記述
される誤差遷移ルールは、相互に排他的ではない。
【００５０】
有形プログラミング言語定義での条件論理は、データ・オブジェクト５０をチェッカ・オブジェクト５２に適用することにより表される。これは、チェッカ・オブジェクト５２を２つの数ブロック５０の間に置き、チェッカ５２にタッチすることによって行われる。これは、ルールＴ７(Rule T7) で説明される。数オブジェクトおよびチェッカ・オブジェクトが、同じボード上の隣接する列位置で同じ行にすべて位置合わせされるものとする（またはされなければならない）ことを理解する必要がある。チェッカ５２は、以下に示す比較の内の１つを行うことができる。つまり、上回る（＞）、以上（≧）、下回る（＜）、以下（≦）である。大きい方の比較（＞、≧）が使用されると、数が比較され、より大きい数がチェッカ５２の左側（つまり、低い方の列値を有する位置）に置かれる。より小さい数は、チェッカの右側に置かれる。同様に、小さい方の比較（＜、≦）が使用されると、より小さい数が左側に置かれ、より大きい数はチェッカの右側に置かれる。
【００５１】
図８は、さらに一般的な比較動作を示す。ロボット５４及び／又は５６が数ブロック５０とチェッカ５２の各側面に一直線に置かれる場合、チェッカ５２が起動されると、適切なロボット５４及び／又は５６が呼び出される。即ち、「上回る」または「以上」の比較（＞または≧）が使用されると、数ブロック５０が比較され、比較が当てはまる場合には、チェッカ５２の左側（つまり、より低い列値が指定される位置）にあるロボット５４及び／又は５６が起動される。当てはまらない場合、右側にあるロボット５４及び／又は５６が起動される。小さい方の比較が使用されると、ロボット起動のシーケンスはスワップされる。数ブロック５０が比較され、比較が当てはまる場合、チェッカの右側にあるロボット５４及び／又は５６が起動される。当てはまらない場合は、左側にあるロボット５４及び／又は５６が起動される。
【００５２】
有形プログラミング言語には、２つのタイプのロボット・オブジェクト５４または５６がある。つまり、歩行ロボット５４およびカウントダウンロボット５６である。歩行ロボット５４は、隣接する位置、つまり同じボード、同じ行、連続する位置に位置するオブジェクト５０の線と関連付けられる。カウントダウンロボット５６は、それらがカウントのために使用するというそのコンテキストとして単独の数オブジェクトを備える。したがって、カウントダウンロボット５６の場合、コンテキストは、ロボットがドロップされるところのわずか１位置右側で終了する。
【００５３】
ロボットトレーニング中動作が発生するとつねに、以下の項目が記録される。１．イベント、ｅ∈Ｅ＝（ドロップ、ピックアップ、タッチ、データエントリ）２．イベントがコンテクスト関係であったか、通常であったか
３．イベントが通常のイベントであった場合、イベント位置、ｌ∈Ｌ−（｛未知｝Ｕ｛手にする｝）
４．イベントが、コンテキスト数がロボット５４または５６の列位置に関するコンテキスト・オブジェクトの列オフセットによって定義されるコンテキストであった場合のコンテキスト数
【００５４】
ロボット５４および５６は、トレーニングセッション中に記録された動作を順番に再生することによって実行される。ロボットが歩行ロボット４である場合、トレーニングされた動作のセット全体が繰り返し実行され、実行される反復の数はロボットのコンテキストのサイズに基づく。ロボットがカウントダウンロボット５６である場合、トレーニングされた動作のセット全体が、ロボットのコンテキストの数値によって示される回数、実行される。
【００５５】
表５から表１１は、以下に示す例外はあるが、ロボット動作によってなされる状態遷移を決定するために再び使用される。
１．イベントがコンテキストイベントであり、ロボットがカウントダウンロボット５６である場合、入力動作によって動作されているオブジェクト５０は、オブジェクトのコンテキスト番号によって決定される。即ち、コンテキスト番号がｃであり、ロボット位置が座標＜ボード、行、列＞により指定される場合、これが有効な位置であるならば、動作されているオブジェクトは、＜ボード、行、列＋ｃ＞（即ち、θL（＜ボード、行、列＋ｉ＞）に位置するオブジェクトである。図９は、カウントダウンロボット５６の動作を示す。
２．イベントがコンテキストイベントであり、ロボットが歩行ロボット５４である場合、入力動作によって動作されているオブジェクト５０は、オブジェクトのコンテキスト数および反復数によって決定される。反復数はゼロで始まり、コンテキストのサイズまで増分する。即ち、コンテキスト番号がｃである場合、反復番号はｉであり、ロボット位置は座標＜ボード、行、列＞によって指定される場合、これが有効な位置であるならば、動作されているオブジェクトは、＜ボード、行、列＋ｃ＋ｉ＞に位置するオブジェクト（即ち、θL（＜ボード、行、列＋ｃ＋ｉ＞）である。図１０は、歩行ロボット５４の動作を示す。
３．ロボット５４および５６の動作は、なんらかのエラー状態がある場合には停止される。
４．歩行ロボット５４のコンテキスト位置は、それらが有効な位置であることを確実にするために各反復の前にチェックされる。歩行ロボット５４の実行は、それ以外の場合は停止される。
【００５６】
さらに、有形プログラミング言語には、実行されているロボット５４または５６に保存領域内のロボットと同じラベルが付いている場合には、同等なＪａｖａコードがこのロボット呼出しに生成されるという規定がある。コード(Code)生成は、以下に詳細に説明される。
【００５７】
有形プログラミング言語は自体のインタプリタを有する。ロボット・オブジェクト５４および５６は、プログラムの動作を具体化し、永久記憶装置に保存されることができる。有形プログラミング言語プログラムは、例えばＪａｖａやＣのような他の汎用プログラミング言語で任意のプログラムに変換されてもよい。これによって、有形インタフェースは、プログラムが物理オブジェクト１２を配列することによって作成されるという独特な機能を備えた汎用プログラミング環境になる。
【００５８】
有形プログラミング言語のＪａｖａへの変換関数は、表１２、表１３および表１４に示される。変換が呼び出されるたびに、主方法関数が指定されるＪａｖａクラスが生じる。表９、表１０および表１１の状態遷移ルールＴ６は、呼出しステップを概略する。各ロボット・オブジェクト５４または５６の挙動は、この生成クラスのＪａｖａ方法に変換される。
【００５９】
コード生成のこのバージョンの場合、一時変数が各有形位置に関連付けられる。これらの変数は、対応する位置値の「一時［ボード］［行］［列］(Temp[board][row][column])」および「Ｉｎ＿Ｈａｎｄ」呼ばれる。表１２、表１３および表１４では、記号“Ｔｅｍｐ（ｌ）”が「一時［ボード］［行］［列］」を表すために使用され、この場合ｌ＝＜ボード、行、列＞である。それらの位置に関してなされた動作は、中間計算のためにこれらの一時変数を使用できる。データ・フロー分析は、次のコード生成ステップでこれらの変数を排除することができるだろう。各ロボット５４およｂ５６は、コンテキスト・アレイ「コンテキスト(Context) 」をパラメータとして持つ方法によって表される。表１２、表１３および表１４では、記号“Ｃｏｎｔｅｘｔ［ｃ］”が、指定されたイベントのコンテキスト数「ｃ」のコンテキスト・アレイ位置を表すために使用される。
【００６０】
有形プログラミング言語の条件論理は、データ・オブジェクト５０をチェッカ・オブジェクト５２に適用することにより表される。これは、２つのデータ・ブロック５０またはデータ・ブロック５０のセットの間にチェッカ・オブジェクト５２を配置し、チェッカ５２をタッチすることによって実行され、ルールＴ７およびＧＫに記述される。チェッカ５２のコードの生成には、チェッカ５２と関連する数、およびオプションでチェッカ５２の各分岐に関連するロボット・オブジェクト５４及び／又は５６を見ることが必要とされる。
【００６１】
このようにして、以下を定義することができる。
チェッカ５２のｎ桁右側のオブジェクトＲＨＳの位置としての“ＲＨＳ（ｌ，ｎ）”
チェッカ５２のｎ桁左側のオブジェクトＬＨＳの位置としての“ＬＨＳ（ｌ，ｎ）”、および
このチェッカ５２（例えば“＞”または？“＜”）と関連する条件演算子としての“ｏｐｅｒ”
【００６２】
ＲＨＳが非ロボット・オブジェクトであり、チェッカ５２の２桁右側に位置する、ＲＨＳ（ｌ，２）の場合、またはＬＨＳが非ロボット・オブジェクトであり、チェッカ５２の2桁左側に位置する、ＬＨＳ（ｌ，２）の場合、この条件論理の生成されたコードは以下の通りである。
0003777830.tif 000002
【００６３】
ＲＨＳはロボット・オブジェクト５４及び／又は４６であり、チェッカ５２の２桁右側に位置するＲＨＳ（ｌ，２）で、ＬＨＳがロボット・オブジェクト５４及び／又は５６であり、チェッカ５２の２桁左側に位置するＬＨＳ（ｌ，２）である場合、
“ＲＨＳＭｅｔｈｏｄΟ”は、右ロボット５４または５６から生成される方法を示し、
“ＬＨＳＭｅｔｈｏｄΟ”は、左ロボット５４または５６から生成される方法を示す。
【００６４】
この条件論理のコードは、以下によって与えられる。
0003777830.tif 000003
【００６５】
各ロボット方法は、そのラベル属性によって名前付けされ、この場合“ｎａｍｅ”がロボット“ｌａｂｅｌО”のラベル属性である。
【００６６】
ロボット方法が呼出されると必ず、ロボット・コンテキストがパラメータとして渡されなければならない。即ち、ロボットの現在位置に隣接するＴｅｍｐ位置は、正しい寸法のコンテキスト・アレイに変換される。このコードは、以下の記号“ＧｅｔＣｏｎｔｅｘｔО”によって示される。
【００６７】
歩行ロボット５４にコンテキストがない場合、以下のコードが生成される。
0003777830.tif 000004
以下のコードが、他のすべての歩行ロボット５４に生成される。
0003777830.tif 000005
以下のコードが、すべてのカウントダウンロボット５４に生成される。
0003777830.tif 000006
【００６８】
図１から図９に図示されるように、有形プログラミングが、プログラミングされた汎用コンピュータ・システム上で実現されるのが好ましい。ただし、有形プログラミングは、特殊目的コンピュータ、プログラミングされたマイクロプロセッサやマイクロコントローラ、およびＡＳＩＣやその他の集積回路のような周辺装置統合型回路素子、離散エレメントの回路のような配線による電子回路または論理回路、ＰＬＤ、ＰＬＡ、ＦＰＧＡまたはＰＡＬのようなプログラマブル論理回路、または類似物でも実現できる。
【００６９】
当業者によって理解されるように、本発明は、本発明の精神またはその本質的な特徴から逸脱することなく他の特殊な形式で具体化されることができる。例えば、任意の実在するオブジェクトは、プログラム機能またはグループを表すために使用され、実在するオブジェクト自体が数多くのオブジェクトを含むか、数多くのオブジェクトを割り当てられることができる。実在するオブジェクトのコンピュータによる観察は視覚的であってもよいし、代わりに電子的感知によってもよい。電子的感知は、圧力差(differentiation)感知、オブジェクト・サイズ感知、オブジェクト形状キャパシタンス感知や誘導感知を含む。オブジェクトは、属性を表すように「命令され(charged)」、例えば、数ブロックが「Ｘ」個のユニット（単位）を表わすよう命令されることができる。さらに、オブジェクトは、それ自体を識別する信号を受信機に発することができる。いくつかの種の好ましい実施の形態が示され、記述されたが、多くの変化および変更が、添付の特許請求の範囲の適用範囲を逸脱することなくその中で行われることができることを理解する必要がある。
【００７０】
このようにして、本発明は、前記に概略される特定の実施の形態とともに説明されたが、多くの他の変更およびバリエーションが当業者には明らかとなることは明らかである。したがって、前記に説明されるような本発明の好まれる実施の形態は、制限的ではなく、例示的となることが意図される。さまざまな変更が、以下の特許請求の範囲に定義されるように、本発明の精神および適用範囲から逸脱することなく加えられることがある。
【００７１】
【表１】
0003777830.tif 000007
【００７２】
【表２】
0003777830.tif 000008
【００７３】
【表３】
0003777830.tif 000009
【００７４】
【表４】
0003777830.tif 000010
【００７５】
【表５】
0003777830.tif 000011
【００７６】
【表６】
0003777830.tif 000012
【００７７】
【表７】
0003777830.tif 000013
【００７８】
【表８】
0003777830.tif 000014
【００７９】
【表９】
0003777830.tif 000015
【００８０】
【表１０】
0003777830.tif 000016
【００８１】
【表１１】
0003777830.tif 000017
【００８２】
【表１２】
0003777830.tif 000018
【００８３】
【表１３】
0003777830.tif 000019
【００８４】
【表１４】
0003777830.tif 000020
【図面の簡単な説明】
本発明の好まれる実施の形態は、以下の図に関して詳細に説明されるだろう。
【図１】本発明の有形コンピューティング・システムの図である。
【図２】視覚的な有形インタフェースの要素を示す。
【図３】プログラミングに使用されるさまざまな物理オブジェクトを示す。
【図４】フィボナッチ・シーケンスを計算するプログラムの起動ステップおよびトレーニングステップを示す。
【図５】フィボナッチ・シーケンス・プログラムの実行および結果を示す。
【図６】（ａ）乃至（ｄ）視覚的な有形インタフェースでのさまざまなイベントを示す。
【図７】視覚的な有形インタフェースでの変換機能の呼出しを示す。
【図８】チェッカ・オブジェクトによって実行される条件付き論理を示す。
【図９】カウントダウン・ロボット・オブジェクトによって実行される反復を示す。および、
【図１０】歩行ロボット・オブジェクトによって実行される反復を示す。
【図１】
0003777830.tif 000021
【図２】
0003777830.tif 000022
【図３】
0003777830.tif 000023
【図４】
0003777830.tif 000024
【図５】
0003777830.tif 000025
【図６】
0003777830.tif 000026
【図７】
0003777830.tif 000027
【図８】
0003777830.tif 000028
【図９】
0003777830.tif 000029
【図１０】
0003777830.tif 000030