JP2021144369A - Data processing apparatus and data processing method - Google Patents
Data processing apparatus and data processing method Download PDFInfo
- Publication number
- JP2021144369A JP2021144369A JP2020041450A JP2020041450A JP2021144369A JP 2021144369 A JP2021144369 A JP 2021144369A JP 2020041450 A JP2020041450 A JP 2020041450A JP 2020041450 A JP2020041450 A JP 2020041450A JP 2021144369 A JP2021144369 A JP 2021144369A
- Authority
- JP
- Japan
- Prior art keywords
- input
- tile
- data
- output
- execution
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000012545 processing Methods 0.000 title claims description 46
- 238000003672 processing method Methods 0.000 title claims 3
- 238000000034 method Methods 0.000 claims description 202
- 238000010586 diagram Methods 0.000 claims description 20
- 238000011156 evaluation Methods 0.000 claims description 13
- 230000008859 change Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 2
- 230000014509 gene expression Effects 0.000 abstract description 19
- 230000006870 function Effects 0.000 abstract description 9
- 230000008569 process Effects 0.000 description 34
- 230000007246 mechanism Effects 0.000 description 7
- 238000010079 rubber tapping Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 4
- BWBONKHPVHMQHE-UHFFFAOYSA-N tiocarlide Chemical compound C1=CC(OCCC(C)C)=CC=C1NC(=S)NC1=CC=C(OCCC(C)C)C=C1 BWBONKHPVHMQHE-UHFFFAOYSA-N 0.000 description 4
- 229960002171 tiocarlide Drugs 0.000 description 4
- 101001019059 Homo sapiens Homeobox protein Meis3 Proteins 0.000 description 3
- 101000575036 Homo sapiens Putative homeobox protein Meis3-like 1 Proteins 0.000 description 3
- 102100025551 Putative homeobox protein Meis3-like 1 Human genes 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000003825 pressing Methods 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 239000003086 colorant Substances 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000011835 investigation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Images
Landscapes
- Digital Computer Display Output (AREA)
- Stored Programmes (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
Description
本発明はプログラミング言語の入力と編集およびプログラムの実行方法とプログラムによる機器制御方法に関する。 The present invention relates to input and editing of a programming language, a method of executing a program, and a method of controlling a device by a program.
アルゴリズムの視覚的表現については、JIS規格などで規定されているフローチャート形式や、そのほか様々な記法が考案されている。その中の一つにデータフローグラフ形式があり、そのグラフを直接実行するデータフローマシンについても、そのアーキテクチャについていくつかの提案がされている。また、グラフィカルユーザーインターフェースをベースにした各種データ処理装置や、機器制御装置などでは、オペレータによる操作介入や、機器の状態遷移時などのイベントに反応する手続きを記述する形式のイベント駆動アーキテクチャも提案開発されており、それらの提案の中には、イベント駆動とオブジェクト指向を組み合わせたものも提案されている。実例としてはMicroSoft社のMFCと呼ばれるC++言語のライブラリなどがあげられる。 Regarding the visual representation of the algorithm, the flowchart format defined by the JIS standard and various other notations have been devised. One of them is the data flow graph format, and some proposals have been made for the architecture of the data flow machine that directly executes the graph. In addition, for various data processing devices based on the graphical user interface and device control devices, we have also proposed and developed an event-driven architecture in the form of describing procedures that respond to events such as operator interventions and device state transitions. Some of these proposals are a combination of event-driven and object-oriented programming. An example is MicroSoft's C ++ language library called MFC.
特許文献1では、PLC回路のグラフィカルなプログラミングをラダー図によって行うことが示されている。
本発明の目的は、キーボード入力をあまり必要としないようなプログラム作成実行環境を提供し、その実行環境による機器制御装置を提供することにある。 An object of the present invention is to provide a program creation execution environment that does not require much keyboard input, and to provide a device control device based on the execution environment.
上記目的達成のため、プログラムの記述形式として、図式的表現形式(プログラミング「言語」)を導入する。このような図式的表現形式の代表としてフローチャート図が挙げられるが、フローチャート図の表現規則は計算機か解釈実行するのに必要なほど厳密ではなく、記述に相当の自由度とあいまいさが許容されているため、計算機への直接解釈実行指示としてはそのままでは適さない。フローチャート図を解釈実行するためにはかなりの記述の制約を課す必要がある。また、フローチャート図の例として図5を見ると、処理の記述に相当のテキスト表現が依然としてあるために、入力と編集を物理キーボードなしで行うのは容易ではない。このため、表現図式の採用には、記述の厳密さと、文字入力の少なさと、さらにロジックの可読性の高さが求められる。 In order to achieve the above purpose, a schematic expression format (programming "language") will be introduced as a program description format. A typical example of such a schematic representation format is a flowchart diagram, but the representation rules of the flowchart diagram are not as strict as necessary for a computer or interpretation execution, and a considerable degree of freedom and ambiguity are allowed in the description. Therefore, it is not suitable as it is as a direct interpretation execution instruction to the computer. In order to interpret and execute the flowchart diagram, it is necessary to impose considerable description restrictions. Also, looking at FIG. 5 as an example of a flow chart, it is not easy to input and edit without a physical keyboard because there is still a considerable amount of textual representation in the description of the process. Therefore, in order to adopt the expression diagram, strictness of description, less character input, and high readability of logic are required.
本発明では、キーボードを装備しないデジタル機器、例えばタブレットやスマートフォンなどの上でのプログラミングを実現するために、通常のプログラミング言語のようなテキストベースではなく、記号や矢印を使用した視覚的な表現を使用する。
現在のほとんどのプログラミング言語の記述形式は文字テキストによる記述になっており、入力作成や変更編集にはフルキーボードデバイスを必要とする。このため、動作アルゴリズムを変更可能とする機能を組み込み機器に搭載しようとする場合、フルキーボードを搭載するか外付け可能端子を用意し、外付けのキーボードを接続する必要がある。
In the present invention, in order to realize programming on a digital device without a keyboard, such as a tablet or a smartphone, a visual expression using symbols and arrows is used instead of a text-based programming language as in a normal programming language. use.
Most programming languages today are written in textual text and require a full keyboard device for input creation and modification editing. For this reason, when trying to equip an embedded device with a function that allows the operation algorithm to be changed, it is necessary to mount a full keyboard or prepare an externally attachable terminal and connect an external keyboard.
例えばエアコンの運転開始タイマーの機能について、標準では「現時間からt時間後に運転開始」と指定する方式を標準で提供しており、この機能に関するAPI(Application Programming Interface)がユーザーに公開されていて、基本的な動作、「機器を運転させる」や、「内蔵時計の値を読み取る」などの、基本操作が公開され、さらにエアコン本体に搭載されているプログラミング言語処理機構によって駆動可能になっているとする。 For example, regarding the function of the operation start timer of the air conditioner, the standard method of specifying "start operation t hours after the current time" is provided as standard, and the API (Application Programming Interface) related to this function is open to the user. , Basic operations, basic operations such as "driving the device" and "reading the value of the built-in clock" are open to the public, and can be driven by the programming language processing mechanism installed in the air conditioner body. And.
このようなユーザープログラマブルなエアコンでユーザーがタイマーのロジックを変更して「現在時刻から指定の時間後に起動」ではなく、「指定の時刻に起動」するように指定方法の変更を実現するプログラミングを行う場合を考える。すると、テキストベースのプログラミング言語の場合には、入力と編集に多量の文字入力を必要とし、物理キーボードのない状況での作業は非常に困難である。代わりに、エアコンそのものにフルキーボードを装備させるという解決手段も機器全体のコストを上げることになる。また、USB端子を装備してキーボードを外付けする手段も考えられるが、キーボードをエアコン機器の付属品とすると、コストの問題が解決しない。この例ではエアコンという比較的高額な機器のケースを考えているが、目覚まし時計などへの適用を考えた場合、この問題は顕著となる。 With such a user-programmable air conditioner, the user changes the logic of the timer to perform programming to change the specification method so that it "starts at the specified time" instead of "starts after the specified time from the current time". Consider the case. Then, in the case of a text-based programming language, a large amount of character input is required for input and editing, and it is very difficult to work without a physical keyboard. Instead, the solution of equipping the air conditioner itself with a full keyboard also increases the cost of the entire device. It is also possible to attach a keyboard externally by equipping it with a USB terminal, but if the keyboard is used as an accessory for air conditioners, the cost problem will not be solved. In this example, the case of a relatively expensive device such as an air conditioner is considered, but this problem becomes remarkable when considering the application to an alarm clock or the like.
このような問題を解決するために、本発明では、(1)プログラム表現図式としてデータフローグラフを採用する。(2)グラフの配置として、タイルと呼ぶ実行単位のマスを隣接して配置されている「盤面」上で行う。(3)タイルの内容の入力は画面上の所定の位置でのボタン押下、タップ、ダブルタップ、ポップアップメニューからの項目選択、仮想キーボードからの数文字〜十数文字の入力のみで入力できるものとする。 In order to solve such a problem, in the present invention, (1) a data flow graph is adopted as a program representation diagram. (2) As the arrangement of the graph, the cells of the execution unit called tiles are arranged adjacently on the "board surface". (3) The contents of the tile can be input only by pressing a button at a predetermined position on the screen, tapping, double tapping, selecting an item from the pop-up menu, and inputting a few to a dozen characters from the virtual keyboard. do.
上記の手段により、通常のプログラミング言語と同等の表現能力を持つ図式表現形式によるプログラミングをコストのかかる物理キーボードなしでタッチパネルのみで行うことができるようになる。また、スマートフォン、スマートスピーカー、タブレットデバイスのようなデバイス上でもプログラミングできる汎用プログラム開発環境を実現することができる。 By the above means, programming in a schematic representation format having the same expressive ability as a normal programming language can be performed only with a touch panel without a costly physical keyboard. In addition, it is possible to realize a general-purpose program development environment that can be programmed on devices such as smartphones, smart speakers, and tablet devices.
以下に本発明に関する代表的な実施形態を示す。この例は、汎用のプログラミング環境を機器制御に応用したものである。機器制御実行環境と汎用環境の相違は、機器制御のためのAPIを持つか否かにあり、この実施例では、APIは後述の「作り付けのタイル」として定義されているかどうかに対応し、したがってこの例示は、本発明の実行環境を機器制御への応用に限定するものではない。 A typical embodiment of the present invention is shown below. This example is an application of a general-purpose programming environment to device control. The difference between the device control execution environment and the general-purpose environment is whether or not it has an API for device control, and in this example, the API corresponds to whether or not it is defined as a "built-in tile" described later, and therefore. This example does not limit the execution environment of the present invention to application to device control.
図1は本実施例共通の概要図であり、実施例のデータ処理装置が、組み込まれている機器を制御する構成の図である。一例として、組み込み機器がエアコンの場合で考えると、101がエアコン機器全体、102がエアコン機器本体、103が起動停止スイッチ、104が内蔵の時計、105が103や104を106によって制御させるためのインターフェース、106がこれらの機器を制御するプログラム実行エンジン、107がユーザーとの入出力を行うタッチパネルとみることができる。汎用のプログラミング環境についてはこの構成図から、102,103,104,105を取り除いて考えればよい。
(第一の実施形態)
FIG. 1 is a schematic diagram common to this embodiment, and is a diagram of a configuration in which the data processing device of the embodiment controls an embedded device. As an example, when the embedded device is an air conditioner, 101 is the entire air conditioner device, 102 is the air conditioner device body, 103 is the start / stop switch, 104 is the built-in clock, and 105 is the interface for controlling 103 and 104 by 106. , 106 can be regarded as a program execution engine that controls these devices, and 107 can be regarded as a touch panel that inputs and outputs with the user. For a general-purpose programming environment, 102,103,104,105 may be removed from this configuration diagram.
(First Embodiment)
図20は第一の実施形態における図1のプログラム実行エンジン106の内部を表した例である。図20の2001が、図1の106に対応する。プログラム実行エンジン2001には、UI操作処理部2002があり、タッチパネル107上の操作、タップ、ダブルタップなどに反応して、実行するべき動作を定義済みタイル保持部2005と実行解釈部2003に対して指示を行う。
FIG. 20 is an example showing the inside of the
2003はプログラムの解釈実行部であり、UI操作処理部2002からプログラムの実行が指示された時に動作を開始し、プログラムに該当する定義済みタイルを保持する定義済みタイル保持部2005から実行するべき内容を取り出して、実行環境保持部2004と、作業領域2006に各種情報を書き込み/読み出しを繰り返して実行を行い、実行完了時にその旨をUI操作処理部2002に報告する。また、解釈実行部2003は、図1の106のインターフェースに対する処理の呼び出しを行い、機器の状況の読み込みと、操作を行う。 2003 is the program interpretation execution unit, and the operation should be executed from the predefined tile holding unit 2005 that starts the operation when the program execution is instructed by the UI operation processing unit 2002 and holds the predefined tiles corresponding to the program. Is taken out, various information is repeatedly written / read to the execution environment holding unit 2004 and the work area 2006 to execute the execution, and when the execution is completed, the fact is reported to the UI operation processing unit 2002. In addition, the interpretation execution unit 2003 calls the processing for the interface of 106 in FIG. 1, reads the status of the device, and operates.
2004は、実行環境保持部であり、実行時の各種情報を保持する部分である。これらの情報には実行待ちのタイルの待ち合わせ場所、実行待ちのタイルに到達しているデータの情報などが含まれる。 2004 is an execution environment holding unit, which holds various information at the time of execution. This information includes the meeting place of the tile waiting to be executed, the information of the data reaching the tile waiting to be executed, and the like.
2005は、定義済みタイルの保存部である。ここは、ユーザーによって作成と編集がなされる、「定義済みタイル」を格納している部分である。「定義済みタイル」は複数個のタイルを配置することにより構成されたデータフローグラフに対して名前を付けたものである。この2005の部分は、2003の解釈実行部からの要求に応じて、特定の名前の定義済みタイルの指定の位置にあるタイルの情報を提供する。また、UI処理操作部2002からの指示により、新規定義済みタイルの作成、削除、内容の変更を行う。 2005 is the storage section for predefined tiles. This is the part that stores the "predefined tiles" that are created and edited by the user. A "defined tile" is a name given to a data flow graph constructed by arranging a plurality of tiles. This 2005 part provides information on tiles at a specified position on a defined tile with a particular name, as requested by the 2003 Interpretation Execution Department. In addition, a newly defined tile is created, deleted, and the contents are changed according to the instruction from the UI processing operation unit 2002.
作業領域2006は、データフローグラフ内を流通する各種データの置き場所であり、文字列や構造体などの複合オブジェクトの実体が格納されている。 The work area 2006 is a place for storing various data distributed in the data flow graph, and stores the substance of a composite object such as a character string or a structure.
図2はこの第一の実施例におけるユーザー画面への表示例である。この画面ではすでに実行を開始すれば、表示領域201に”HELLO WORLD”という文字列が表示されて実行が終了するようにプログラムされている状態が表示されている。このシステム例では、システムを起動した直後に、そのままシステムに対して実行指示を与えるようなユーザーを想定して、すでにこのようなプログラムがセットされている状態を初期状態として与えている。図2の詳細な説明は後述する。ここでは、基本的な構成要素についてのみ説明する。
FIG. 2 is a display example on the user screen in the first embodiment. On this screen, if the execution has already started, the character string "HELLO WORLD" is displayed in the
211,212,213には、それぞれ実行命令とオペランドと呼ばれる実行オプション、入力データの入ってくる方向、出力データの排出方向を指示する図が描かれている。この矩形を以降「タイル」と呼ぶ。タイルに関する詳細は、図3で説明する。タイルについては、この実施例では、矩形となっているが、隣接できる閉領域であればどのような形でも良く、各タイルが同形である必要もない。 In 211, 212, and 213, diagrams are drawn that indicate execution options called execution instructions and operands, the direction in which input data enters, and the direction in which output data is discharged, respectively. This rectangle is hereafter referred to as the "tile". Details regarding tiles are described in FIG. The tiles have a rectangular shape in this embodiment, but any closed area that can be adjacent to each other may be used, and the tiles do not have to have the same shape.
208はタイルが縦横に隣接して配置されている領域で、「定義済みタイル」の配置状況を表示編集する領域である。この領域を以降「盤面」と呼ぶ。盤面には識別のための「名前」が付けられている。208の盤面には「MainLine」という名前が付けられており、表示領域兼プルダウンメニュー207にその名前が表示されている。
208 is an area where tiles are arranged vertically and horizontally adjacent to each other, and is an area for displaying and editing the arrangement status of "defined tiles". This area is hereinafter referred to as the "board surface". A "name" is given to the board for identification. The board of 208 is named "Main Line", and the name is displayed in the display area and pull-
図2の詳細な説明を行う。最初にこのMainLine盤面で表現されている「プログラム」を簡単に説明する。211は、命令識別子CONSTという命令を実行する。この命令はタイルの上方から入力データを受け取り、その入力データがどのようなものあっても、内容を無視して、オプションとして指定されている”HELLO WORLD”という文字列を出力データとして、このタイルの下方に隣接しているタイルに渡す。212は、識別子PRTという命令を実行する。この命令は上方に隣接しているタイルからのデータを入力としてその内容を201の表示領域に印字する。さらに、入力データをそのまま下方に隣接するタイルに渡す。213は、識別子ENDという命令を実行する。この命令は入力として上方に隣接しているタイルからのデータを受け取り、それを捨ててしまい、何も出力しない。このプログラムでは、213の実行によりデータが捨てられ、プログラム系全体を流通するデータがなくなることで系の実行が終了する。このプログラム中の矢印は、制御の流れではなく、データの流通経路を示しており、図式はデータフローグラフになっている。 A detailed explanation of FIG. 2 will be given. First, the "program" expressed on this Main Line board will be briefly explained. 211 executes an instruction called the instruction identifier CONST. This command receives input data from above the tile, ignores the contents of any input data, and uses the optional string "HELLO WORLD" as output data for this tile. Pass to the adjacent tile below. 212 executes an instruction called the identifier PRT. This command takes data from the tiles adjacent to the top as input and prints its contents in the display area of 201. Furthermore, the input data is passed as it is to the adjacent tile below. 213 executes an instruction called identifier END. This instruction takes data from the tiles adjacent above it as input, discards it, and outputs nothing. In this program, the execution of 213 discards the data, and the execution of the system ends when there is no data circulating in the entire program system. The arrows in this program indicate the data distribution route, not the control flow, and the diagram is a data flow graph.
202は「RUN」とラベル付けされているプッシュボタンであり、押下するとセットされているプログラムの実行が開始される。このボタンを押下すると208で図示されている盤面の上辺中心のタイル211の上から、実行のきっかけとなるダミーデータトークンNILが投下され、以降必要なデータが到着して実行可能になったタイルの実行が続く。最初に投下されるトークンは系全体の実行のきっかけになるものであり、この第一の実施形態ではNILでなくても0でも1でもよい。
203は「NEW TILE」とラベル付けされているプッシュボタンであり、押下すると新規に名前識別子を付けた新規の定義済みタイルが作成できるようになる。詳細は後述する。定義済みタイルにつけられた名前識別子は、タイル中の命令識別子として利用可能であり、新たな定義済みタイルを作成することで、そのアルゴリズムをサブルーチンとして盤面中で使用できる。例えば、図7のように整数の階乗を計算するように編集された定義済みタイル「n!」は図6のように盤面のタイル中でCONSTやEND等と同等に使用することができる。
207は表示領域兼プルダウンメニューであり、選択候補としてMainLineとその時点までに作成されているすべての定義済みタイルの名前識別子が選択候補としてリストされる。ユーザーはこのメニューから識別子を選択すると、208の表示が選択された識別子の盤面の内容に切り替わり編集が可能になる。207は、表示の切り替えと現在208に表示されている盤面の名前の表示を兼ねる。 207 is a display area and pull-down menu, and MainLine and the name identifiers of all the defined tiles created up to that point are listed as selection candidates. When the user selects an identifier from this menu, the display of 208 switches to the contents of the board of the selected identifier and can be edited. The 207 serves both as a display switch and a display of the board name currently displayed on the 208.
この実施例では、盤面は、3×3、5×5、7×7など縦横とも奇数個のタイルになっている。これは、名前付き盤面の入出力方向である上下右左の位置を各辺の中心のタイルとするために奇数になっているが、各辺の入出力位置の指定が別法で可能であるならば奇数でなくてもよい。また、各タイルが隣接関係を保持できるのであれば、縦横が同じタイル数である必要もなく、タイルの形状も矩形でなくてもよい。例えば六角形のタイルであれば、一つのタイルに隣接するタイルの数が矩形の場合には4個であるところ6個にすることも考えられる。 In this embodiment, the board surface has an odd number of tiles in both vertical and horizontal directions such as 3 × 3, 5 × 5, and 7 × 7. This is an odd number because the positions of the top, bottom, right, and left, which are the input / output directions of the named board, are the center tiles of each side, but if the input / output positions of each side can be specified by another method, It does not have to be an odd number. Further, as long as the tiles can maintain the adjacency relationship, the number of tiles in the vertical and horizontal directions does not have to be the same, and the shape of the tiles does not have to be rectangular. For example, in the case of hexagonal tiles, if the number of tiles adjacent to one tile is rectangular, it is possible to increase the number from four to six.
「IN:」とラベル付けされた表示領域209は、表示されている盤面が実行できる条件を表示する領域である。各タイルは、一つ以上のデータ入力を受けるが、どの方向からいくつデータが到着したら実行できるかを設定することができる。209はその表示領域である。この例では、T : Top すなわち上からデータが到着した時点でMainLineという盤面の実行を開始する可能であることを表している。一方各タイルは0個以上の出力があり、どの方向が出力になるのかを「OUT:」とラベル付けされた210の領域に表示する。この例では、MainLineは外部に対して出力をしないので、210の欄は空白になっている。 The display area 209 labeled "IN:" is an area for displaying the conditions under which the displayed board can be executed. Each tile receives one or more data inputs, but you can set how many data arrives from which direction to execute. 209 is the display area. In this example, T: Top, that is, it is possible to start the execution of the board called MainLine when the data arrives from above. On the other hand, each tile has 0 or more outputs, and which direction is the output is displayed in the 210 area labeled "OUT:". In this example, MainLine does not output to the outside, so the 210 column is blank.
図3は、各タイルの表示の詳細が示されている。図3(a)の301は、211で図示されたCONST命令タイルを再掲したものである。302は、矢印でない直線であり、外部からの入力がこの方向から、すなわち上から、入ってくることを表している。303は入力データに対する識別子である。これは入力が複数あるような命令タイルのうち、入力を区別しないと結果が変わるような命令、例えば引き算や割り算のような命令を想定して付与されるものである。本実施例では、識別子に数字を用いているが、順序が付けられる識別子であればアルファベットなどでもよい。 Figure 3 shows the display details of each tile. 301 in Figure 3 (a) is a reprint of the CONST instruction tile illustrated in 211. Reference numeral 302 denotes a straight line that is not an arrow, indicating that an external input comes in from this direction, that is, from above. 303 is an identifier for the input data. This is given assuming an instruction tile that has a plurality of inputs and whose result changes unless the inputs are distinguished, for example, an instruction such as subtraction or division. In this embodiment, numbers are used for the identifiers, but alphabets or the like may be used as long as the identifiers can be ordered.
304は命令の識別子表示である。ここでは定数を出力するCONST命令が書かれている。そのほか、プログラムの実行系があらかじめ用意している命令を設定することはもちろん、プログラマによって作成された定義済みタイルの識別子名称を設定することもできる。305は304の実行命令に対するオプションの表示である。CONSTは、命令だけでは、どのような定数を出力するかが決定しないので、定数をオプションとして指定する。オプションを必要としない命令もある。 304 is an identifier display of the instruction. Here, the CONST instruction that outputs a constant is written. In addition, it is possible not only to set the instruction prepared in advance by the program execution system, but also to set the identifier name of the defined tile created by the programmer. 305 is an option display for the execution instruction of 304. Since CONST does not determine what kind of constant is output only by the instruction, specify the constant as an option. Some instructions do not require options.
306の外向きの矢印は、この方向、この例では下に隣接したタイルに対して、出力があることを表示している。入力と同様に出力にも識別子が付与され307のように矢印に沿って表示されている。 The outward arrow at 306 indicates that there is output in this direction, for the tiles adjacent below in this example. Like the input, the output is given an identifier and is displayed along the arrow like 307.
図3(b)の308は複数の入力と出力を持つ命令タイル、SWITCH命令タイルである。SWITCHは、二つの入力と二つの出力を持つ命令であり、入力1がNILであれば、入力0として入ってきたデータを出力1へ出力し、そうでなければ入力0を出力0に排出する。このSWITCH命令では、データは、出力0か出力1のいずれかに排出され、両方からデータが排出されることはない。SWITCH命令は、データNILを論理値の偽とみなして出力を切り替える条件分岐に該当するものである。308では、入力0が上に隣接したタイルから、入力1が左から進入し、出力0として下に、出力1として右に隣接したタイルにて渡される。310は、この方向、すなわち左からの入力が入力1であることを表示し、311は、右への出力が出力1であることを表示している。
308 in Fig. 3 (b) is an instruction tile with multiple inputs and outputs, a SWITCH instruction tile. SWITCH is an instruction that has two inputs and two outputs. If
308では、入力0、入力1、 出力0、出力 1をそれぞれ上、左、下、右と設定された表示になっているが、本実施例では、各命令タイルの入力方向と出力方向は自由に選択設定できる。方向が自由に設定できることから、混乱を避けるために入出力に識別子を付与する必要がある。
In 308,
図4は、図2で表示されていたMainLine盤面の部分を抽出して変形したものである。END命令タイルの位置が図2と異なっているが、アルゴリズムの表現としては同等である。ここで、407は、現在の盤面の表示がMainLineであることを表示しており、408は、図2の209を簡略図示したものであり、このMainLine盤面が実行を開始できる条件「T」が表示されている。T単独の場合、上からデータが進入すれば、盤面の実行可能になる。この例では、図2の202のRUNボタンを押すと、この盤面の401からデータトークンNILが進入する。 FIG. 4 shows an extracted and deformed part of the MainLine board surface displayed in FIG. The position of the END instruction tile is different from that in Fig. 2, but it is the same as the representation of the algorithm. Here, 407 indicates that the display of the current board is MainLine, and 408 is a simplified illustration of 209 in FIG. 2, and the condition "T" that the MainLine board can start execution is It is displayed. In the case of T alone, if data enters from above, the board can be executed. In this example, when the RUN button of 202 in FIG. 2 is pressed, the data token NIL enters from 401 on this board.
投入されたデータNILは、タイル402が入力0として受け取る。タイル402は、このデータ受信により実行可能となり、即座に命令CONSTがオプション”HELLO WORLD”付きで実行される。実行の結果402の出力0として文字列”HELLO WORLD”のデータトークンが下に隣接するタイル403に渡される。タイル403は、上からのデータを入力0として受け取るように設定されており、受け取った結果、タイル403の命令404のPRTが実行可能となり、402の次に実行される。404の実行の結果、入力された文字列”HELLO WORLD”トークンは、表示領域201に表示され、そののちそのまま出力0として右隣りのタイル405に渡される。タイル405は、命令406としてENDが設定されている。タイル405は左隣のタイル403から、文字列”HELLO WORLD”のトークンを入力0として受け取る。ENDは入力0にデータが到着した時点で実行可能となるため、タイル405は403の次に実行される。このENDの実行の結果、入力された文字列データ”HELLO WORLD”のトークンは放棄される。この結果この系のいずれのタイルも実行可能ではないため、実行機構は処理を終了する。
The input data NIL is received by tile 402 as
図4の408及び図2の209に表示される実行開始条件の式は本第一の実施形態では次のような形式になっている。実行開始条件は、複数の入力がすべて到着する、複数の入力の内いずれかが到着する、あるいはこれらの組み合わせで表現され、前記の場合は入力の方向記号同士を演算子*で結び、後者の場合は演算子+でつなぐ。優先度は、*の方が+より強い。また丸括弧()も一般的に数式と同様に使えるものとする。 The formula of the execution start condition displayed in 408 of FIG. 4 and 209 of FIG. 2 has the following format in the first embodiment. The execution start condition is expressed by all of a plurality of inputs arriving, one of a plurality of inputs arriving, or a combination thereof. In the above case, the direction symbols of the inputs are connected by an operator *, and the latter In case, connect with operator +. As for the priority, * is stronger than +. Also, parentheses () can generally be used in the same way as mathematical formulas.
入力の方向記号としては、T、L、R、Bの各文字が使用でき、それぞれ上、左、右、下を表す。数式上、この記号の左からの出現順が、入力の識別子を指定することになる。例えば「T*L」という入力条件式は、上からと左からの両方にデータが到着したときに実行可能となることを表し、さらに、方向文字の出現順に対応してTが入力0、Lが入力1に対応することも表している。方向記号のいずれかが単独で指定された場合、その方向からのデータが到着した時点で直ちに指定された盤面は実行可能となる。複雑な例としての式「(T*R)+B」は、記号の出現順に入力0が上、入力1が右、入力2が下から入ってくることを表し、さらに、入力2が到着した時点で、ほかの入力の如何にかかわらず実行可能となる。また、入力2にデータが到着しなくても、入力0と入力1にデータが到着した時点で実行可能となる条件を表現した式となる。
As the input direction symbol, each character of T, L, R, and B can be used, and represents top, left, right, and bottom, respectively. In mathematical formulas, the order of appearance of this symbol from the left specifies the input identifier. For example, the input conditional expression "T * L" indicates that it can be executed when data arrives from both the top and the left, and T is
このような条件式の例をいくつか挙げる。まず「L 」は入力0が左から入力され、入力0が到着した時点で実行可能となる条件式である。また「R*L」入力0が右から、入力1が左から入力され、入力0と入力1が両方到着するまで実行しない条件式である。さらに「T+L」は入力0が上から、入力1が左から入力され、どちらかが到着すれば実行可能となる条件式である。そして「(T*R)+B」は入力0が上から、入力1が右から、入力2が下から入力され、入力2が到着するか。入力0と入力1が揃うかのどちらかが満たされると実行を開始する条件式である。
Here are some examples of such conditional expressions. First, "L" is a conditional expression that can be executed when
これらの式の解釈は、一般的な数式の字句解析のアルゴリズムで解釈可能である。またこの条件式の解釈処理を簡便にするために、式の記法を後置記法(逆ポーランド記法)とすることもできる。このような後置記法の場合、条件式「(T*R)+B」は「TR*B+」となる。 The interpretation of these formulas can be interpreted by general mathematical lexical analysis algorithms. Further, in order to simplify the interpretation process of this conditional expression, the notation of the expression may be the postfix notation (reverse Polish notation). In the case of such postfix notation, the conditional expression "(T * R) + B" becomes "TR * B +".
このような定義済みタイルの図表現は、定義済みタイルの識別子をキーとして、前記入力条件式、210に表示される出力方向文字列と盤面サイズ情報、および、空白でない各タイルの座標情報と各入力の進入方向、命令識別子、オプション文字列と各出力方向を含む構造体を値とする表に中間形式として2005の定義済みタイル保持部に格納される。 Such a graphic representation of the defined tile uses the identifier of the defined tile as a key, the input condition expression, the output direction character string and the board size information displayed in 210, and the coordinate information of each non-blank tile and each of them. It is stored in the defined tile holder of 2005 as an intermediate format in a table whose values are the structure including the input entry direction, instruction identifier, option character string and each output direction.
図5は、このプログラム言語の106の実行エンジンの中の図20の2003である解釈実行部の動作を表すフローチャートである。解釈系は、起動すると、最初に501にあるように実行に必要な各種記憶領域を完全にリセットする。これらの記憶領域には、実行可能なタイルが複数ある場合の待ち合いのための領域、実行可能ではないが一部のデータが到着しているタイルの待合のための領域、配列やリスト、構造体などの複合データ構造のためのヒープ領域などが含まれる。これらの領域は、図20の実行環境保持部2004、作業領域2006に対応する。 FIG. 5 is a flowchart showing the operation of the interpretation execution unit of FIG. 20 2003 in the 106 execution engines of this programming language. When the interpreter is started, it completely resets the various storage areas required for execution, as in 501 first. These storage areas include an area for waiting when there are multiple executable tiles, an area for waiting for tiles that are not executable but some data has arrived, arrays, lists, and structures. Contains heap areas for complex data structures such as. These areas correspond to the execution environment holding unit 2004 and the work area 2006 in FIG.
次に解釈系は、502にあるようにプログラムされた定義済みタイルの保持部である図20の2005から、「MainLine」という名前を持つチャートを呼び出し、この盤面チャートに対して上から起動のきっかけを与えるデータトークンNILを投入する。 Next, the interpretation system calls the chart named "MainLine" from 2005 in Fig. 20, which is the holding part of the predefined tiles programmed as shown in 502, and triggers the activation from above for this board chart. Insert the data token NIL that gives.
解釈系は、次の504において、盤面のタイルの内、実行可能になっているタイルを検索し、そのうちの一つを実行する。検索にあたっては、図20の実行環境保持部2004を参照する。実行可能であるタイルが複数あった場合には、ランダムに選択して実行してもよいし、時系列順に実行可能になってからの経過時間が最も長いものを選択して実行するようにしてもよい。 In the next 504, the interpretation system searches for the tiles that have become executable among the tiles on the board, and executes one of them. For the search, refer to the execution environment holding unit 2004 in FIG. If there are multiple tiles that can be executed, they may be randomly selected and executed, or the one with the longest elapsed time since it became executable in chronological order should be selected and executed. May be good.
ステップ504におけるタイルの実行の結果、0個以上の出力が生成される。ステップ505では、これらの出力を隣接するタイルの入力として分配する処理がなされる。出力が0個の場合には、ステップ505では何も処理は行われない。出力が1ないし3個の場合には、それぞれの出力を各方向に隣接するタイルの入力として渡す処理が出力の数だけ行われる。 Execution of the tiles in step 504 results in zero or more outputs. In step 505, processing is performed to distribute these outputs as inputs of adjacent tiles. If there are 0 outputs, nothing is done in step 505. When there are 1 to 3 outputs, the process of passing each output as an input of adjacent tiles in each direction is performed for the number of outputs.
ステップ505の処理の結果としていくつかの隣接タイルにデータトークンが渡されることがあり、その結果実行可能となるタイルがいくつかできることもある。それらのタイルも候補に含めてステップ503に戻り、実行可能なタイルがあるかどうかを判定し、あるならばステップ504で一つ実行する。この繰り返しを実行可能なタイルがなくなるまで行い、実行可能なタイルがなくなれば、解釈系は停止する。実行対象となっているプログラムのタイル定義の内容によっては、データが無限に回り続けるようなものもあり得るが、それに対して、割り込みによる中止や、繰り返しの中で、実行したタイルの数を計数しておき、あらかじめ規定した量を実行したら停止する、あるいは、ユーザーに続行を確認する機構を追加することも容易に可能である。 Data tokens may be passed to some adjacent tiles as a result of the processing in step 505, resulting in some viable tiles. Those tiles are also included in the candidates and returned to step 503 to determine if there are viable tiles, and if so, one is executed in step 504. This repetition is repeated until there are no more feasible tiles, and the interpretation system is stopped when there are no feasible tiles. Depending on the contents of the tile definition of the program to be executed, the data may continue to rotate indefinitely, but on the other hand, the number of executed tiles is counted during interruption or repetition. However, it is also possible to easily stop after executing a predetermined amount, or add a mechanism to confirm the continuation to the user.
図6と図7では、さらに複雑なプログラムチャートが例示されている。この例では、ユーザーから入力された自然数値に対する階乗を計算して表示領域201に表示して停止するプログラムが実現されている。図6は、メインラインチャートであり、601にこの盤面チャートの名前が「MainLine」であること、602に、このチャートの実行可能条件が、上からのデータ到着であることが表示されている。
Figures 6 and 7 illustrate more complex program charts. In this example, a program that calculates the factorial of the natural numerical value input by the user, displays it in the
解釈系の初期化処理によって上からNILが投下されると最初にタイル603が実行可能になる。このタイルの命令はINPUTとなっている。INPUT命令は、ダイアログと仮想キーボードなどの手段により、ユーザーに一つの入力を要求し、そのデータを出力0に出すものである。この時、入力0に入ってきたデータはその参照が放棄される。入力されたデータは、タイル604に上から渡され、入力0として受け取る。
When NIL is dropped from above by the initialization process of the interpretation system,
タイル604の命令には「n!」が指定されている。「n!」は図7で表示される定義済みタイルに対してつけられた名前識別子である。タイル604では、入力0の整数を図7の定義盤面に対して投入し、その結果を出力0として下に隣接するタイルに入力として渡すことを指示している。その結果は下に隣接したPRTのタイルに渡され、その後の実行は、図2の例と同様に推移する。
"N!" Is specified in the instruction of
図7は階乗を計算する定義済みタイル「n!」の実装盤面チャートを表している。701では、このチャートにつけられている名前が「n!」であることが表示されている。703では、このチャートの実行開始条件が上からのデータ到着であって、入力0として受け取ったデータを上から進入させることを表示している。702ではこのチャートの実行結果として出力が下から一つ出て、それを出力0に対応させることが表示されている。これら名前、入力条件、出力設定などは、新規タイル定義を作成するためのボタン203を押下したときに表示される図11のダイアログ1101で設定することができる。
Figure 7 shows the mounting board chart of the predefined tile "n!" That calculates the factorial. In 701, it is displayed that the name given to this chart is "n!". In 703, the execution start condition of this chart is the arrival of data from the top, and it is displayed that the data received as
図7の盤面チャートでは、階乗を再帰的に計算するアルゴリズムがデータフローチャートで定義されている。「自然数nの階乗」は、「n=1ならばn!=1」そして「n>1ならば、n!=n×(n-1)!」と計算でき、図7ではその計算ステップが表示されている。 In the board chart of FIG. 7, an algorithm for recursively calculating the factorial is defined in the data flowchart. "Factial of natural number n" can be calculated as "n! = 1 if n = 1" and "n! = N × (n-1)! If n> 1". Is displayed.
703の条件によって上から進入してくる入力0の自然数は、タイル704に入力0として受理される。
A natural number with
704には、命令の表示がない。これは、COPY3という命令の簡便な表示である。タイルに命令の表示がなく、入力が一つで出力が3つあるタイルは、COPY3命令のタイルであると識別可能である。ただし、命令識別子COPY3は表示が省略されているだけである。COPY3は入力0のデータをさらに二つ複製し、都合3個の出力を一つずつ出力0,出力1,出力2に渡す命令である。704では、入力0の自然数を複製して左に隣接するタイル706、右に隣接するタイル705、下に隣接するタイル708に供給する。
The 704 has no indication of instructions. This is a simple display of the command COPY3. A tile with no instruction indication on the tile, one input and three outputs can be identified as a COPY3 instruction tile. However, the display of the instruction identifier COPY3 is simply omitted. COPY3 is an instruction that duplicates two more data of
タイル705にも命令名がない。ただし、タイル704と異なり、入力が一つと同じではあるが、出力が一つしかない。これは、PASSという命令の簡便な表示である。タイルに命令の表示が省略されており、入力と出力がそれぞれ一つしかないタイルはPASS命令のタイルであると判別される。PASS命令は、入力0として受け取ったデータに何ら加工を施すことなく、そのまま出力0として隣接するタイルに渡す命令である。705のタイルは、704から受けたデータを707に受け渡している。
タイル706は、CONSTタイルで、オプションに自然数1が指定されている。このタイルは、704からのデータ入力を受けて、自然数1を、その下に隣接するPASS命令にわたす。この結果、706の出力0は、PASS命令のタイルを介して708に供給される。
タイル708は、GTという比較操作を行う命令のタイルである。GT命令は、入力を二つとり、データが二つとも到着したら実行可能となる。実行動作は、入力0と入力1を比較し、入力0>入力1ならば論理値真を表すデータTを、そうでなければ論理値偽を表すデータNILを出力0に出す。708の入力0は、この盤面に渡された数、入力1は、自然数1となり、これらタイル704、706、708の組み合わせで、この盤面に上から供給された自然数が1より大きいかどうかの比較を行っている。
タイル707は、SWITCH命令という条件分岐操作を行う命令のタイルである。SWITCH命令は前述の通り入力を二つとり、データが二つとも到着したら実行可能となる。実行動作は、入力1がNIL以外のデータの時に、入力0のデータを出力0に流し、入力1がNILの場合には、入力0のデータを出力1に流すものである。
707のSWITCH命令は、入力0としてこの盤面に供給された自然数が、入力1としてタイル708の比較動作の結果を受ける。比較結果が真、すなわち1より大きければ、入力0はタイル709へ供給され、1以下であれば、入力0は出力1として右隣のPASS命令タイルを通り、タイル715へ供給される。このSWICHにより、データフローグラフは、タイル709を起点とするn×(n-1)!を計算するグラフとタイル715を起点とする1を結果として出力するグラフに分岐する。
In the SWITCH instruction of 707, the natural number supplied to this board as
タイル709は、命令文字列の表示がなく、入力が一つで出力が二つある。このようなタイルはCOPY2命令タイルとして判別される。COPY2命令は、入力0にデータが来た時点で実行可能となる。実行動作は、入力0のデータを複製し、出力0と出力1に一つずつ流すものである。COPY2タイルの簡便な表示では、入力と出力の矢印線のみ表示され、命令文字列の表示は省略される。
タイル709は、前記比較分岐グラフの結果として入力データが1より大きいときに実行される。実行された時には、入力0のデータは複製され、タイル710とタイル712へデータを引き渡す。
タイル710は、入力データの内容から1を減じる「n-1」命令タイルである。この命令は、入力0にデータが到達したときに実行可能となる。実行動作は、入力0のデータから1を減じた値を出力0として流すものである。タイル710は、タイル709から供給されたデータから1を引いた値を出力0としてタイル711に渡している。
タイル711は、定義済み名前付き盤面「n!」の実行を指示するタイルである。「n!」はこの盤面で定義されており、この呼び出しは再帰的である。タイル711はタイル710によって1減じられた数字に対して「n!」を自分自身の定義をもとに計算し、その結果を出力0として、右に隣接するタイル712に渡す。
このような再帰的な盤面チャートの呼び出しは、呼び出しのタイミングでチャートそのものを複製して別体のグラフで実行する方式や、グラフを複製せず、呼び出し履歴を階層的に記憶するスタックなどの構造を利用して実現する方式で実現できる。 Such a recursive board chart call has a structure such as a method in which the chart itself is duplicated at the timing of the call and executed in a separate graph, or a stack in which the call history is stored hierarchically without duplicating the graph. It can be realized by the method realized by using.
タイル712は、二つのデータの算術積を計算する命令「A*B」を実行するタイルである。「A*B」は入力0と入力1の両方にデータが到着したときに実行可能となる。実行動作は、入力0と入力1の掛け算を実行してその結果を出力0に流すものである。タイル712は、タイル709から渡された数字nとタイル711から渡されてくるn-1の階乗の計算結果の積を計算し、結果を出力0として下に隣接するタイル714に渡す。
タイル714は、命令文字列の表示が省略されており、入力が二つ、出力が一つある。このようなタイルは、MRG2命令タイルの簡便な表示として判別できる。MRG2命令は、入力を二つ取り、どちらかの入力にデータが到着ときに、実行可能となる。実行動作は、入力されてきた入力0または入力1のデータを何ら加工することなく出力0に流すものであり、二つのデータフローのパスを一つに合流させる用途を持っている。
タイル714は、入力1としてタイル712の演算結果、すなわちn×(n-1)!の結果と、入力0としてタイル715からの定数1を受け取り、どちらかにデータが到着すれば、そのデータを出力0として左に隣接するタイル713に供給する。タイル714は二つのデータフローグラフ、タイル709を起点とするグラフとタイル715と複数のPASS命令タイルからなるグラフからのデータの合流点になっており、これら二つのグラフへのデータは、タイル707のSWITCHで切り分けられているため、どちらか一方のグラフにしかデータは供給されないような盤面チャートの構造になっている。
このn!の定義では、出力0が702で表示されているように下から出ていくことになっている。ただし、本実施例では、各方向からの入出力は、各辺に隣接したタイルの内の中央のタイルからのみ行うように限定されている。すなわち5×5の定義盤面では、上からの入出力は上辺中央のタイル、図7では、タイル704のみ行うことができる。同様に左方向の入出力は左辺中央のタイル。右方向のタイルは右辺中央のタイル、下方向は下辺中央のタイル、図7ではタイル713で行うように限定されている。本実施例では、各辺のタイル数は奇数に限定しているので、各辺には中央のタイルが必ず存在する。入出力の位置については、このような各辺の中央に限定せず、タイルに色などの区別のできる印をつけて判別するような方式でもよい。
In this definition of n !,
上記の規則設定のため、タイル714の出力0は、直接下辺に接触せず、タイル713を介して下辺に接している。この結果この部分のグラフは屈曲している。
Due to the above rule setting,
本実施例では、このようなデータフローグラフの構成で、階乗計算のロジックが表現され、図5の処理の流れを実現した解釈系によって、実行することができる。 In this embodiment, the logic of factorial calculation is expressed by the configuration of such a data flow graph, and can be executed by the interpretation system that realizes the processing flow of FIG.
図8は、図7の定義による「n!」を呼び出すためのメインライングラフである図6を変形させたものである。この図6と比較してグラフが屈曲しているが、表現されているグラフのロジックは図6のグラフと全く同等である。 FIG. 8 is a modification of FIG. 6, which is a main line graph for calling “n!” As defined in FIG. 7. Although the graph is bent compared to FIG. 6, the logic of the expressed graph is exactly the same as that of the graph of FIG.
チャート中央のタイル805は、名前付き盤名定義タイル「n!」を実行させるタイルである。このタイル805は、右に隣接するタイルの出力0である801を右からの入力0として受け取る。また、出力0は左方向に流され、左に隣接するタイルの右からの入力0である804で受け取られる。本実施例の解釈系では、このような隣接するタイル間のデータの受け渡しに関する処理を装備している。
The
図9は、この受け渡しに関する解釈実行部2003の処理のフローチャートである。この「出力渡し」処理は、タイルの実行により出力が生じた際に実行されるもので、図5のステップ505の処理に該当する。この手続きは出力が複数ある場合には、各出力に対して一回ずつ実行される。 FIG. 9 is a flowchart of the processing of the interpretation execution unit 2003 regarding this delivery. This "output passing" process is executed when an output is generated by executing the tile, and corresponds to the process of step 505 in FIG. This procedure is performed once for each output if there are multiple outputs.
この処理は発生した出力の方向によってステップ901から下にある条件検査により四つの手続きに分岐される。出力が左方向である場合には、手続き「左隣へ渡す」、右方向への出力の場合には、「右隣へ渡す」、下方への出力の時には「下隣へ渡す」上への出力時には「上隣へ渡す」が実行される。
This process is branched into four procedures by the conditional inspection below from
図10は、図9のステップ902で呼び出される「左隣へ渡す」の処理のフローチャートである。ステップ1001でこの手続きで参照している渡されるデータを取り出す。ステップ1002では、左隣のタイル右方向の入力の識別子を取り出す。図8のチャートでは、右方向への出力801で渡されるデータがD、左隣のタイル805の入力の識別子0がPに該当する。ステップ1003では、渡す対象のデータDを左隣のタイルの入力Pとして代入する。その結果左隣のタイルにデータが到着するので、その機会に左隣のタイルの実行可能性についての左隣のタイルの命令の実行可能条件式でチェックを行うのがステップ1004である。その結果実行可能であると判定された時には、左隣のタイルは、実行可能であると分類され、次のタイルの実行ステップ図5の504での実行候補となる。
FIG. 10 is a flowchart of the process of “passing to the left” called in
そのほかの方向へのデータ渡しの処理は、図10の処理中記述の「左と右」を「右と左」、「上と下」、「下と上」の関係で読み替えることで実現することができる。 The process of passing data in other directions can be realized by replacing "left and right" in the processing description in FIG. 10 with the relations of "right and left", "top and bottom", and "bottom and top". ..
次に第一の実施形態において、これらデータフローグラフの作成と編集がタッチパネルのような位置指定手段と、タップとダブルタップのような二つの指示手段と仮想キーボードで行えることを示す。 Next, in the first embodiment, it is shown that the creation and editing of these data flow graphs can be performed by a position specifying means such as a touch panel, two instruction means such as a tap and a double tap, and a virtual keyboard.
図11は、新規に名前付き盤面タイルを作成する際の入力画面である。図2のボタン203は、押下すると新規の名前付き盤面の作成処理を行う。この際に必要な諸情報の入力のために、ダイアログ1101がモーダルダイアログとして表示される。この段階では、盤面の名前、盤面のサイズ、実行可能判定式、出力数と方向の設定を行い、盤面の作成編集は、1101での設定後、盤面表示208上での画面のタップあるいはダブルタップで行う。
FIG. 11 is an input screen when creating a new named board tile. When the
1102は、テキスト入力項目であり、ここに盤面の名前を仮想キーボードなどで入力する。1103は、この名前付き盤面のサイズを指定するプルダウンメニューとなっており、3、5、7などの奇数が選択できる。本実施例では、盤面は縦横同じサイズと規定しているため、入力する数値は一つとなっているが、そのほかの場合には適切な数の適切な値の入力を促すことになる。1104は、この名前付き盤面の実行可能条件式であり、前述した形式の条件式を仮想キーボードなどで入力する。この項目については、入力を支援するような補助ダイアログのようなUI機構があってもよい。この例では、実行開始条件式は、入力が二つあり、入力0は上から、入力1は左から入ってくることとし、入力0と入力1の両方のデータが揃ったときに実行可能になると設定されている。1105は出力の数と方向の設定を行うテキスト入力項目であり、この例では、出力が二つあり出力0が下方向へ、出力1が右方向へ出ていくことが設定されている。この項目についても入力支援ダイアログの導入で文字入力量をさらに低減させることもできる。
1102 is a text input item, and the name of the board is input here with a virtual keyboard or the like. 1103 is a pull-down menu that specifies the size of this named board, and odd numbers such as 3, 5, and 7 can be selected. In this embodiment, since the board surface is defined to have the same vertical and horizontal sizes, only one numerical value is input, but in other cases, an appropriate number of appropriate values are prompted to be input. Reference numeral 1104 is an executable conditional expression of this named board, and the conditional expression of the above-mentioned format is input by a virtual keyboard or the like. For this item, there may be a UI mechanism such as an auxiliary dialog that assists in input. In this example, the execution start conditional expression has two inputs,
1101のダイアログにあるOKボタンは、設定内容を確定として登録しダイアログを閉じる。Cancelボタンを押下すると、新規名前付き盤面作成操作そのものを中止する。 The OK button in the 1101 dialog closes the dialog by registering the settings as confirmed. When the Cancel button is pressed, the operation itself for creating a new named board is canceled.
OKボタンの押下によって、新規名前付き盤面が作成されると盤面のすべてのタイルが空白で初期化された盤面が作成され、207にその盤面名が表示されるとともに、208に現在のその盤面の内容、初期状態としてすべてのタイルが空白のものが表示される。盤面の作成編集は208の各タイルをタップやダブルタップなどの指示をすることで行う。 When a new named board is created by pressing the OK button, a board with all tiles on the board initialized with blanks is created, the board name is displayed in 207, and the current board is displayed in 208. The contents and initial state are all tiles that are blank. The board is created and edited by tapping or double-tapping each of the 208 tiles.
図12は、各タイルをダブルタップしたときの表示内容である。1201はモーダル表示されるダイアログであり、タイルの編集操作を容易にするために、図2の208で表示される領域とほぼ同じ大きさで表示される。1202は、ダブルタップされたタイルと同じ内容がダイアログいっぱいに拡大表示される。1202に対してはシングルタップによる内容の編集が可能である。1201のOKボタンは押下すると、上記編集の結果をダブルタップされたタイルに反映させて、ダイアログを閉じる。Cancelボタンは、編集の結果を放棄し、ダブルタップされたタイルの内容は不変のままダイアログを閉じる。 FIG. 12 shows the display contents when each tile is double-tapped. 1201 is a modal dialog that is displayed in approximately the same size as the area displayed in 208 in FIG. 2 to facilitate tile editing operations. In 1202, the same contents as the double-tapped tile are enlarged and displayed in the full dialog. You can edit the contents of 1202 with a single tap. When the OK button of 1201 is pressed, the result of the above editing is reflected in the double-tapped tile and the dialog is closed. The Cancel button abandons the result of the edit and closes the dialog with the contents of the double-tapped tile unchanged.
図13は、208の各タイルをダブルタップしたとき、あるいは拡大表示された1202の領域の中央付近をシングルタップしたときにモーダル表示されるダイアログである。ここでは、タイルの中心に表示されている、命令とオプションを編集することができる。1302は、プルダウンメニューであり、それには、システムで用意されている命令と現在編集中のものも含めたすべての名前付き定義済みタイルの名前識別子が一覧表示され、ユーザーはその中から一つを選択する。1303は、オプションを入力するテキスト入力項目であり、内容を仮想キーボードで入力することもでき、また、いくつかの定数NIL、0、1などはプルダウンメニューからの選択により設定することもできる。 FIG. 13 is a dialog that is displayed modally when each tile of 208 is double-tapped or when a single tap is made near the center of the enlarged 1202 area. Here you can edit the instructions and options displayed in the center of the tile. 1302 is a pull-down menu that lists the name identifiers of all named predefined tiles, including those provided by the system and those currently being edited, and the user chooses one of them. select. 1303 is a text input item for inputting options, the contents can be input with a virtual keyboard, and some constants NIL, 0, 1 etc. can be set by selecting from the pull-down menu.
ダイアログ1301にあるOKボタンは、押下すると、編集内容を該当するタイルに反映させて1301を閉じる。Cancelボタンは、編集内容を放棄して1301を閉じる。
When the OK button in the
図14は1302をタップしたときにポップアップするメニューの例である。
1401のメニューには、システムで定義済みの命令と作成済みの名前付きの盤面名のすべてが選択可能なように表示される。作成済み盤面には、現在208に表示されている編集中の盤面の名前も含まれる。この例では、現在設定されている命令についてハイライト表示されている。これらの表示の順番については、名前の辞書式順や使用頻度の高い順に並べるなども考えられる。1402は「--EMPTY--」という項目で、これを選択すると該当するタイルが空白に設定され、リセットされる。
Figure 14 is an example of a menu that pops up when you tap 1302.
The 1401 menu is displayed with all system-defined instructions and pre-created named board names available for selection. The created board also includes the name of the board currently being edited, which is displayed in 208. In this example, the currently set instruction is highlighted. Regarding the order of these displays, it is conceivable to arrange them in lexicographic order of names or in order of frequency of use. 1402 is an item called "--EMPTY-", and if you select this, the corresponding tile will be set to blank and reset.
図21は、システムで定義済みの命令の一例である。これらの中には、シンボルや数値、文字列を操作する命令のほか、複合データ構造として二進木リストを取り扱うための命令であるFRIST、REST、CONS、EQ、ATOM?なども含まれている。命令EQでは、入力が数値同士の場合の比較機能を含めてもよい。 FIG. 21 is an example of a system-defined instruction. These include instructions for manipulating symbols, numbers, and strings, as well as instructions for handling binary tree lists as complex data structures, such as FRIST, REST, CONS, EQ, and ATOM ?. .. The instruction EQ may include a comparison function when the inputs are numerical values.
さらに図21のシステム定義済み命令の中には、電源の状態を読み取るON?、電源の投入と切断を指示するPOWER、現在の時間を取得するNOW、タイマーに時間を設定するSTTMRなどの命令も含まれている。これは、制御対象のエアコン機器102に対する制御命令に対応する。この例にくわえて、エアコンの温度設定を読み取る、あるいは設定するなどの命令も追加してもよい。
In addition, among the system-defined instructions in Fig. 21, there are also instructions such as ON? To read the power status, POWER to instruct power on / off, NOW to get the current time, and STTMR to set the time to the timer. include. This corresponds to a control command for the
図2の盤面表示208の各タイルの上、あるいはタイルの拡大表示図12の1202をシングルタップしたときの動作は、第一の実施形態及び後述の第二の実施形態では、タップされた場所によって編集対象を区別している。図15はタップの場所に関する領域の説明である。1501はタイル全体の正方形領域であり、その内部は9個の領域に分割されている。このうち、中央の領域1502を「ゾーン1」と呼ぶこととし、以下上辺沿いの領域を「ゾーン2」、左辺沿いを「ゾーン3」、右辺沿いを「ゾーン4」、下辺沿いを「ゾーン5」と呼ぶことにする。この例では四隅の領域には名称はなくこの領域をシングルタップしても何も処理しないものとする。例示では、ゾーン1が大きめに設定されているが、各ゾーンの大きさを均等にしてもよく、これらの領域の大きさの設定は、利用者の操作性をもとに決定される。
The operation when a single tap is made on each tile of the
上記において、「1202の領域の中央付近をシングルタップ」という記述は、拡大表示領域1202のゾーン1をシングルタップすることに該当する。
In the above, the description "single tap near the center of the 1202 area" corresponds to single tapping the
第一の実施形態と第二の実施形態では、ゾーン1のシングルタップは命令とオプションの編集を行う。また、ゾーン2をシングルタップすると上方向の入出力の設定を行う。同様に、ゾーン3は左方向、ゾーン4は右方向、ゾーン5は下方向の入出力の編集を行う。
In the first and second embodiments, the
各ゾーンをシングルタップしたときには、専用のダイアログを表示させ、入力0、入力1、入力2、入力3、出力0、出力1、出力2のいずれか一つを選択設定させるようにしてもよいが、例示する両実施形態ではより操作性に優れた手段を例示する。
When each zone is single-tapped, a dedicated dialog may be displayed and one of
第一の実施形態と後述の第二の実施形態では、各ゾーンがシングルタップされた時の動作として、すでにそのゾーンに対応する方向に入出力が設定されていた場合には設定を削除し、設定されていない場合には、図16のように設定された優先度順に未設定の入出力を設定するという規則で設定動作を行う。 In the first embodiment and the second embodiment described later, as an operation when each zone is single-tapped, if the input / output is already set in the direction corresponding to the zone, the setting is deleted. If it is not set, the setting operation is performed according to the rule that unset input / output is set in the order of priority set as shown in FIG.
例えば、入力二個、出力二個の命令に対するシングルタップ動作例は図22のようになる。初期状態として、2入力2出力の命令であるSWITCH命令だけが設定されている2201の状態にあるとする。次に最初にゾーン2をタップすると、2002のように上方向に入力0が設定される。次にゾーン4をタップすると、2203のように未設定の右方向に入力1が設定される。次にゾーン3をタップすると、2204のように未設定の左方向に出力0が設定される。さらに、ここでゾーン4を再度タップすると、2205のように、右方向の入力1の設定が削除され、右方向は未設定になる。次に、ゾーン5をタップすると、2206未設定の下方向に、まだ選択されていない有効な方向の内、図16に照らして最も優先度の高い、入力1、すなわち直前のタップ操作で設定先のなくなっていた入力位置が、まだアサインされていない出力1に優先して設定される。というような動作である。もちろんこの後、ゾーン4をタップすると、2207のように唯一残っているアサインされていない出力1が右方向に設定されるという動作を行う。
For example, FIG. 22 shows an example of a single tap operation for an instruction having two inputs and two outputs. It is assumed that the initial state is 2201 in which only the SWITCH instruction, which is a 2-input 2-output instruction, is set. Next, when you tap
図17はこのようなシングルタップの動作についてのUI操作処理部2002の処理のフローチャートである。処理は最初にタップされた領域の判別ステップ1701から始まり、タップされた領域がゾーン1かそうでないかによって処理を切り替える。ゾーン1がタップされた場合にはステップ1702でダイアログ1301をモーダルで表示して命令とオプションの設定編集を行う。それ以外の領域がタップされた場合にはステップ1703の「方向編集」手続きにより、各方向の入出力設定が行われる。
FIG. 17 is a flowchart of processing of the UI operation processing unit 2002 regarding such a single tap operation. The process starts from
図18は、表示領域がダブルタップされた時の動作についてUI操作処理部2002のフローチャートである。ダブルタップは、タップされた領域に限らず以下の動作を行う。前述のように、タイル表示領域をダブルタップすると拡大ダイアログ1201が表示されるが、その中の拡大タイル表示1202でもダブルタップされることもありうる。その場合には、重ねて拡大ダイアログを表示する必要はないので、何もせずに終了する。ステップ1801はそのための判断ステップで、タップされた表示領域が1202であった場合には、何もせずに終了する。タップされた領域が208の表示の内の一つのタイルであった場合には、ステップ1802で、タップされたタイルの拡大編集ダイアログ1201を表示させ、ユーザーに編集操作をさせたのち、OKボタンによって閉じられるときには、編集内容をタイルに反映させて終了する。
FIG. 18 is a flowchart of the UI operation processing unit 2002 regarding the operation when the display area is double-tapped. The double tap performs the following operations regardless of the tapped area. As mentioned above, if you double-tap the tile display area, the
図19は、図17のステップ1703の「方向編集」の処理を示すフローチャートである。ここでは、ゾーン1以外の領域がシングルタップされた時の処理を行う。最初にステップ1901でタップされた領域がゾーン2,3,4,5のいずれでもない四隅の領域ではないことを確認している。もし、四隅の領域であるならば、何もせずに終了する。ゾーン2,3,4,5のいずれかであった場合は、さらにステップ1902で、そのゾーンに対応する方向に入出力が設定されているかどうかを判定する。もしすでに入出力が設定されている場合には、ステップ1903で設定されている入出力を解除する。解除された入出力はステップ1904での再割り当て候補に含まれるように処理される。タップされたゾーンに、入出力の設定がない場合には、ステップ1904で設定処理が行われる。ステップ1904では、まだ設定されたことのない入出力や解除されたことのある入出力の内、図16の優先度に照らして最も優先度の高い入出力を設定する。
FIG. 19 is a flowchart showing the process of “direction editing” in
ここまでのユーザー操作は、表示に対するタップとダブルタップ、ポインティングディバイスの場合には、クリックとダブルクリック、そして名前付き盤面の名前の文字入力とオプション文字列の入力のみである。文字入力は単語や数字の入力がほとんどであり、仮想キーボードで簡単に入力できる長さである。 The user operations so far are only tap and double tap on the display, click and double click in the case of the pointing device, and input the character of the name of the named board and the option character string. Most of the character input is words and numbers, and the length is such that it can be easily input with a virtual keyboard.
以上のような図式表現のプログラミング言語とユーザーインターフェースを提供することにより、物理キーボードを必要としない表示とポインティングディバイス、あるいはタッチパネルのみでのプログラミング環境が実現される。本質的には、画面上の位置を指定する手段と、二つの区別された指示ができる入出力装置であればよく、例えば、ゲームコントローラの十字キーとA、Bボタンでもよい。
(第二の実施形態)
By providing the above-mentioned graphical representation programming language and user interface, a display and pointing device that does not require a physical keyboard, or a programming environment using only a touch panel can be realized. In essence, it may be a means for designating a position on the screen and an input / output device capable of giving two distinct instructions, for example, a cross key of a game controller and A and B buttons.
(Second embodiment)
第二の実施形態は、前述の第一の実施形態を変形して、解釈実行系にイベント駆動とオブジェクト指向パラダイムを導入した実施形態である。 The second embodiment is a modification of the first embodiment described above, in which an event-driven and object-oriented paradigm is introduced into the interpretation execution system.
図23は、第二の実施形態における図1のプログラム実行エンジン106の内部を表した例である。図23の2302が、図1の107への接続に対応し、207制御機器インターフェース105への接続に対応する。本実施形態において106に対応するプログラム実行エンジン2301は、API仲介部2305を窓口として、タッチパネル107上でのタップ、ダブルタップなどの操作、制御機器からの電源状態の変化などに反応して、API仲介部2305から対応オブジェクトを取りして、実行解釈部2303が、評価メソッドを実行する。
FIG. 23 is an example showing the inside of the
2303はプログラムの解釈実行部であり、タッチパネル107上での操作イベントや図1の103の電源状態と104の内蔵時計で発生したイベントに対応するコールバックを持つオブジェクトを、API仲介部2305が保持する後述の図34の3401の登録表から取り出し、評価メソッドの実行動作を開始し、実行環境保持部2304と、作業領域2306に各種情報を書き込み/読み出しを繰り返して実行を行い、実行完了時にその旨を2305のAPI仲介部を通じてUIタッチパネル図1の107に表示する。また、解釈実行部2303は、2305の仲介部を通して図1の106のインターフェースからのイベント対応と、操作処理の呼び出しを行う。本実施例では、制御機器内からのイベント発生源として103の電源、104の内蔵時計が例示されているが、エアコンにおける検知温度の変化などの、対象機器固有の内部状況の変化などもイベント発生源として考えられる。
2303 is the program interpretation execution unit, and the
2304は、実行環境保持部であり、実行時の各種情報を保持する部分である。これらの情報には実行待ちのタイルの待ち合わせ場所、実行待ちのタイルに到達しているデータの情報などデータフローグラフを実行するにあたって必要な一時作業データが含まれる。 2304 is an execution environment holding unit, and is a part that holds various information at the time of execution. This information includes temporary work data necessary for executing the data flow graph, such as the meeting place of the tile waiting to be executed and the information of the data reaching the tile waiting to be executed.
2305は、API仲介部であり、二つの機能から成る。一つはUIおよび制御機器からの反応処理対象となるイベントの識別子をキーとし、命令メッセージ識別子と、命令メッセージ識別子を送る対象となるオブジェクトへの参照を値とする表とその管理機能であり、もう一つは、解釈実行部2303から、外部機器及びUIタッチパネル図1の107に対する操作を仲介する機能である。
2305 is an API mediator and consists of two functions. One is a table and its management function that uses the identifier of the event to be processed as a reaction from the UI and control device as a key, the instruction message identifier, and the reference to the object to which the instruction message identifier is sent. The other is a function of mediating the operation of the external device and the
第二の実施形態の作業領域2306は、データフローグラフ内を流通する各種データの置き場所であり、識別子、数値、文字列や辞書、配列、二進木リスト構造体などのオブジェクトの実体が格納されている。本実施形態は、システムを構成する要素群もデータフローグラフを流通するデータトークンとなっていることを特徴としており、以降ではグリッドと称するデータフローグラフや、グリッド内の各タイル、メソッド識別子とグリッドの対の集まりで構成されるクラス定義、クラス識別子とクラス定義の対の集まりから成るクラス定義表などが、すべて作業領域2306に含まれる。
The
図24はこの実施例におけるユーザー画面への表示例である。この画面ではすでにプログラムが実行され、表示領域2401に”HELLO WORLD”という文字列が表示されて実行が終了している状態が表示されている。図24で表示されている各ボタンの動作とプログラムの詳細な説明は後述する。ここでは、基本的な構成要素についてのみ説明する。
FIG. 24 is a display example on the user screen in this embodiment. On this screen, the program has already been executed, and the character string "HELLO WORLD" is displayed in the
2411,2412,2413には、それぞれ実行命令識別子とオペランドと呼ばれる実行オプション、入力データの入ってくる方向、出力データの排出方向を指示する図が描かれている。この矩形を以降「タイル」と呼ぶ。タイルに関する詳細は、図25で説明する。タイルについては、この実施形態でも、矩形となっている。 In 2411, 2412, and 2413, diagrams are drawn that indicate execution instruction identifiers and execution options called operands, the direction in which input data enters, and the direction in which output data is discharged, respectively. This rectangle is hereafter referred to as the "tile". Details regarding tiles are described in FIG. The tile is also rectangular in this embodiment.
2408はタイルが縦横に隣接して配置されている領域で、第二の実施形態では、以降「グリッド」と呼ぶ。前記グリッドオブジェクトは、この領域の内容を保持するオブジェクトである。グリッドには識別のためのメソッド識別子が付けられている。2408のグリッドには「MainLine」という識別子が付けられており、表示領域兼プルダウンメニュー2407にその名前が表示されている。また、このグリッドと「Mainline」の対応は、「App」という識別子と対応しているクラス定義データトークンオブジェクト内に登録されており、そのクラス定義識別子名「App」が表示領域兼プルダウンメニュー2414に表示されている。図示の状態は、「AppクラスのMainlineメソッドの定義グリッド(データフローグラフ)の現状、言い換えれば編集状況の表示状態でもある。また、グリッド中の各タイルの位置を表す識別子として、列については左からA,B,C,…,Gとインデックスが付けられ、行については、上から1,2,3,…,7とインデックスが付けられる。識別子は列行の順に”A1”, “B2”などと表示される。例えば、2413のタイルの位置は”D3”である。2405は、グリッド表示上タイルの列のインデックスを表示している目盛り行であり、2406は、行のインデックスを表示している目盛り列である。
2408 is an area where tiles are arranged vertically and horizontally adjacent to each other, and in the second embodiment, it is hereinafter referred to as a "grid". The grid object is an object that holds the contents of this area. The grid is given a method identifier for identification. The grid of 2408 is given the identifier "MainLine", and the name is displayed in the display area and pull-
このMainLine盤面で表現されている「プログラム」を簡単に説明する。タイル2411は、CONSTというメソッドを入力0のオブジェクトに実行させる指示が図示記述されている。CONSTに対応する既定動作は、その実行対象である入力0のオブジェクトがどのようなクラスのデータトークンあっても、内容を無視して、オプションとして指定されていて、冒頭の4文字「”HELL」とのみ短縮表示されている”HELLO WORLD”という文字列データトークンを出力データとして、このタイルの下方に隣接しているタイルに渡す指示である。この動作定義は、入力0のデータトークンオブジェクトのクラス定義、あるいはスーパークラスの定義表の内容を元に決定される。第二の実施形態では、後述するように、既定のクラス階層の上位レベルのクラス定義で上記動作が定義および対応付けられている。タイル2412は、PRTというメソッドを入力0のオブジェクトに実行させる指示が図示記述されている。PRTメソッドに対する既定動作は、上方に隣接しているタイルからのデータ入力0のオブジェクトをPRTメソッドの実行対象としてとしてその内容を2401の表示領域に印字する。さらに、入力データをそのまま下方に隣接するタイルに渡す。タイル2413は、ENDメソッドの実行指示が記述されている。ENDメソッドの既定動作はメソッドの実行対象である入力0として上方に隣接しているタイルからのデータ自身を捨ててしまい、何も出力しない。このグリッドプログラムでは、タイル2413の実行によりデータが捨てられ、プログラム系全体を流通するデータがなくなることで系の実行が終了する。このプログラム中の矢印は、制御の流れではなく、データの流通経路を示しており、図式はデータフローグラフになっている。また、図式中の各タイルは、データフローグラフの実行節に対応している。
The "program" expressed on this Main Line board will be briefly explained.
図24の2402は”RUN”とラベル付けされているプッシュボタンであり、押下するとセットされているプログラムの実行が開始される。このボタンを押下すると、2414で表示指定されているAppクラスのインスタンスが一つ作成され、それに対して、2407で表示されているMainlineメソッドを、入力0として作成されたAppクラスのインタンス自身を指定して、後述する実行評価メソッドを呼び出す。その結果2408で図示されているプログラムグラフの上辺中心のタイル2411の上に、実行のきっかけとなる入力0として実行評価メソッドの引数の入力0として渡されたAppクラスのインスタンストークンが投下され、以降必要なデータが到着して実行可能になったタイルの実行が続く。
2402 in FIG. 24 is a push button labeled "RUN", and when pressed, execution of the set program is started. When this button is pressed, one instance of the App class displayed in 2414 is created, and for that, the Mainline method displayed in 2407 is specified as the instance of the App class created as
2404は”NEW CLASS”とラベル付けされているプッシュボタンであり、押下すると新規に名前を付けたクラス定義を登録することができる。詳細は後述する。2403は”NEW METHOD”とラベル付けされているプッシュボタンであり、押下すると現在2414で選択表示されているクラス定義に新規に名前を付けた新規のグリッドが作成できるようになる。詳細は後述する。グリッドに対応付けられた名前は、タイル中の「メソッド名」として利用可能であり、新たな名前付きのグリッドを作成することで、そのグリッドが表現するアルゴリズムをサブルーチンメソッドとしてほかのグリッドや再帰的に自身のグリッド中で使用できる。 2404 is a push button labeled "NEW CLASS", which can be pressed to register a newly named class definition. Details will be described later. 2403 is a push button labeled "NEW METHOD" that, when pressed, allows you to create a new grid with a new name for the class definition currently selected and displayed in 2414. Details will be described later. The name associated with the grid can be used as the "method name" in the tile, and by creating a new named grid, the algorithm represented by that grid can be used as a subroutine method in other grids or recursively. Can be used in its own grid.
2414は表示領域兼プルダウンメニューであり、選択候補として、前記クラス定義表に登録されているすべてのクラス識別子が選択候補としてリストされる。ユーザーはこのメニューからクラス名を選択すると、2407にそのクラスが持っているメソッドの中から一つを選択できるようになる。
2407は表示領域兼プルダウンメニューであり、選択候補として2414で表示選択されているクラスが持っているすべてのメソッド識別子が選択候補としてリストされる。ユーザーはこのメニューからメソッド名を選択すると、2408の表示が選択された名前のグリッドの内容に切り替わり編集が可能になる。2407は、表示の切り替えと現在2408に表示されている盤面の名前の表示を兼ねる。
2414 is a display area and pull-down menu, and all the class identifiers registered in the class definition table are listed as selection candidates as selection candidates. The user can select a class name from this menu and the 2407 will be able to select one of the methods that the class has.
2407 is a display area and pull-down menu, and is displayed as selection candidates. All method identifiers of the selected class are listed as selection candidates. When the user selects a method name from this menu, the 2408 display switches to the contents of the grid with the selected name for editing. The 2407 doubles as a display switch and a display of the board name currently displayed on the 2408.
この実施形態では、第一の実施形態と同じく、グリッドは3×3、5×5、7×7など縦横とも奇数個のタイルになっている。 In this embodiment, as in the first embodiment, the grid has an odd number of tiles in both vertical and horizontal directions such as 3 × 3, 5 × 5, and 7 × 7.
2409は、表示されているグリッドの入力データの方向を表示する領域である。グリッドは、一つ以上のデータ入力を受けるが、どの方向をデータ到着の方向とするかを設定することができる。2409はその表示領域である。この例では、T : Top すなわち上からデータが到着した時点でMainlineというメソッドの実行を開始する可能であることを表している。一方各タイルは0個以上の出力があり、どの方向が出力になるのかを2410の領域に表示する。この例では、Mainlineは外に対して出力をしないので、2410の欄は空白になっている。2415は「ALL」か「ANY」の二者択一のプルダウンメニューであり、グリッドの実行開始条件を表示している。すなわち、この値が「ALL」の場合には複数の入力がある場合すべてのデータが到着するまで実行しない、「ANY」の場合にはどこかに一つでもデータが到着すれば直ちに実行開始する種類のグリッドであることが表示されている。 2409 is an area for displaying the direction of the input data of the displayed grid. The grid receives one or more data inputs, but you can set which direction is the direction of data arrival. 2409 is the display area. In this example, T: Top, that is, it is possible to start the execution of the method called Mainline when the data arrives from above. On the other hand, each tile has 0 or more outputs, and which direction is the output is displayed in the area of 2410. In this example, Mainline does not output to the outside, so the 2410 field is blank. 2415 is an alternative pull-down menu of "ALL" or "ANY", and displays the execution start condition of the grid. That is, when this value is "ALL", if there are multiple inputs, it will not be executed until all the data arrives, and if it is "ANY", execution will start immediately if any one data arrives. It is displayed that it is a type of grid.
図25は、各タイルの表示の詳細が2つ例示されている。図25(a)の2501は、2411で図示されたCONSTメソッドタイルを再掲したものである。2502は、矢印でない直線であり、外部からの入力がこの方向から、すなわち上から、入ってくることを表している。2503は入力データに対する識別子である。これは入力が複数あるような命令タイルのうち、入力を区別しないと結果が変わるような命令、例えば引き算や割り算のような命令を想定して付与されるものである。 FIG. 25 illustrates two details of the display of each tile. 2501 in Figure 25 (a) is a reprint of the CONST method tile illustrated in 2411. 2502 is a straight line that is not an arrow, indicating that external input comes in from this direction, that is, from above. 2503 is an identifier for the input data. This is given assuming an instruction tile that has a plurality of inputs and whose result changes unless the inputs are distinguished, for example, an instruction such as subtraction or division.
2504はメソッドの識別子表示である。ここでは既定動作で定数を出力するCONSTメソッドが表示されている。そのほか、プログラムの実行系があらかじめ用意しているメソッド名を設定することはもちろん、すでに登録されている名前付きグリッドの名称を設定することもできる。さらに、後刻定義することを前提として、未定義の任意の識別子を指定することも可能である。2505は2504のメソッドに対するオプションの表示である。既定のCONSTメソッドは、メソッド識別子だけでは、どのような定数を出力するかが決定しないので、定数をオプションとして指定する。オプションを必要としないメソッドもある。 2504 is the method identifier display. Here, the CONST method that outputs a constant by default is displayed. In addition, it is possible to set the name of the already registered named grid as well as the method name prepared in advance by the program execution system. Furthermore, it is also possible to specify an arbitrary undefined identifier on the assumption that it will be defined later. 2505 is a display of options for 2504 methods. Since the default CONST method does not determine what kind of constant is output only by the method identifier, specify the constant as an option. Some methods do not require options.
2506の外向きの矢印は、この方向、この例では下に隣接したタイルに対して、出力があることを表示している。入力と同様に出力にも識別子が付与され2507のように矢印に沿って表示されている。 The outward arrow on the 2506 indicates that there is output in this direction, for the tiles adjacent below in this example. Like the input, the output is given an identifier and is displayed along the arrow like 2507.
図25(b)の2508は既定動作で複数の入力と出力を持つメソッドSWITCH実行指示タイルである。SWITCHメソッドは、既定動作では二つの入力と二つの出力を持つ命令であり、入力1が特別な識別子NILであれば、入力0として入ってきたデータを出力1へ出力し、そうでなければ入力0を出力0に排出する。この既定動作では、データは、出力0か出力1のいずれかに排出され、両方からデータが排出されることはなく、データNILを論理値の偽とみなして出力を切り替える条件分岐に該当するものである。2508では、入力0が上に隣接したタイルから、入力1が左から進入し、出力0として下に、出力1として右に隣接したタイルにて渡される。2510は、この方向、すなわち左からの入力が入力1であることを表示し、2511は、右への出力が出力1であることを表示している。
2508 in Figure 25 (b) is a method SWITCH execution instruction tile that has multiple inputs and outputs by default. The SWITCH method is an instruction that has two inputs and two outputs by default, and if
2508では、入力0、入力1、 出力0、出力 1をそれぞれ上、左、下、右と設定された表示になっているが、本実施例では、各命令タイルの入力方向と出力方向は自由に選択設定できる。これら入出力の方向が自由に設定できることから、混乱を避けるために入出力に識別子を付与する必要がある。
In 2508,
図26は、図24で表示されていたMainlineグリッドの部分を抽出して変形したものである。END命令タイルの位置が図24と異なっているが、アルゴリズムの表現としては同等である。ここで、2609は、現在の表示対象クラスがAppであること、2607は、現在のメソッドの表示がMainlineであることを表示しており、2608は、このMainlineグリッドが実行を開始できる条件「T」が表示されている。T単独の場合、上からデータが進入すれば、盤面の実行可能になる。この例では、図24の2402のRUNボタンを押すと、この盤面の2601の位置からデータAppのインスタンストークンが進入する。 FIG. 26 shows an extracted and deformed part of the Mainline grid displayed in FIG. 24. The position of the END instruction tile is different from that in Fig. 24, but it is equivalent in terms of algorithm representation. Here, 2609 indicates that the current display target class is App, 2607 indicates that the display of the current method is Mainline, and 2608 indicates that the condition "T" that this Mainline grid can start execution. Is displayed. In the case of T alone, if data enters from above, the board can be executed. In this example, when the RUN button of 2402 in FIG. 24 is pressed, the instance token of the data app enters from the position of 2601 on this board.
投入されたデータAppのインスタンストークンは、タイル2602が入力0として受け取る。タイル2602は、入力0のメソッドCONSTの実行条件検査により、入力0のメソッドCONSTが即座にオプション”HELLO WORLD”付きで実行される。実行の結果2602の出力0として文字列”HELLO WORLD”のトークンが下に隣接するタイル2603に渡される。タイル2603は、上からのデータを入力0として受け取るように設定されており、受け取ったのち、入力0の文字列オブジェクトに対するメソッドPRTの実行条件検査が行われ、タイル2603のメソッドPRTが実行可能と判断され、2602の次に実行される。2603の実行の結果、入力された文字列”HELLO WORLD”のトークンは、図24の表示領域2401に表示され、そののちそのまま出力0として右隣りのタイル2605に渡される。タイル2605は、メソッド識別子2606としてENDが設定されている。タイル2605は左隣のタイル2603から、文字列”HELLO WORLD”を入力0として受け取る。文字列オブジェクトのENDメソッドは入力0にデータが到着した時点で実行可能となるため、タイル2605は2603の次に実行される。このENDの実行の結果、入力された文字列データ”HELLO WORLD”のトークンは参照が放棄される。この結果この系のいずれのタイルも実行可能ではないため、実行機構は処理を終了する。
The instance token of the submitted data app is received by
2608の入力の方向記号としては、T、L、R、Bの各文字が使用でき、それぞれ上、左、右、下を表す。この記号の左からの出現順が、入力の識別子を指定することになる。例えば2608の「TL」という入力表示で2610の値が「ALL」である例示の場合は、上からと左からの両方にデータが到着したときに実行可能となることを表し、さらに、Tが入力0、Lが入力1に対応することも表している。もし、同じ入力表示で、2610の値が「ANY」の場合には、どちらかが入力として到着したときに実行可能となり、到着した方向が上からならば入力0, 左からならば入力1に対応付けられる。方向記号が一つだけ単独で指定された場合、その方向からのデータが到着した時点で実行条件チェックボックス2610の値にかかわらず、直ちにグリッドは実行可能となる。
The letters T, L, R, and B can be used as the input direction symbols for the 2608, representing up, left, right, and bottom, respectively. The order of appearance of this symbol from the left specifies the input identifier. For example, in the input display of 2608 "TL" and the value of 2610 is "ALL", it means that it can be executed when the data arrives from both the top and the left, and T is It also indicates that
図27(a)は、このプログラム言語の図1の106の実行エンジンの中の図23の2303である解釈実行部の動作を表すフローチャートである。解釈系は、起動すると、最初に2701にあるようにAppクラスのインスタンスを一つ生成する。次に解釈系はステップ2702にある通り、図27(b)の2704で図示される3x3のグリッドオブジェクトを生成する。全体の実行処理は、2704のグリッドオブジェクトに対して、入力0として2701で作られたAppのインスタンスを引数トークンとして、グリッドオブジェクトのメソッドである後述の実行評価手続きEvalを適用することに還元する。
FIG. 27 (a) is a flowchart showing the operation of the interpretation execution unit, which is 2303 of FIG. 23 in the execution engine of 106 of FIG. 1 of this programming language. When the interpreter starts, it first creates an instance of the App class as shown in 2701. The interpretation system then creates the 3x3 grid object illustrated in 2704 in Figure 27 (b), as in
図28は、グリッドオブジェクトクラスのEval手続きの既定の処理フローチャートである。この手続きで使用される作業用構造体については、図29に示す。図29に図示されている各種作業用構造体は、図23の2304の実行環境保持部に格納される。グリッドクラスの実行評価においては、作業用の領域としてコンテキストという構造体が利用される。コンテキスト構造体は、グリッドオブジェクト自身への参照、実行待ちタイルの待ち合わせキュー2901、途中で出力されたグリッドの出力トークンの待ち合わせ場所2902やそのほかのデータが保持される。
FIG. 28 is a default processing flowchart of the Eval procedure of the grid object class. The working structure used in this procedure is shown in Figure 29. The various working structures shown in FIG. 29 are stored in the execution environment holding unit of 2304 in FIG. 23. In the execution evaluation of the grid class, a structure called context is used as a working area. The context structure holds a reference to the grid object itself, a
グリッドのEval手続きは、まずステップ2801でコンテキスト構造体を作成し、グリッドへの参照に自分自身を登録し、待ち合わせキューをクリアするなどの初期化処理を行う。次にステップ2802でEval手続きの引数として渡された入力トークンを所定のタイルに渡す。この時ステップ2803で、渡された到着済みデータ群2903と、データを渡されたタイル2905と、タイルの位置情報2904を保持する待ち合わせ子構造体を作成し、待ち合わせキューに登録する。
The grid's Eval procedure first creates a context structure in
次に、グリッドのEvalは、待ち合わせキューから待ち合わせ子を一つずつ取り出し、この待ち合わせ子が実行可能であるかどうかを検査する。いずれか一つが実行可能であれば、その待ち合わせ子をキューから取り出し、ステップ2805に進む。キューが空、もしくは、どのエントリも実行可能でない場合は、ステップ2808へ進む。待ち合わせ子が実行可能であるかどうかは、待ち合わせ子に到着している入力0トークンのクラス定義に対して、タイルのメソッド名をキーとして検索を実施し、得られたメソッドの定義の実行可能条件情報を参照することで確認することができる。場合によっては、入力トークン0が未到着のケースも考えられるが、その時には、そのほかの到着済みのいずれかの入力トークンの定義に対して、メソッド名の検索を実施することでチェックすることで検査は実現できる。いずれの場合も、メソッドが、該当トークンに対して定義されていない場合や、見つかったメソッド定義の実行条件に書かれている「ALL」または「ANY」の条件値によって実行ができない場合には、取り出した待ち合わせ子は、キューに戻される。本実施例では、到着した入力0のトークンか、入力0が未到着の場合にはいずれかの到着済みトークンを対象に、指定のメソッドが実行可能かどうかを判定する。
The grid's Eval then removes the waiters from the wait queue one at a time and checks if the waiters are executable. If any one is feasible, dequeue the waiter and proceed to step 2805. If the queue is empty or none of the entries are executable, go to
ステップ2805では、キューから取り出された待ち合わせ子から、入力トークン群とメソッド名を取り出し、ステップ2804での実行可能検査に使用した入力トークンに対して、メソッド名と、入力トークン群を引数として実行評価メソッドEval()を実行する。この結果として0個以上の出力トークンが返り値として渡される。
In
ステップ2806では、2805の戻り値として得られた処理結果の各トークンを所定の方向の隣接タイルに渡す処理を行う。この時、隣接タイルの待ち合わせ子がすでにキュー内に存在する場合には、その待ち合わせ子の到着済みトークン置き場に追加する。この検索は、図29(b)の待ち合わせ子の情報をもとに行うことができる。もし、キューに隣接タイルの待ち合わせ子がない場合には、新規に待ち合わせ子を作成し、そこの最初の到着トークンとして到着トークン置き場に追加して、作成した待ち合わせ子をキューに追加する。
In
処理タイルがグリッドの端にあり、隣接するタイルが存在しないケースの処理2807では、その端がグリッドの定義の出力方向位置である場合に限り、コンテキストの出力待ちトークン置き場2902に留置される。それ以外の場所で端から出たトークンは廃棄されるかエラー発生のケースとしてシステムに報告されるかのいずれかの処置がなされることになる。
In
ステップ2804で待ち合わせキューから実行可能なエントリが見いだせない場合には、ステップ2808で、この手続きの戻り準備処理が行われる。戻り値は、コンテキストの出力待ちトークン置き場2902に留置されていたトークン群であり、出力番号に対応した位置で戻される。手続きの終了時にコンテキスト構造体は廃棄されるが、このとき待ち合わせキューにエントリが残っている場合には、残留トークンを検知したとシステムに報告する処理があってもよい。
If no executable entry can be found in the wait queue in
図30は、図28の2804の実行可能エントリの探索処理フローチャートである。この探索処理では、結果として、実行可能な待ち合わせ子エントリを出力するか、実行可能なエントリがない場合には存在しなかったことを表すNULLを出力する。 FIG. 30 is a flow chart for searching the executable entry of 2804 in FIG. 28. As a result of this search process, an executable waiter entry is output, or if there is no executable entry, NULL indicating that the entry did not exist is output.
3001は、キューが空の場合も含めて未調査のエントリがキューにあるかどうかを検査する。もしキューが空か、すべてのエントリが調査済みであれば、ステップ3009に進み、NULLを出力して終了する。そうでなければ、3002で未調査のエントリを一つ抽出する。
3001 checks if there are unexamined entries in the queue, even if the queue is empty. If the queue is empty or all entries have been examined, go to
取り出したエントリには、図29の2903に到着済みトークンが登録されているので、まず、入力0が到着しているかを確認する。もし到着していれば、以下のメソッドの検索対象は、入力0とする。もし、入力0が未到着の場合には、到着済みトークンのうち入力番号の最も小さい入力を対象とする。この規則では、検索対象として、入力0を最優先候補としている。また、入力0が到着していない場合にも検索対象を選定するのは、指定のメソッドの実行開始条件が「ANY」である場合を考慮したものである。本実施形態では、いずれかの入力トークンに、メソッド識別子というメッセージを送る形式のオブジェクト指向を実現している。このため、いずれかの到着トークンを選定して、それにメソッドの適用を試みる形式で実行条件の抽出を行う。3004あるいは3005は、この対象トークンの選定規則の一部を構成している。
Since the arrived token is registered in 2903 in FIG. 29 in the extracted entry, first check whether the
3004または3005の処理によって選定された対象トークンに対して、指定されているメソッド名2906に対応するメソッド定義が存在するかどうかをステップ3006で判定する。この判定にあたっては、上位クラスへの検索も含まれ、処理詳細を図31に示している。この判定結果として、メソッド定義の検索に失敗した場合は、実行可能ではないと判定し、調査している待ち合わせ子を調査済みに分類し、ステップ3001に戻る。メソッド定義が見つかった場合には、3007で到着済みのトークンの数とメソッド定義が要求している入力の数と一致するか、およびメソッド定義の中の値「ALL」か「ANY」か、などの判定により実行可能かどうかを判定する。もし、実行可能ではないと判定された場合には、調査している待ち合わせ子を調査済みに分類し、ステップ3001に戻る。実行可能と判定されたときには、ステップ3008に進み、この待ち合わせ子を出力とし、処理を終了する。この一連の検索判定処理中の上記904以降の処理規則の中で、入力0が未到着の場合、一つだけでなく。そのほかのすべての到着済みトークンに対して、メッセージの検索と実行条件の検査を行う規則でもよい。本実施形態ではデータフローグラフの作成者と共有されている所定の規則で検索対象のトークンを抽出し、それに対してメソッド定義を検索、実行可能性の判定を行う。
In
図31は、図30のステップ3006の指定メソッド定義の検索処理のフローチャートである。この処理の入力は、メソッド名と検索対象入力トークンであり、出力は検索されたメソッド定義オブジェクトか、見つからなかったことを示すNULLである。本実施例では、クラス定義は、上位スーパークラスのクラス定義トークンへの参照を持つ。スーパークラスのクラス定義も属性辞書を持ち、メソッドの名前と定義の表を持つ。
FIG. 31 is a flowchart of the search process of the designated method definition in
メソッドの検索は、まずステップ3101で、入力トークンのインスタンスメンバーが登録されている属性辞書に対して行われる。クラス定義よりインスタンスメンバーの定義が優先することにより、各インスタンスがメソッドを上書き定義できる。もし、属性辞書中にメソッド名と同名のエントリがあれば、その値を結果としてステップ3106で出力して処理は終了する。また、インスタンス属性辞書に定義がない場合には、ステップ3102でクラス定義を検索する。この検索でもクラス定義の持っている属性辞書を先に検索し、属性上に見つからなければクラス定義の既定のメソッド辞書を検索する。もし、クラス定義中のこれらの辞書中に該当エントリがあれば値をステップ3107で出力して終了する。
The method search is first performed in
クラス定義中にも該当エントリがない場合には、クラス定義のスーパークラスのクラス定義を抽出し、次の検索対象にして、ステップ3101に戻ってループを形成する。もし、ここでスーパークラスの定義なかった時には、最終結論としてメソッドの検索結果としてステップ3105でNULLを出力して終了する。ここで、スーパークラスが複数ある場合には、ステップ3101以降のループを、ステップ3103でスーパークラスの優先度順の自分自身に対する再帰呼び出しに変更することで多重継承を実現することができる。また、ステップ3101以降のループを省略し、3101のNoの先を3105に接続すれば、継承なしのルールを実現できる。
If there is no corresponding entry in the class definition, the class definition of the superclass of the class definition is extracted, the next search target is set, and the process returns to step 3101 to form a loop. If the superclass is not defined here, the final conclusion is that NULL is output as the method search result in step 3105 and the process ends. Here, when there are a plurality of superclasses, multiple inheritance can be realized by changing the loop after
図32は、本実施例におけるデータトークンオブジェクトの構造と、クラス定義オブジェクトの構造の図示である。これらのオブジェクトは、図23の2306作業領域に格納される。データトークンオブジェクトは、トークンのタイプを決定するクラス定義オブジェクトへの参照と、インスタンス変数の集まりに該当するインスタンス毎に異なる固有の情報を保持する属性辞書への参照から成る。本発明では、クラス定義も流通データトークンであり、したがってスーパークラスの定義も同様に、属性辞書をもつ。 FIG. 32 is an illustration of the structure of the data token object and the structure of the class definition object in this embodiment. These objects are stored in the 2306 work area of Figure 23. A data token object consists of a reference to a class definition object that determines the type of token and a reference to an attribute dictionary that holds unique information that is different for each instance that corresponds to a collection of instance variables. In the present invention, the class definition is also a distribution data token, and therefore the superclass definition also has an attribute dictionary.
図33は、本実施例におけるクラスの継承階層の例図示である。本実施形態では、クラス階層構造の最上位クラスであり、データフローグラフ内のデータ流通トークンの型である抽象クラスTokenが、メソッドの一つとして、コンテキストへの参照、メソッド名、オプション文字列、入力トークン群を入力パラメータとし、実行結果ステータスと出力トークン群を結果として返す実行評価手続きEvalを持つ。これにより、すべてのトークンは処理系の評価実行対象になりうる。 FIG. 33 is an example diagram of the class inheritance hierarchy in this embodiment. In this embodiment, the abstract class Token, which is the top class of the class hierarchy structure and is the type of the data distribution token in the data flow graph, is one of the methods, which is a reference to the context, a method name, an option character string, and so on. It has an execution evaluation procedure Eval that returns the execution result status and output token group as the result, using the input token group as the input parameter. As a result, all tokens can be evaluated and executed by the processing system.
次に、本実施形態におけるイベント駆動機構の例を説明する。API仲介部図23の2305は、図34の3401のような発生イベントの識別子をキーとして、メソッド名と登録オブジェクトの二つを値とするテーブルを持つ。このテーブル一例を3402に示す。これは、UIが掲示する”ADD”、”SUB”、”MUL”、”DIV”の四つのボタンと値Aと値Bの入力項目のある図35の3501のようなダイアログに対するボタン押下イベントの登録表を表している。それぞれのボタンの押下イベント毎にエントリがあり、例えばADDボタンが押下されたときには、登録オブジェクトに対して、メソッドOnADDを実行するように指示することを表している。この時、OnADDの入力0は実施例の仕様により登録オブジェクト自身となり、入力1には、表示されたダイアログの項目名と値の組が入っている辞書トークン図35の3502が供給されるものとする。この例では、入力1の存在について明示されていないが、これは、実施例のシステムの仕様として暗黙に規定されているものとしてもよく、1301に追加エントリとして情報が明示されていてもよい。3402の例としては、四つのボタンに対する登録オブジェクトはすべて共通のトークン3403を参照しており、3403は、参照されている各エントリのすべてのメソッド名”OnADD”、”OnSUB”、”OnMUL”、”OnDIV”のエントリが属性辞書に入っている。もちろん登録表の各エントリは、対応するメソッド名に対する値が検索結果として抽出できるトークンであれば別々のものでもよい。
Next, an example of the event driving mechanism in this embodiment will be described.
ADDボタン押下時のAPI仲介部2305におけるイベント発生時の手続きの呼び出しは、2402の実行ボタン押下時の図27の流れ図と同様であり、コンテキスト構造体を作成し、入力0に登録オブジェクトを入力1にトークン3502を投入してOnADDメソッドをコールするグリッドを作成し、そのグリッドオブジェクトの実行評価手続きEvalを実行することで実現できる。この動作は、図6のフローチャートの601のインスタンス作成を登録オブジェクトの取り出し、 2702のグリッド作成を上記グリッドの作成に置き換え、2703をこの作成したグリッドに実行に置き換えたものと同等である。
Calling the procedure when an event occurs in the
第二の実施形態では、以下で、図34の3402、3403、3404のイベント登録の状態で、3501のダイアログが表示されている状態から、各ボタンが押下されたときに、3503のようなメッセージダイアログを表示するようなアプリケーションを例示する。3504は、ADDボタンが押下されたときのメッセージが例示されており、ADDボタンに対する反応であることを表示する”OnADD”とA+Bの値である”122”が表示されている。このメッセージは、3501の設定値通りのA=45でB=77の時には、SUBボタンの時には、”OnSUB : -32”、MULボタンの時には、”OnMUL : 3465”、DIVボタンの時には、”OnDIV : 0.544”に変わるというアプリケーションであり、各数値は、ダイアログのA、Bの入力値によって各種演算結果に変わるものである In the second embodiment, in the following, in the state of event registration of 3402, 3403, and 3404 in FIG. 34, when the dialog of 3501 is displayed and each button is pressed, a message such as 3503 is displayed. Illustrate an application that displays a dialog. In 3504, the message when the ADD button is pressed is illustrated, and "OnADD" indicating that it is a reaction to the ADD button and "122" which is the value of A + B are displayed. This message is "OnSUB: -32" for the SUB button, "OnMUL: 3465" for the MUL button, and "OnDIV" for the DIV button when A = 45 and B = 77 according to the setting value of 3501. It is an application that changes to: 0.544 ”, and each numerical value changes to various calculation results depending on the input values of A and B in the dialog.
図36の3601は、3403として登録される辞書のサブクラスであるDialogHandlerクラスのクラス定義の中のOnADDメソッドの定義を示している。3602の入力指定”LT”が示すように、入力0の自分自身は左の入り口であるタイルA4の左から入り、入力1のダイアログ情報の辞書トークン3502は上の入り口であるタイルD1の上から入る。タイルD1からの入力は、タイルD1とE1において参照が3つ作られる。一つの参照は、C2のGETIメソッドで、オプションに書かれているキー”A”の値が出力0からタイルD2の入力0に供給され、もう一の参照はタイルE2でキー”B”の値が抽出され、タイルD2の入力1に供給される。タイルD2は、入力0のオブジェクトトークンに対する”A+B”メソッドの実行指示であり、数値オブジェクトのA+Bメソッドは、自分自身に、入力1の数値を加算した結果を出力0に出す。同様に数値オブジェクトの減算、掛け算、割り算のメソッドとして”A-B”, “A*B”, “A/B”が用意されている。
3601 in Figure 36 shows the definition of the OnADD method in the class definition of the DialogHandler class, which is a subclass of the dictionary registered as 3403. As the input specification "LT" of 3602 indicates,
残りのタイルF1からの参照は、F3とG4に到達する。F3、G4ともにオプションを出力に出す、CONSTメソッドである。CONSTメソッドはクラスTに定義されており、そのサブクラスであるほとんどのオブジェクトが反応できる。結果は、F3は、出力に文字列”OnADD”をG4は出力に文字列” : “を出力する。 References from the remaining tiles F1 reach F3 and G4. Both F3 and G4 are CONST methods that output options. The CONST method is defined in class T and can react to most objects that are subclasses of it. As a result, F3 outputs the character string "OnADD" to the output, and G4 outputs the character string ":" to the output.
タイルE4は、メソッドに”A+B”が指示されているが、入力0は文字列”OnADD”である。例示のシステムでは文字列クラスで独自に”A+B”メソッドが定義されており、入力0である自分自身に、入力1のトークンの文字列化したものを連接する動作が定義されている。E4では、入力1は文字列なのでそのまま連接され”OnADD : “という文字列がタイルD4の入力0に供給される。D4も文字列に対するA+Bであるが入力1がD2の出力である数値であることがE4と異なる。ただし、数値オブジェクトは、例示のシステムでは、その値を10進数の表現文字列に変換することが可能であるので、D4から、”OnAdd : 122”という文字列トークンが生成される。
For tile E4, "A + B" is specified in the method, but
D4の出力を受け取るタイルD5は、ALRTというメソッドが指示されている。ALRTは、入力0のオブジェクトの文字列表現を3503のようなモーダルなポップアップダイアログに表示し、ユーザーがダイアログを閉じるのを待って、出力に入力0の値を渡すものである。ALRTもクラスTで定義されているので、そのサブクラスであるほとんどのクラスのオブジェクトが実行可能と設定されている。
Tile D5, which receives the output of D4, is instructed by a method called ALRT. ALRT displays a string representation of an object with
ポップアップダイアログが閉じるとD6のENDが実行されるが、前述の通り、ENDは入力を放棄するだけであり、D1からの一連のデータフローは、ここで終了する。また、ここまでで、予定の動作は完了しているため、3601の左から入ってきた入力0は使用せずに放棄してもよく、この関係で、タイルA4で入力0を即座に放棄している。この2つのENDの結果、グリッド3601内には、実行可能なタイルがなくなり、イベントハンドラOnADDは終了し、API仲介部2305が発行したグリッドに対するEvalも終了して
イベント反応処理そのものが完了する。
When the popup dialog is closed, D6's END is executed, but as mentioned above, END only discards the input, and the series of data flow from D1 ends here. Also, since the scheduled operation has been completed so far,
以上のようなグリッドをOnSUB、OnMULL、OnDIVとして個別に登録すればアプリケーションは完成するが、それぞれは、3601の中のタイルD2である3603のメソッド名と、タイルF3である3604のオプションの値が違うだけであり、別個に手入力でプログラミングするのとは別法で、OnADDのグリッド定義を元に、その定義をコピーして、上記の違いの部分のみ書き換えて登録することも考えられる。この例示の以降では、この別法の書き換え定義登録のプログラムを例示する。 If you register the above grids individually as OnSUB, OnMULL, and OnDIV, the application will be completed, but each has the method name of 3603, which is tile D2 in 3601, and the option value of 3604, which is tile F3. Only the difference is different, and it is possible to copy the definition based on the grid definition of OnADD and rewrite only the above difference part and register it, which is different from programming manually separately. In the following examples of this example, the program for rewriting definition registration of this alternative method will be illustrated.
図37は、その書き換えを主導するメソッドDialogHandlerクラスのInitメソッドの定義である。このメソッドは、DialogHnadlerを表3401に登録する前に登録メソッドから呼び出される。そのタイミングは、DialogHandlerクラスのコンストラクタからでもよい。Initは、入力0に自分自身を受け取り、OnSUB, OnMUL, OnDIVのメソッドを定義して、これらが追加された自分自身のインスタンスを出力0から出す。このメソッドは5x5のグリッドで表現されているため、列はEまで、行は5までになっている。
Figure 37 shows the definition of the Init method of the DialogHandler class, which is the method that leads the rewriting. This method is called from the registration method before registering DialogHnadler in Table 3401. The timing may be from the constructor of the DialogHandler class. Init takes itself on
メソッド Initでは、図38で示すようなDialogHandlerに定義されるメソッドAddOnが呼び出される。AddOnは、入力0にDialogHandler、入力1にタイルD2を置き換えるメソッド文字列、入力2にF3のオプション文字列とメソッド名のもとになる”OnXXX”のXXXの部分の文字列を取り、対応する”On〜”メソッドを登録した状態のDialonHandlerオブジェクトを出力する。Initグリッド中では、タイルC2でOnSUBをC3でOnMULをC4でOnDIVを登録しており、各タイルの入力はとなっているB列のCONSTでは、”SUB”、”MUL”、”DIV”が、置き換え演算メソッドを供給するD列では、それぞれ”A-B”、”A*B”、”A/B”が供給されている。このアプリケーションの拡張例として、1401のボタンが増えて、剰余のボタンMOD(対応演算”A%B”)や、最大公約数ボタンGCDが追加されてもInitを拡張すればよいことになる。本実施例には、最大公約数を計算する直接のメソッドを持っているクラスはないが、数値クラスにメソッドGCDをユーザー定義し、その値としてユークリッドの互除法を計算するタイルを当てればよい。D列ろで供給する命令は、システム定義のメソッドである必要はない。
The method Init calls the method AddOn defined in DialogHandler as shown in Figure 38. AddOn takes the DialogHandler for
図38は、OnADDグリッドをコピーして編集し、DialogHandlerに追加するメソッドAddOnである。この定義では、入力方向が”LTR”になっており、入力位置は左A4から、入力1のメソッド名は上D1から、入力2の演算命令メソッド文字列は右のG4から入ってくる。入力0はそのオブジェクトから、A3のGETIメソッドによりOnADDに対応するグリッドが取り出されたあと、この辞書クラスのサブクラスであるグリッドオブジェクトの「浅いコピー」を作成するDUPメソッドがタイルA2で実行される。入力1の文字列は、E1-F2の領域のタイル群で、”On~”の文字列が作られ、C2とD4とE5のJCTを介してD6に供給される。また、入力2の演算メソッド文字列は、E5のJCTを介してD5に供給される。
Figure 38 shows a method AddOn that copies and edits the OnADD grid and adds it to the DialogHandler. In this definition, the input direction is "LTR", the input position is from A4 on the left, the method name of
メソッドJCTは、2入力/2出力のクラスTに図41のように定義されているメソッドで、入力0を出力0に、入力1を出力1にそれぞれ渡すものである。このメソッドは、図17のタイルE5のように入出力0と1を設定すると、グリッド上にデータフローの交差を作ることができる。このE5のJCTタイルにより、入力0の”On~”の文字列は、入力1のパスをまたいで、E4からE6に、G4からの演算メソッド名の文字列は、パスをまたいでF5からD5にそれぞれ到達する。
The method JCT is a method defined in class T with 2 inputs and 2 outputs as shown in Fig. 41, and passes
図38のタイルD4のRepLBLは、グリッドクラスに図39のように定義登録されているメソッドであり、自身のグリッドのタイルF3のオプションを入力1から入ってくる”On~”の文字列に置き換えて、その結果のグリッドを出力1から出すものである。同様に、タイルD5のRepOPも、グリッドクラスに図40のように定義登録されているメソッドで、入力0のグリッドのD2のメソッド命令を入力1の文字列に置き換えるものである。この2つメソッドがD4,D5で連続適用されることでD6の入力2には、置き換えが完成したグリッドが入ってくる。
RepLBL of tile D4 in Fig. 38 is a method defined and registered in the grid class as shown in Fig. 39, and replaces the option of tile F3 of its own grid with the character string "On ~" that comes in from
図38のタイルD6のPUTは辞書クラスにシステム定義されているもので、PUTIと同じように、入力0の辞書に値を書き込み、書き込まれた辞書を出力0に出す動作を行うが、PUTIと異なり、キーが外部から入力1として渡され、書き込む値が入力2から供給されるものである。この結果、D6では、DialogHandlerのインスタンスに、”On~”をキーとして書き換え編集済みのグリッドを書き込んで出力をD7に渡しており、D7から、このAddOnメソッドの最終結果として出力される。
The PUT of tile D6 in Fig. 38 is system-defined in the dictionary class, and like PUTI, it writes a value to the dictionary with
図39は、グリッドクラスに定義されているRepLBLメソッドの定義である。このメソッドの入力方向は”LT”となっており、入力0のグリッドが左のA4から、入力1である文字列”On~”の材料となる”SUB”のような文字列は上のD1からこのメソッドに入力される。まず、A4から入ったグリッドからは、A3のGETで、位置F3のタイルが取り出され、A2で複製される。このRepLBLは、複製したタイルオブジェクトのオプションの文字列を入力1で置き換え、入力0から入ってきたオリジナルのグリッドのF3に書き戻そうというものである。このタイルオプションの設定値が入っているキーOPTIONの値をD2のPUTで書き換え、そのタイルをC5のPUTで、F3に上書き書き戻して、D7からRepLBLの結果として出力している。この図39のRepLBLの定義では、A3のGETをGETIに、D2とC5のPUTをPUTIに変更することも可能で、それにより、グラフを簡略にすることも可能である。
Figure 39 shows the definition of the RepLBL method defined in the grid class. The input direction of this method is "LT", and the grid of
図39のタイルD2では、A2で複製したグリッドの属性のうち、キーOPTIONに登録されているオプションの内容を、タイルD1経由でRepLBLの入力1として渡された値に書き換えるPUTメソッドが実行される。
In tile D2 in Fig. 39, among the attributes of the grid duplicated in A2, the PUT method that rewrites the contents of the option registered in the key OPTION to the value passed as
図40は、グリッドクラスに定義されているRepOPメソッドの定義である。動作は、RepLBLと類似しており、左A3から進入しているグリッドから、位置D2のタイルを抽出し、コピーを作ったうえで、タイルの属性辞書中のOPNAMEエントリに書かれているメソッド名の値を入力1の文字列で置き換え、書き換えたタイルを元のグリッドのD2に上書き書き戻すものである。D2タイルの取り出しをタイルA2で、タイルのコピーをA1で、タイルのメソッド名の書き換えをC1で、グリッドへの上書き書き戻しをタイルC3のPUTIで行っている。前述のPUTIとGETIの採用による定義の簡略化については、こちらでは行われており、その結果として定義のサイズが5x5とコンパクトになっている。
Figure 40 shows the definition of the RepOP method defined in the grid class. The operation is similar to RepLBL, the tile at position D2 is extracted from the grid entering from the left A3, a copy is made, and the method name written in the OPNAME entry in the attribute dictionary of the tile. The value of is replaced with the character string of
以上のようなイベント駆動の仕様を取り入れた図式表現のプログラミング言語を提供することにより、機器制御や操作介入してくる人間や外部システムに対する応答処理を直截的に記述することができる。また、オブジェクト指向の言語仕様と、ほとんどのシステム要素を流通データトークンとして取り扱う仕様の導入により、図形式で上記のような制限された編集環境のプログラミングにおいても、プログラムによるプログラムの修正や新規作成のような記述能力の向上が実現される。 By providing a programming language for graphical representation that incorporates the above event-driven specifications, it is possible to directly describe response processing to humans and external systems that intervene in device control and operation. In addition, by introducing an object-oriented language specification and a specification that handles most system elements as distribution data tokens, even in programming of the above-mentioned restricted editing environment in a diagram format, the program can be modified or newly created by the program. Such an improvement in writing ability is realized.
本発明は、タッチパネルのみでのプログラミングを可能にする。これにより、タッチパネルにする物理機構的変更で、表示装置を搭載しているあらゆる機器を元々の外形をほとんど変えずにプログラマブルにすることができる。特に、通常キーボードを持たない、スマートフォンやタブレット端末あるいはスマートスピーカーでのプログラミング手段として利用することができる。これにより、これらの機器にインストールされている複数のアプリケーションを制御し、組み合わせることで新たなアプリケーションの作成を容易にすることができる。さらに、入力装置が前記位置指定と二種類の指示機能のみを有すればよいので、手に障害がある人が容易にプログラミングできるような環境としても使用することができる。 The present invention enables programming with only a touch panel. As a result, by changing the physical mechanism of the touch panel, any device equipped with a display device can be made programmable with almost no change in the original outer shape. In particular, it can be used as a programming means for smartphones, tablets, or smart speakers that normally do not have a keyboard. This makes it possible to easily create new applications by controlling and combining a plurality of applications installed on these devices. Further, since the input device only needs to have the above-mentioned position designation and two types of instruction functions, it can be used as an environment in which a person with a handicap can easily program.
また、プログラミングそのものにパズル的な要素がもともと含まれていることから、スマートフォンやタブレット端末上でのパズルゲームとしての応用も考えられる。 In addition, since programming itself originally contains puzzle-like elements, it can be applied as a puzzle game on smartphones and tablet terminals.
さらに、キーボードが既定の環境で存在しないようなデバイス上でもオブジェクト指向的プログラミングの実践および学習を可能ならしめる効果も期待できる。
In addition, it can be expected to have the effect of enabling the practice and learning of object-oriented programming even on devices where the keyboard does not exist in the default environment.
101 機器全体
102 制御される機器
103 起動停止スイッチ
104 タイマー
105 機器制御インターフェース部
106 ブログラム実行エンジン
107 タッチパネル
201 出力表示領域
202 プログラム実行開始ボタン
203 新規名前付き盤面の作成ボタン
204 名前付き盤面の削除ボタン
205 盤面編集操作ボタン
206 タイル定義外部保存読み込みボタン
207 表示対象盤面選択メニュー件表示領域
208 名前付き盤面表示領域
209 入力条件表示領域
210 出力方向表示領域
211 CONSTタイル
212 PRTタイル
213 ENDタイル
301 CONSTタイル
302 入力0の表示線
303 入力0の識別表示
304 タイルの命令表示
305 タイルのオプション表示
306 出力0の表示線
307 出力0の識別表示
308 SWITCHタイル
309 タイルの命令表示
310 入力1の識別表示
311 出力1の識別表示
401 名前付き盤面MainLineの全体表示
402 CONSTタイル
403 PRTタイル
404 タイルの命令表示
405 ENDタイル
406 タイルの命令表示
407 名前付き盤面の名称表示
408 名前付き盤面の入力条件表示
601 名前付き盤面の名称表示兼選択プルダウンメニュー
602 名前付き盤面の入力条件表示
603 INPUTタイル
604 階乗計算タイルn!
701 名前付き盤面n!の名称表示
702 n!の出力方向表示
703 n!の入力条件表示
704 COPY3タイル
705 PASSタイル
706 CONSTタイル
707 SWITCHタイル
708 GTタイル
709 COPY2タイル
710 n-1タイル
711 n!の再帰呼び出しタイル
712 A*Bタイル
713 PASSタイル
714 MRG2タイル
715 CONSTタイル
801 INPUTタイル命令の名称
802 右方向からの入力0
803 左方向への出力0
804 右方向からの入力0
805 n!タイルの再帰呼び出し
1101 新規名前付き盤面の初期設定ダイアログ
1102 新規名前付き盤面の名称入力項目
1103 新規名前付き盤面のサイズ選択メニュー
1104 新規名前付き盤面の入力条件設定入力項目
1105 新規名前付き盤面の出力方向設定入力項目
1201 選択タイル拡大表示編集ダイアログ
1202 選択されたタイルの拡大表示
1301 タイル命令設定ダイアログ
1302 命令選択メニュー
1303 命令オプション設定入力項目
1401 タイル命令選択メニュー展開表示
1402 タイルをリセットする選択項目
1501 タイル全体の領域
1502 中央付近のゾーン1
2001 プログラム実行エンジン
2002 UI操作処理部
2003 解釈実行部
2004 実行環境保持部
2005 定義済みタイル保持部
2006 作業領域
2201 入出力未設定初期状態
2202 入力0設定後の状態
2203 入力1設定後の状態
2204 出力0設定後の状態
2205 入力1設定キャンセル後の状態
2206 入力1再設定後の状態
2207 出力1設定後の状態
2301 プログラム実行エンジン
2302 タッチパネル107との連携
2303 解釈実行部
2304 実行環境処理部
2306 作業領域
2307 機器インターフェース部105との連携
2401 出力表示領域
2402 プログラム実行開始ボタン
2403 新規メソッドの作成ボタン
2404 新規クラスの作成ボタン
2405 列インデックス表示行
2406 行インデックス表示列
2407 表示対象メソッド選択メニュー兼表示領域
2408 グリッドオブジェクト表示領域
2409 入力方向表示領域
2410 出力方向表示領域
2411 CONSTタイル
2412 PRTタイル
2413 ENDタイル
2414 表示対象クラス選択メニュー兼表示領域
2415 実行開始条件選択メニュー兼表示領域
2501 CONSTタイル
2502 入力0の表示線
2503 入力0の識別表示
2504 タイルの命令表示
2505 タイルのオプション表示
2506 出力0の表示線
2507 出力0の識別表示
2508 SWITCHタイル
2509 タイルの命令表示
2510 入力1の識別表示
2511 出力1の識別表示
2601 AppクラスのMainLineメソッド例の全体表示
2602 CONSTタイル
2603 PRTタイル
2604 タイルの命令表示
2605 ENDタイル
2606 タイルの命令表示
2607 メソッドの名称表示
2608 メソッドの入力方向表示
2609 クラスの名称表示
2610 実行開始条件の表示
2704 実行開始初期投入グリッド
2901 実行待ち待ち合わせ子の待ち合わせキューエントリ
2902 出力待ちトークン一時置き場エントリ
2903 到着済みトークン一時待機エントリ
3501 実施例アプリケーションの入力ダイアログ
3502 3501のボタン押下時のイベントハンドラに渡されるデータトークン
3603 イベントハンドラが表示するポップアップメッセージダイアログ
3504 ポップアップメッセージ
3505 ADD(加算指示)ボタン
3601 3505ボタン押下時のイベントハンドラ例のグリッド表示
3602 グリッド3601の入力方向表示
3603 編集対象となる演算処理タイル
3604 編集対象となるメッセージ生成タイル
101 Whole device
102 Controlled equipment
103 Start / stop switch
104 timer
105 Equipment control interface
106 Program Execution Engine
107 touch panel
201 Output display area
202 Program execution start button
203 Create new named board button
204 Named board delete button
205 Board edit operation button
206 Tile definition External save load button
207 Display target board selection menu display area
208 Named board display area
209 Input condition display area
210 Output direction display area
211 CONST tile
212 PRT tiles
213 END tile
301 CONST tile
302
303 Identification display of
304 Tile instruction display
305 Tile option display
306
307 Identification display of
308 SWITCH tile
309 Tile command display
310 Identification of
311
401 Named board MainLine full view
402 CONST tile
403 PRT tile
404 tile instruction display
405 END tile
406 Tile command display
407 Name display of named board
408 Named board input condition display
601 Name display and selection pull-down menu of the named board
602 Named board input condition display
603 INPUT tile
604 Factorial calculation tile n!
701 Name display of named board n!
702 n! Output direction display
703 n! Input condition display
704 COPY3 tile
705 PASS tile
706 CONST tile
707 SWITCH tile
708 GT tile
709 COPY2 tile
710 n-1 tile
711 n! Recursive call tile
712 A * B tile
713 PASS tile
714 MRG2 tile
715 CONST tile
801 INPUT tile instruction name
802 Input from the
803
804 Input from the
805 n! Recursive call to tile
1101 Initial setting dialog for newly named board
1102 Newly named board name input item
1103 Newly named board size selection menu
1104 Newly named board input condition setting input item
1105 Newly named board output direction setting input item
1201 Select tile enlarged display edit dialog
1202 Enlarged view of selected tiles
1301 Tile instruction setting dialog
1302 Instruction selection menu
1303 Command option setting input item
1401 Tile command selection menu expansion display
1402 Choices to reset tiles
1501 Area of the entire tile
1502
2001 Program Execution Engine
2002 UI operation processing department
2003 Interpretation Execution Department
2004 Execution environment maintenance unit
2005 Predefined tile holder
2006 work area
2201 I / O not set Initial state
2202 State after
2203 State after
2204 State after setting
2205
2206
2207 State after setting
2301 Program execution engine
2302 Cooperation with
2303 Interpretation Execution Department
2304 Execution environment processing unit
2306 work area
2307 Cooperation with device interface section 105
2401 Output display area
2402 Program execution start button
2403 Create new method button
2404 Create new class button
2405 Column index display row
2406 Row Index Display Column
2407 Display target method selection menu and display area
2408 Grid object display area
2409 Input direction display area
2410 Output direction display area
2411 CONST tile
2412 PRT tile
2413 END tile
2414 Display target class selection menu and display area
2415 Execution start condition selection menu and display area
2501 CONST tile
2502
2503 Identification display of
2504 Tile command display
2505 Tile option display
2506
2507 Identification display of
2508 SWITCH tile
2509 Tile instruction display
2510 Identification of
2511
2601 Full view of MainLine method example of App class
2602 CONST tile
2603 PRT tile
2604 Tile command display
2605 END tile
2606 Tile command display
2607 Method name display
2608 Method input direction display
2609 Class name display
2610 Display of execution start condition
2704 Start of execution Initial input grid
2901 Wait queue entry for execution waiter
2902 Waiting for output token temporary storage entry
2903 Arrived token temporary wait entry
3501 Example Application Input Dialog
3502 The data token passed to the event handler when the 3501 button is pressed
3603 Pop-up message dialog displayed by the event handler
3504 pop-up message
3505 ADD (addition instruction) button
3601 3505 Grid display of event handler example when button is pressed
3602
3603 Arithmetic tile to be edited
3604 Message generation tile to be edited
Claims (11)
All the distributed data token objects are provided with an execution evaluation procedure as a method, which takes an execution instruction identifier and an input token group included in the tile format representation as parameters and outputs an output token group which is a processing result as a result. In the tile format representation, for one token extracted by a predetermined rule from the arrived tokens, the method corresponding to the execution instruction identifier is searched, the feasibility is checked, and the method is executed. The data processing device according to any one of claims 1 to 10, which is characterized.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020041450A JP7338096B2 (en) | 2020-03-11 | 2020-03-11 | Data processing device and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2020041450A JP7338096B2 (en) | 2020-03-11 | 2020-03-11 | Data processing device and data processing method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2021144369A true JP2021144369A (en) | 2021-09-24 |
JP7338096B2 JP7338096B2 (en) | 2023-09-05 |
Family
ID=77766663
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020041450A Active JP7338096B2 (en) | 2020-03-11 | 2020-03-11 | Data processing device and data processing method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP7338096B2 (en) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1185489A (en) * | 1997-09-09 | 1999-03-30 | Casio Comput Co Ltd | Programming support device and storage medium |
JP2006344076A (en) * | 2005-06-09 | 2006-12-21 | Nec Electronics Corp | Program generating device, program generating method and program |
JP2008146277A (en) * | 2006-12-08 | 2008-06-26 | Fuji Xerox Co Ltd | File information display device and file information display program |
-
2020
- 2020-03-11 JP JP2020041450A patent/JP7338096B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH1185489A (en) * | 1997-09-09 | 1999-03-30 | Casio Comput Co Ltd | Programming support device and storage medium |
JP2006344076A (en) * | 2005-06-09 | 2006-12-21 | Nec Electronics Corp | Program generating device, program generating method and program |
JP2008146277A (en) * | 2006-12-08 | 2008-06-26 | Fuji Xerox Co Ltd | File information display device and file information display program |
Also Published As
Publication number | Publication date |
---|---|
JP7338096B2 (en) | 2023-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8429605B2 (en) | Finite state machine architecture for software development | |
US5297250A (en) | Method of generating interfaces for use applications that are displayable on the screen of a data processing system, and apparatus for performing the method | |
CN106062711B (en) | Method, system, and computer storage medium for compound controls | |
US6854111B1 (en) | Library manager for automated programming of industrial controls | |
US5119479A (en) | User interface system in which operation associated with input device may be selectively switched | |
US20030090473A1 (en) | Multiple screen automatic programming interface | |
JPH03182922A (en) | Hierarchical editing command menu display method | |
JP4724261B2 (en) | Image construction apparatus and program | |
JPS62257564A (en) | Method and apparatus for controlling echo for application processing | |
CN107766045A (en) | The devices, systems, and methods of visualization procedure are provided for NI Vision Builder for Automated Inspection | |
JPWO2013038556A1 (en) | Sequence program creation device | |
US8990766B2 (en) | Construction of object-oriented programming (OOP) patterns by behavior delegation | |
US6070006A (en) | Object oriented software development tool for creation of new class(es) | |
JP2021144369A (en) | Data processing apparatus and data processing method | |
US5777597A (en) | Interaction support system and method | |
JP4381793B2 (en) | PROGRAMMABLE DISPLAY, DISPLAY CONTROL PROGRAM, RECORDING MEDIUM RECORDING THE PROGRAM, SCREEN CREATION DEVICE, SCREEN CREATION PROGRAM, AND RECORDING MEDIUM RECORDING THE PROGRAM | |
Noble et al. | Functional languages and graphical user interfaces: a review and a case study | |
JP5967200B2 (en) | Rule management device, rule management method and program | |
Manca et al. | Complex water resources system optimization tool aided by graphical interface | |
JP2001318796A (en) | Program execution control method using internal and external event driven system, recording medium and program preparation support system | |
JPH0119170B2 (en) | ||
JP2831721B2 (en) | Arithmetic unit assignment device | |
JP2020064353A (en) | Data processing device | |
JPH01229321A (en) | User interface generation tool | |
JP3065707B2 (en) | Design support system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20211004 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20220825 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20220913 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20221114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20230221 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20230328 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20230704 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20230711 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 7338096 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |