| 家庭教師 | |
|---|---|
| パラダイム | 命令形(手続き型) |
| デザイン: | ポール・テンツァル & リチャード・ブロム[1] |
| 開発者 | ポール・テンツァーとイリノイ大学アーバナ・シャンペーン校 |
| 初登場 | 1969 (1969年) |
| タイピングの規律 | なし |
| 主要な実装 | |
| チューター、マイクロチューター | |
| 影響を受けた | |
| TenCORE、USE(リージェンシーシステムズ) | |
TUTOR は、 PLATO Author Languageとも呼ばれ、1965年頃からイリノイ大学アーバナシャンペーン校のPLATO システムで使用するために開発されたプログラミング言語です。 TUTOR は当初、コンピュータ支援教育(CAI) およびコンピュータ管理教育(CMI) (「レッスン」と呼ばれるコンピュータ プログラム) で使用するために Paul Tenczar によって設計され、その目的のための多くの機能を備えています。 たとえば、TUTOR には、強力な解答解析および解答判定コマンド、グラフィックス、および教師による学生の記録と統計の処理を簡素化する機能があります。 TUTOR の柔軟性と PLATO の計算能力 (1972 年当時はスーパーコンピュータと考えられていたコンピュータで実行) の組み合わせにより、フライト シミュレータ、戦争ゲーム、ダンジョン スタイルのマルチプレイヤー ロール プレイング ゲーム、カード ゲーム、単語ゲーム、Bugs and Drugs ( BND ) などの医療レッスン ゲームなどのゲームの作成にも適しています。 TUTORは現在もCyber1 PLATOシステム[2]のプログラミング言語として使われており、1980年代のPLATOのソースコードのほとんどが実行され、2020年6月時点で約5000人のユーザーがいます。
起源と発展
TUTORはもともと、授業設計のための専用オーサリング言語として開発され、汎用プログラミング言語への進化は予期せぬものでした。TUTORという名称がPLATOシステムのオーサリング言語に初めて用いられたのは、Plato IIIの後期でした。この名称で最初に文書化されたのは、Avner, Richard Allen; Tenczar, Paul (1969年1月) の『The TUTOR Manual』であると思われます。CERL Report X-4
論文「ロシア語翻訳のコンピュータによる指導」[3]は、PLATO IVが稼働する直前のTUTORのスナップショットを示しています。言語の中核要素は存在していましたが、コマンドは大文字で与えられ、汎用的なメカニズムではなく、WRUSS「ロシア語文字セットを使用して書き込む」などの特別なコマンド名によって代替文字セットがサポートされていました。
1970年代を通して、TUTORの開発者たちは、TUTORプログラムのコーパス全体が同一のコンピュータシステム上にオンラインで保存されているという利点を活用しました。言語変更の必要性を感じるたびに、TUTORコードのコーパスに対して変換ソフトウェアを実行し、既存のコード全体を変更内容に適合させるように修正しました。[4] その結果、TUTORの新しいバージョンが開発されると、PLATOバージョンとの互換性を維持することが非常に困難になりました。[5]
コントロール・データ・コーポレーション(CDC)は、1981年までにPLATOのドキュメントからTUTORという名称をほぼ削除しました。彼らは言語自体をPLATO Author Languageと呼んでいました。しかし、 「TUTORファイル」あるいは「TUTORレッスンファイル」という語句は、PLATO Author Languageで書かれたテキストを保存するために用いられるファイルの種類名として、依然として残っていました。[6]
TUTORレッスンの構造
TUTORレッスンは、一連のユニットで構成されます。各ユニットは情報の提示から始まり、1つ以上の質問に正しく答えることで次のユニットへと進みます。COBOL段落と同様に、制御は前のユニットからTUTORユニットに入り、次のユニットへと出ることができますが、ユニットはコマンドまたはコマンドを使用してサブルーチンとして呼び出すこともできます。
dojoin
単位の例は次の通りです: [7]
単元数学
205歳
これらの問題に答えてください
3 + 3 =
4 × 3 =
矢印413
答え6
矢印613
答え12
この例からすぐにいくつかのことが明らかになるはずです。
- まず、TUTORは固定フォーマット言語です。各行はコマンド名で始まり、8文字の固定フィールドに収まる必要があります。そのコマンドの引数(タグ)は9文字目から始まります。9列目に移動するにはタブキーを使用しますが、PLATOにはタブ文字がないため、スペースが生成されます。
- 上記のコマンドのように
write、タグが複数行で構成される場合もあります。継続行は空白か、先頭にタブが付きます。 - 画面座標は単一の数字として表されるため、205 は 2 行目の 5 列目、413 は 4 行目の 13 列目を表します。
このユニットには制御構造が暗黙的に備わっていることは明らかではないかもしれません。コマンドは判定ブロックarrowへの入り口を示します。 この制御構造はTUTORのユニークな機能の一つです。
ユニークな機能
TUTORには数多くのユニークな機能が含まれていました。以下のリストはTUTORマニュアルの代わりとなるものではなく、この言語の最も興味深く、革新的で、時に混乱を招く機能に焦点を当てたものです。
回答判定
TUTOR における判定ブロックarrowは、コマンドで始まり、次のarrow、endarrowまたはunitコマンドで終わる制御構造です。このarrowコマンドは入力を促し、指定された画面座標に特殊な矢印文字(「▷」に似た文字)がプロンプトとして表示されます。実際、判定ブロックは、生徒が正解して先に進むことができるまで、質問に複数回回答を試みることができるバックトラッキング制御構造と考えることができます。
パターンマッチングの判断
各判定ブロックは、パターンマッチングコマンドのシーケンスで構成され、各コマンドは、パターンが一致した場合に実行される(空の場合もある)コマンドブロックを導入します。最も一般的な2つのパターンマッチングコマンドは と ですanswer。これらは、 が一致した場合に生徒の回答を正解と判定するのに対し、 は不正解と判定するという
wrong点を除けば、パターンマッチングのセマンティクスは同じです。answerwrong
answerコマンドとコマンドのタグフィールドは、wrongオプション、必須、代替の単語のリストで構成されていました。次の例を考えてみましょう: [8]
答え <それは、図です、
ポリゴン>
(右、rt)(三角形、三角形)
これは「直角三角形です」や「三角形です」、あるいは単に「直角三角形」といった答えと一致します。「sort of」という単語は無視対象としてリストされていないため、「sort of triangular」には一致しません。また、「triangle, right?」も順序が間違っているため一致しません。
パターンマッチングサブシステムはスペルミスを認識したため、「triangel」または「triangl」という単語が例のパターンに一致しました。レッスン作成者はこのspecsコマンドを使用して、システムがスペルミスをどの程度厳密に検出するかを設定できます。
様々なTUTOR実装で使用されるパターンマッチングアルゴリズムは細部において異なっていたが、典型的には、入力テキストの各単語とパターンの各単語がビットベクトルに変換された。生徒が入力した単語がパターンの単語と一致するかどうかを確認するために、 2つのビットベクトル間のハミング距離が単語間の相違度の尺度として使用された。ビットベクトルは通常60ビットまたは64ビットの長さで、文字の存在、文字ペアの存在、および最初の文字のフィールドを持つ。結果として、2つのビットベクトルの排他的論理和における1のビットの数は、対応する単語間の音声的相違の程度を近似した。[9]
制御構造の判断
初期のTUTOR判定ブロックの制御構造はどれも分かりにくいものでした。しかし、現代の言葉で言えば、判定ブロックは、生徒の入力が正しいと判断されたときに終了する反復的な制御構造と説明できます。この制御構造の本体は、一連のケースで構成され、各ケースはまたは などのパターンマッチングコマンドによって開始されます。前のサイクルで判定ループ本体によって生成されたすべての出力は、次のサイクルの前に画面から消去されます。
answerwrong
次の例を考えてみましょう: [10]
間違った<it, is,a>正方形
1501年
正方形には4つあると書く
側面。
生徒が「square」または「a square」と入力した場合、その答えは誤りと判断され、画面の15行目1列目から「A square has four edges.」というテキストが出力されます。この出力は、生徒が新しい答えを入力し始めるまで画面に表示され、入力が終わると消去され、新しい答えに対する応答を計算できるようになります。画面表示を前の状態に戻すメカニズムは実装によって異なります。初期の実装では、端末を消去モードに切り替え、一致したケース全体を再実行することで動作していました。後期の実装では、判定中に生成された出力をバッファリングすることで、この出力を消去できるようにしました。
コマンドjoinはサブルーチン呼び出しの独特な形式であった。これは、結合ユニットの本体を結合コマンド自体の代わりにテキスト置換することと同等であると定義されていた。[11] そのため、結合ユニットには判定ブロックの一部が含まれる可能性がある。したがって、判定ブロックは概念的には一連のケースを囲む反復子であるが、このブロックは任意にサブルーチンに分割することができる。(代替のサブルーチン呼び出しであるコマンドは、他のプログラミング言語におけるサブルーチン呼び出しに関連する通常のセマンティクスに準拠していた。)
do
グラフィックおよび表示コマンド
PLATO IV学生端末[12]は、 512×512ピクセルの プラズマディスプレイパネルを搭載し、点描画、線描画、テキスト表示のためのハードウェアサポートを備えていた。PLATO IV端末の各ピクセルはオレンジ色または黒色で表示されていた。CDC PLATO V端末は、プラズマパネルをエミュレートするために白黒モノクロCRTを使用していた。内蔵文字セットは、8×16ピクセルの63文字×4セットで、半分は固定文字、残りの半分はプログラム可能であった。Tutor言語は、この端末を完全にサポートしていた。
2つの座標系があった[13]
- 大まかな座標は、テキストの行と列に基づいて指定されます。例えば、大まかな座標1501は15行目の1文字目を指し、画面上の左上の文字は101の位置、右下の文字は3264の位置にあります。
- 精密座標は、画面の左下隅を基準としたX座標とY座標で指定されます。精密座標0.511は画面の左上隅を指定し、0.496は粗座標101に相当します。これは、文字の高さが16ピクセルであることと、文字が左下隅を基準として描画されることを考慮したためです。
描画コマンド
次の例はTutorの描画コマンドの一部を示しています。[14]
描画 1812;1852;スキップ;1844;1544
サークル 16,344,288
引き分け 1837;1537;1535;1633;1833
コマンド内の連続する座標をセミコロンで区切っていることに注意してくださいdraw。これにより、コンマ区切りの細かい座標を明示的に使用できます。通常、drawコマンドは連続する点を線分で結びますが、skipタグを挿入することで、drawコマンドは概念的にペンを持ち上げるようになります。
コマンドのタグは、circle中心の半径と精密座標を指定します。追加のタグで、部分円の開始角度と終了角度を指定することもできます。
描画コマンドを手作業で作成するのは難しいため、この作業を自動化するために、1974年までにPLATOシステムに画像エディタが組み込まれました。[15] これは、定数座標を持つ描画コマンドしか処理できませんでした。
テキストレンダリングコマンド
次の例はTutorのテキストレンダリングツールの一部を示しています。[16]
ユニットタイトル
サイズ 9.5 $$ テキスト 9.5 倍の通常サイズ
45度回転 $$ テキストを45度回転
2519年
ラテン語を書く
サイズ 0 $$ 通常の書き込みに戻る
回転0
3125時
動詞のレッスンを書く
サイズ 0、回転 0 でレンダリングされたテキストは、PLATO 端末の組み込み文字レンダリング ハードウェアを使用しましたが、サイズと回転が 0 以外の場合のレンダリングは線分で行われたため、端末への通信リンクの速度により大幅に遅くなりました。
制御構造
TUTOR の独自の解答判定機構を除けば、当初の制御構造は非常に乏しかった。1970年代半ば、この欠点は、オプションのセクションとセクションを含むif,endifブロックの導入によって解決された。これらの制御構造のセマンティクスは定型的なものであったが、構文は Tutor 言語の必須インデントを継承しており、 Pythonの先駆けとなった。また、インデントと継続行を区別するために、独自の非空白インデント文字が追加されていた。
elseifelse
これは次の例で説明される:[17]
n8<4の場合
最初のブランチを書き込む
. 計算n9⇐34
そうでない場合 n8=4
. 2番目のブランチを書く
. 何かを行う
それ以外
. デフォルトブランチを書き込む
. n8>6の場合
. . 特別なブランチを書く
. 終了
終了
(ステートメント内の代入calc矢印は、一部のブラウザでは正しくレンダリングされません。<= に似ていますが、1 つの文字として表示されます。PLATO IV キーボードには専用のキーがありました。)
loop,endloopブロックにも同じ構文が使用されており、従来のプログラミング言語のwhileループに相当する意味を持つ。これは次の例に示されている[18]。
ループ n8<10
ループ内で書き込み
. サブ1 n8
再ループ n8≥5
ループ内でまだ書き込みます
. 何かを行う
出力ループ n8<3
ループ内でまだ書き込みます
エンドループ
ループの外側に書き込む
reloopおよびコマンドは、 Cベースの言語のおよび文outloopと多少類似している点に注意してください。ただし、これらのコマンドは変更するループのインデントレベルに配置する必要があり、指定された制御の移行がいつ行われるかを示す条件タグを持つ点が異なります。これにより、この構文は他の言語よりも強力になります。なぜなら、内側のループの任意の行から、1つの文で複数の外側のループを終了または再ループできるからです。
continuebreak
式の構文
TUTORの式構文はFORTRANの構文を彷彿とさせるものではなく、当時の貧弱な文字セットの設計にも制限されていませんでした。例えば、PLATO IVの文字セットには上付き文字と下付き文字の制御文字が含まれていましたが、TUTORはこれを指数計算に使用していました。このコマンド[19]を考えてみましょう。
円 (41 2 +72.6 2 ) 1/2 ,100,200
この文字セットには、乗算と除算を表す従来の記号である と も含まれていました×が÷、FORTRAN で確立された慣例から大きく逸脱し、暗黙的な乗算が許可されていたため、式 と(4+7)(3+6)はそれぞれ 99 と 15.9 という値で有効でした (前掲書)。この機能は不可欠と考えられていました。生徒が質問に対する数値の答えを入力する際、演算子と変数、そして標準的な代数記法を使用でき、プログラムは TUTOR の "compute" コマンドを使用して式をコンパイル・実行し、正しい答えと数値的に等しいか (または浮動小数点の丸め誤差の範囲内か) を確認します。
3.4+5(23-3)/2
この言語には、ギリシャ文字の円周率(π)を名前に持つ定数があらかじめ定義されており、適切な値を持つため、計算に使用できます。そのため、この式は、組み込みのπ定数、暗黙の乗算、そして上付き文字で示されるべき乗算を用いて円の面積を計算するのに使用できます。
πr2
TUTORでは、浮動小数点の比較は、とがほぼ等しいx=y場合に真であると定義されていました。 [20]これは数学に詳しくない教材開発者にとっては作業を簡素化しましたが、数値的に高度なコードを開発する開発者にとっては、とが同時に真になる可能性があるため、頭痛の種になることもありました。[ 21]xyx<yx≥y
メモリ管理
オーサリング言語としてのTUTORは、最小限のメモリリソースと、それらを操作するための最も簡素なツールのみで開発が始まりました。各ユーザープロセスは150個の変数からなるプライベートデータセグメントを持ち、共有ブロックを接続できるため、共有メモリを介してユーザー間通信が可能でした。
PLATO IVシステムでは、CDC 6600ファミリーのコンピュータに合わせて、ワードは60ビットでした。その後のいくつかの実装では、これが64ビットに変更されました。[22]
基本的なメモリリソース
各プロセスのプライベートメモリ領域はそれぞれ150ワードで構成され、学生変数と呼ばれていました。これらの変数の値は永続的で、セッションごとに個々のユーザーに追従していました。これらの変数は、整数値を保持する場合はn1「through」 、浮動小数点値を保持する場合は「 through」としてアドレス指定されていました。[23]n150v1v150
TUTORレッスンは、コマンドを使用して、最大1500ワードの共有メモリ領域を1つ割り当てることができましたcommon。各レッスンには、そのレッスンのすべてのユーザーが共有する変数を含む、名前のない一時的な共通ブロックを持つことができました。このようなブロックは、レッスンが使用されると作成され、レッスンが非アクティブになると解放されました。一方、名前付き共通ブロックは、レッスンのブロック(ディスクファイル)に関連付けられていました。共有メモリは、整数の場合はnc1through 、浮動小数点数の場合はthrough としてアドレス指定されました。 [24]nc1500vc1vc1500
150個の生徒変数では不十分な場合、レッスンではこの
storageコマンドを使用して、最大1000語のプライベートメモリセグメントを追加作成できます。このセグメントはスワップ領域にのみ存在しますが、生徒変数または共通変数にマッピングできます。例えば[25]
共通1000
ストレージ75
ストロード vc1001,1,75
この例では、nc1to をnc1000共有の名前のない共通ブロックとして定義し、nc1001to をnc1075プライベート ストレージとして定義します。
シンボル名の定義
TutorコマンドはC言語のプリプロセッサdefine指令に非常によく似ていました。これはニーモニック名を変数に関連付ける唯一の方法でした。メモリを静的に割り当て、変数に名前を付けるのはプログラマの責任でした。次の例を考えてみましょう。[26] #define
私の名前を定義する
1番目=v1、2番目=v2
結果=v3
これにより、3つの浮動小数点変数を定義する定義セットが作成されますmynames。ユーザーには、「レッスン内では、文自体を除いて、v3またはv26を記述しないでくださいdefine。すべての定義はレッスンの冒頭に配置し、どの変数を使用しているかすぐに参照できるようにしてください。」とアドバイスがありました。[27]
関数はマクロ置換セマンティクスを使って定義することができ、次の図のようになる: [28]
cotan(a)=cos(a)/sin(a)と定義する
C言語とは異なり、TUTORの元々のスコープ規則は純粋な「使用前に定義する」というものであり、ローカル定義に関する規定はありませんでした。したがって、上記の仮パラメータは、a事前定義があってはなりません。
TUTORの開発後期に複数の名前付き定義セットが導入されたことで、プログラマーはどの定義セットが現在有効であるかを明示的に制御できるようになりました。例えば、define purge, setname名前付きセット内のすべての定義を破棄します。[29]
配列、パック配列、テキスト操作
テキスト操作のためのオリジナルのTUTORツールは、特定のテキスト操作のためのコマンドに基づいていました。例えば、packパックされた文字列をメモリ内の連続した変数に格納する、searchある文字列を別の文字列内から検索する、move文字列をメモリからメモリへ移動するなどです。[30] 1975年までに、整数配列やパック配列のためのより汎用的なツールが追加されました。例えば、次のようになります。 [31]
セグメントの定義、名前=開始変数、バイトあたりのビット数、s
配列、名前(サイズ)=開始変数
配列、名前(行数、列数)=開始変数
キーワード で定義されるセグメント配列は、 Pascalsegmentのパック配列に相当します。バイトサイズと、配列要素を符号付きまたは符号なしとして扱うかどうかは、完全にユーザーによって制御されていました。バイトサイズをマシンのバイトサイズ(表示コードを使用する実装では6ビット、後期のASCIIおよび拡張ASCII実装では8ビット)に設定することで、任意のテキスト操作を行うことができました。セグメント配列には配列の次元に関する指定がないことに注意してください。
パラメータの受け渡し
PLATO IV時代の初期に、TUTORに一般的なパラメータ受け渡し機構が追加された。例えば:[32]
半径=v1、x=v2、y=v3と定義する
ユニットは異なります
半円(100,150,300)
半円を描く(50)
*
単位半円(半径, x,y)
円の半径, x,y,0,180
x半径、y;x+半径、yを描く
コマンドの引数リストに列挙されている仮パラメータunitは、静的に割り当てられたグローバル変数の定義名に過ぎないことに注意してください。パラメータの受け渡しは、制御が宛先ユニットに移る際に代入が行われるのと同等であると定義されており、上記の2番目のコマンドのように実パラメータdoが省略された場合、対応する仮パラメータの以前の値は変更されません。
ローカル変数
ローカル変数は1980年頃にTUTORに追加されました。ローカル変数を使用したいレッスン作成者は、lvarsコマンドを使用して、ローカル変数用に使用されるバッファのサイズ(最大128ワード)を宣言する必要がありました。[33] そうすれば、ローカル変数を使用するユニットは次のように始めることができます。[34]
ユニットソメウ
名前1、名前2、名前3(サイズ)
NAME4=定数
フローティング:NAME5,NAME6,NAME7(サイズ)
整数、NUM BITS:NAME8、NAME9
整数、NUM BITS、符号付き:NAME10
整数:NAME11
上記のコマンドの継続行は、ローカルスコープunitを持つ暗黙的なコマンドの行とみなされます。このようなローカルスコープでは、学生変数を用いた従来の定義(例えば )を使用できますが、ここで示した形式はすべて、コマンドによって割り当てられたメモリブロック内の場所に名前を自動的にバインドします。利用可能なTUTORドキュメントでは、ローカル変数の割り当て方法については説明されていません。
definen150definelvars
その他の実装
TUTOR関連言語には、オリジナルのTUTOR言語に類似するものの、それぞれに相違点を持つ、相当数の言語ファミリーが存在しています。特に、TUTORは特定のCDCメインフレームハードウェア上で動作するシステム(PLATOコンピュータベース教育システム)のコンポーネントでした。効率性を高めるため、TUTORにはハードウェア固有の要素がいくつか含まれていました(例えば、60ビットの配列や10個の6ビット文字として使用できる60ビットワードの変数など)。また、TUTORはWindows向けのグラフィカルユーザーインターフェース(GUI)が登場する前に設計されました。
microTutor言語は、UIUCのPLATOプロジェクトで開発され、メインフレームで実行されるTUTORコードに接続することで、マイクロコンピュータを搭載した端末で授業の一部を実行できるようにしました。microTutor方言は、UIUCで開発され、日本のTDKにライセンス供与されたClusterシステムのプログラミング言語でもありました。Clusterシステムは、ストレージとコンパイル機能を備えたミニコンピュータに接続された少数の端末で構成されていました。Tencore Language Authoring Systemは、TUTORの派生製品で、Paul TenczarがPC用に開発し、Computer Teaching Corporationが販売しています。cTは、カーネギーメロン大学で開発されたTUTORとmicroTutorの派生製品で、Windows、Mac、Unix/LinuxシステムのウィンドウGUI環境でプログラムを変更せずに実行できるようにしました。
Cyber1が開発したPterm端末エミュレータは、バージョン6以降でmicroTutor言語をサポートしています。[35] [36]
引用
- ^ シャーウッド 1974年、4ページ。
- ^ 「Cyber1 PLATOコンピュータシステム」 。 2020年6月6日閲覧。
- ^ カーティンら 1972年。
- ^ シャーウッド 2000.
- ^ Jones 1976、セクション7.2。
- ^ 例えば、PLATOユーザーズガイド1981、p.4-56を参照。
- ^ TUTORユーザーメモ1973、5ページより
- ^ TUTORユーザーメモ1973、演習4-1より
- ^ テンツァー&ゴールデン 1972年。
- ^ TUTORユーザーメモ1973、演習4-1より
- ^ TUTORユーザーメモ1973、21ページ。
- ^ スティフル 1974年。
- ^ シャーウッド 1974、p. II-1。
- ^ シャーウッド 1974、p. II-11より
- ^ シャーウッド 1974、p. II-9。
- ^ シャーウッド 1974、p. II-3より
- ^ Avner 1981, p. S5より
- ^ Avner 1981, p. S6より
- ^ シャーウッド 1974、p. IV-1より
- ^ アヴナー 1975、p. C5。
- ^ シャーウッド 1974、p. IX-3。
- ^ ジョーンズ 1976.
- ^ シャーウッド 1974、pp.IV-2、IX-17。
- ^ シャーウッド 1974、pp. X-1 から X-3 および X-6。
- ^ シャーウッド 1974、p. X-11より
- ^ TUTORユーザーメモ1973、17ページより
- ^ 下線は原文より、Sherwood 1974、p. IV-5
- ^ シャーウッド 1974、p. IX-2より
- ^ アヴナー 1975、15ページ。
- ^ シャーウッド 1974、pp. VII-52からVII-55。
- ^ Avner 1975、14ページより
- ^ シャーウッド 1974、p. IV-10より
- ^ アヴナー 1981、p. C3。
- ^ Avner 1981, p. C2より
- ^ シンダー 2018.
- ^ シンダーnd
参考文献
- PLATO ユーザーズガイド(PDF)、Control Data Corporation、1981 年 4 月
- TUTOR ユーザのメモ: TUTOR の紹介(PDF)、イリノイ州アーバナ: イリノイ大学コンピュータベース教育研究室、1973 年 3 月、ERIC ED078665
- Avner, Elaine (1975 年 11 月)、「PLATO ユーザーズメモ、第 1 号: TUTOR コマンドとシステム変数の概要(第 3 版)」、イリノイ州アーバナ: PLATO 出版 / イリノイ大学コンピュータベース教育研究室、ERIC ED124130
- Avner, Elaine (1981年8月)、「TUTORコマンドとシステム変数の概要(PDF) (第10版)」、イリノイ州アーバナ:イリノイ大学コンピュータベース教育研究室、ERIC ED208879
- カーティン、コンスタンス;クレイトン、ダグラス;フィンチ、シェリル;ムーア、デイヴィッド;ウッドラフ、ロイス (1972). 「コンピュータによるロシア語翻訳の指導」.現代言語学ジャーナル.56 (6): 354–60 . doi :10.2307/324788. ISSN 1540-4781. JSTOR 324788.
- ジョーンズ、ダグラス W. (1976)、小型コンピュータシステムにおける TUTOR 言語のランタイムサポート
- シャーウッド、ブルース・アーン(1974年6月)、The TUTOR language (PDF)、イリノイ州アーバナ:PLATO Publications / Computer-Based Education Research Lab、イリノイ大学、ERIC ED124149
- Sherwood, Bruce Arne (2000年4月9日)、完全な後方互換性を備えた前進 (メール)、Python IDLE-devメーリングリスト
- Sinder, Dale (nd). 「Pterm v6 リリースノート」. cyber1 . 2024年5月4日閲覧。
- Sinder, Dale (2018年3月26日). 「MicroTUTOR with Pterm: 簡単なユーザーガイド」(PDF) . cyber1 . 2024年5月4日閲覧.
- スティフル、ジャック(1974年11月)「プラトンIV学生端末」(PDF)
- テンツァー、ポール、ゴールデン(1972)、スペリング、単語、概念認識、コンピュータベース教育研究所、イリノイ大学アーバナ校、報告書X-35
さらに読む
- Denenberg, Stewart A. (1978年4月). 「PLATOシステムの個人的評価」. ACM SIGCUE Outlook . 12 (2): 3–10 .
- シャーウッド、ブルース (1977). 「TUTOR言語」. コントロール・データ・エデュケーション・カンパニー.
- アンダーセン、デイビッド、シャーウッド、ブルース、シャーウッド、ジュディス、ホイットリー、ケビン。「cTプログラミング言語(TUTOR由来)」。カーネギーメロン大学教育用コンピューティング設計センター。(2002 年現在サポートされていません)。