РЕПЕТИТОР

Язык программирования
РЕПЕТИТОР
Парадигмаимперативный ( процедурный )
РазработаноПол Тензар и Ричард Бломм [1]
РазработчикПол Тенцар и Иллинойсский университет в Урбане-Шампейне
Впервые появился1969 ( 1969 )
Дисциплина набора текстаникто
Основные внедрения
РЕПЕТИТОР, Микро-РЕПЕТИТОР
Под влиянием
TenCORE, USE ( системы Regency )

TUTOR , также известный как PLATO Author Language , — это язык программирования , разработанный для использования в системе PLATO в Иллинойсском университете в Урбане-Шампейне примерно с 1965 года. TUTOR был изначально разработан Полом Тенцаром для использования в обучении с помощью компьютера (CAI) и обучении под управлением компьютера (CMI) (в компьютерных программах, называемых «уроками») и имеет множество функций для этой цели. Например, TUTOR имеет мощные команды для анализа и оценки ответов, графику и функции для упрощения обработки записей студентов и статистики инструкторами. Гибкость TUTOR в сочетании с вычислительной мощностью PLATO (работавшего на том, что считалось суперкомпьютером в 1972 году) также сделала его пригодным для создания игр — включая авиасимуляторы, военные игры, многопользовательские ролевые игры в стиле подземелий, карточные игры, словесные игры и игры-уроки по медицине, такие как Bugs and Drugs ( BND ). TUTOR продолжает существовать и сегодня как язык программирования для системы Cyber1 PLATO [2] , которая использует большую часть исходного кода PLATO 1980-х годов и имеет около 5000 пользователей по состоянию на июнь 2020 года.

Происхождение и развитие

TUTOR изначально разрабатывался как язык специального назначения для разработки учебных уроков, и его эволюция в язык программирования общего назначения была незапланированной. Название TUTOR впервые было применено к языку программирования системы PLATO в последние дни Платона III. Первая документация языка под этим названием, по-видимому, была Avner, Richard Allen; Tenczar, Paul (январь 1969), The TUTOR Manual. Отчет CERL X-4

Статья Teaching the Translation of Russian by Computer [3] дает снимок TUTOR незадолго до того, как PLATO IV начал работать. Основные элементы языка присутствовали, но команды давались в верхнем регистре, и вместо использования общего механизма поддержка альтернативных наборов символов осуществлялась через специальные имена команд, такие как WRUSS«писать, используя русский набор символов».

В 1970-х годах разработчики TUTOR воспользовались тем фактом, что весь корпус программ TUTOR хранился в сети на одной и той же компьютерной системе. Всякий раз, когда им требовалось изменить язык, они запускали программное обеспечение для конвертации корпуса кода TUTOR, чтобы пересмотреть весь существующий код и привести его в соответствие с внесенными ими изменениями. [4] В результате, как только разрабатывались новые версии TUTOR, поддержание совместимости с версией PLATO могло быть очень сложным. [5]

Control Data Corporation (CDC) к 1981 году в значительной степени исключила название TUTOR из своей документации PLATO. Они называли сам язык PLATO Author Language . Однако фраза TUTOR file или даже TUTOR lesson file сохранилась как название типа файла, используемого для хранения текста, написанного на PLATO Author Language. [6]

Структура урока TUTOR

Урок TUTOR состоит из последовательности модулей , где каждый модуль начинается с представления информации, а переход от одного модуля к другому зависит от правильного ответа на один или несколько вопросов. Как и в параграфах COBOL , управление может войти в модуль TUTOR из предыдущего модуля и выйти в следующий, но модули также могут вызываться как подпрограммы с помощью команд doили join.

Вот пример единицы: [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Команда также запрашивает ввод, при этом специальный символ стрелки (напоминающий «▷») отображается в качестве подсказки в указанных координатах экрана. По сути, блок оценки можно рассматривать как структуру управления возвратом, в которой ученик может сделать несколько попыток ответить на вопрос, пока правильный ответ не позволит двигаться вперед.

Оценка соответствия образцу

Каждый блок оценки состоит из последовательности команд сопоставления с образцом , каждая из которых вводит (возможно, пустой) блок команд, которые должны быть выполнены, если этот образец совпадает. Две наиболее распространенные команды сопоставления с образцом были answerи wrong. Они имели идентичную семантику сопоставления с образцом, за исключением того, что answerоценивали ответ студента как правильный, если он совпадал, в то время как wrongоценивали ответ студента как неправильный.

Поля тегов в командах answerи wrongсостояли из списков необязательных, обязательных и альтернативных слов. рассмотрим следующий пример: [8]

ответ <это, есть, это, фигура, многоугольник> (правый, rt) (треугольник, треугольный)

Это будет соответствовать таким ответам, как «это прямоугольный треугольник» или «это треугольная фигура» или просто «rt triangle». Это не будет соответствовать «sort of triangular», потому что слова «sort of» не указаны как игнорируемые, и это не будет соответствовать «triangle, right?», потому что порядок неправильный.

Подсистема сопоставления шаблонов распознавала орфографические ошибки, поэтому слова «triangel» или «triangl» соответствовали бы образцу примера. Автор урока мог использовать specsкоманду, чтобы задать, насколько педантичной была система в отношении орфографических ошибок.

Алгоритмы сопоставления шаблонов, используемые различными реализациями TUTOR, различались в деталях, но обычно каждое слово во входном тексте и каждое слово в шаблоне преобразовывались в битовые векторы . Чтобы увидеть, соответствует ли слово, введенное студентом, слову шаблона, расстояние Хэмминга между двумя битовыми векторами использовалось в качестве меры степени различия между словами. Битовые векторы обычно имели длину 60 или 64 бита с полями для присутствия буквы, присутствия пары букв и первой буквы. В результате количество единичных битов в исключающем или двух таких битовых векторах приблизительно соответствовало степени фонетического различия между соответствующими словами. [9]

Оценка структур контроля

Все ранние представления структуры управления блока оценки TUTOR были запутанными. Однако в современных терминах блок оценки можно описать как итеративную структуру управления , которая завершается, когда ввод студента оценивается как правильный. Тело этой структуры управления состоит из ряда случаев , каждый из которых вводится командой сопоставления с образцом, такой как answerили wrong. Все выходные данные, созданные телом цикла оценки в предыдущем цикле, стираются с экрана перед следующим циклом.

Рассмотрим этот пример: [10]

неправильно <это, есть,а> квадратв 1501написать У квадрата четыре стороны.

В случае, если студент вводит «квадрат» или «квадрат», ответ считается неверным, и текст «У квадрата четыре стороны.» выводится, начиная со строки 15 столбца 1 на экране. Этот вывод остается на экране до тех пор, пока студент не начнет вводить новый ответ, после чего он стирается, чтобы можно было вычислить ответ на новый ответ. Механизм, с помощью которого экран дисплея возвращается в предыдущее состояние, варьируется от реализации к реализации. Ранние реализации работали путем переключения терминала в режим стирания и повторного выполнения всего случая, который совпал. Некоторые более поздние реализации буферизовали вывод, произведенный во время оценки, чтобы этот вывод можно было стереть.

Команда joinбыла уникальной формой вызова подпрограммы. Она была определена как эквивалентная текстовой подстановке тела объединенного блока вместо самой команды объединения. [11] Таким образом, объединенный блок мог содержать часть блока оценки. Таким образом, хотя блок оценки концептуально является итератором, охватывающим ряд случаев , этот блок может быть произвольно разбит на подпрограммы. (Альтернативный вызов подпрограммы, doкоманда, соответствовала обычной семантике, связанной с вызовами подпрограмм в других языках программирования.)

Графические и дисплейные команды

Студенческий терминал PLATO IV [12] имел плазменную панель размером 512 на 512 пикселей с аппаратной поддержкой построения точек , рисования линий и отображения текста. Каждый пиксель на терминале PLATO IV был либо оранжевым, либо черным. Терминал CDC PLATO V использовал монохромную черно-белую ЭЛТ для эмуляции плазменной панели. Встроенный набор символов имел 4 набора по 63 символа, каждый размером 8 на 16 пикселей, половина из них были фиксированными, половина — программируемыми. Язык Tutor обеспечивал полную поддержку этого терминала.

Существовало две системы координат [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писать Уроки по Глаголам

Текст, отрисованный с нулевым размером и нулевым вращением, использовал встроенное аппаратное обеспечение для отрисовки символов терминала PLATO, в то время как отрисовка с ненулевым размером и вращением выполнялась с помощью линейных сегментов и, следовательно, значительно медленнее из-за скорости канала связи с терминалом.

Структуры управления

Помимо уникальных механизмов оценки ответов, первоначальный набор управляющих структур TUTOR был довольно скудным. В середине 1970-х годов этот недостаток был устранен путем введения блоков if, endifс необязательными elseifи elseразделами. Семантика этих управляющих структур была обычной, но синтаксис унаследовал обязательный отступ языка Tutor, предвосхищая отступ Python и добавляя уникальный непустой символ отступа, чтобы отличать отступ от строк продолжения.

Это проиллюстрировано в следующем примере: [17]

если n8<4. написать первую ветку. расчет n9⇐34иначеесли n8=4. написать вторую ветку. сделайте что-нибудьеще. написать ветку по умолчанию. если n8>6. . написать специальную ветку. конец_фэндиф

( Стрелка назначения в calcоператоре отображается неправильно в некоторых браузерах. Она похожа на <=, но выглядит как один символ. На клавиатуре PLATO IV для нее была отдельная клавиша.)

Тот же синтаксис использовался для loop, endloopблоков с семантикой, сопоставимой с циклами while в обычных языках программирования. Это проиллюстрировано в следующем примере [18]

петля n8<10. писать в цикле. суб1 n8повторная петля n8≥5. запись все еще в цикле. сделайте что-нибудьвыходной контур n8<3. запись все еще в циклеконечный циклписать вне цикла

Обратите внимание, что команды reloopand outloopв некоторой степени аналогичны операторам continueand breakязыков, основанных на C , за исключением того, что они должны располагаться на уровне отступа изменяемого ими цикла, и у них есть тег условия, который указывает, когда должна произойти указанная передача управления. Это делает конструкцию более мощной, чем в других языках, поскольку любая строка внутреннего цикла может завершить или перезапустить несколько внешних циклов одним оператором.

Синтаксис выражения

Синтаксис выражений TUTOR не оглядывался на синтаксис FORTRAN и не ограничивался плохо разработанными наборами символов той эпохи. Например, набор символов PLATO IV включал управляющие символы для нижнего и верхнего индекса , а TUTOR использовал их для возведения в степень. Рассмотрим эту команду [19]

круг (41 2 +72,6 2 ) 1/2 ,100,200

Набор символов также включал общепринятые символы для умножения и деления, ×и ÷, но в более радикальном отходе от соглашений, установленных FORTRAN, он допускал неявное умножение, поэтому выражения (4+7)(3+6)и были допустимыми, со значениями 99 и 15,9 соответственно (op cit). Эта функция рассматривалась как существенная. Когда студенты вводили числовой ответ на вопрос, они могли использовать операторы и переменные и стандартную алгебраическую нотацию, а программа использовала команду TUTOR "compute" для компиляции и запуска формулы и проверки того, что она численно эквивалентна (или находится в пределах ошибки округления с плавающей точкой) правильному ответу.3.4+5(23-3)/2

Язык включал предопределенную константу, названную греческой буквой пи (π), с соответствующим значением, которое можно было использовать в вычислениях. Таким образом, выражение можно было использовать для вычисления площади круга, используя встроенную константу π, неявное умножение и возведение в степень, обозначенные верхним индексом.πr2

В TUTOR сравнение с плавающей точкой x=yопределялось как истинное, если xи yбыли приблизительно равны. [20] Это упрощало жизнь для математически наивных разработчиков учебных уроков, но иногда вызывало головную боль у разработчиков численно сложного кода, поскольку было возможно, что x<yи x≥yмогли быть истинными одновременно. [21]

Управление памятью

Как язык авторства, TUTOR начинался с минимальными ресурсами памяти и только с самыми грубыми инструментами для манипулирования ими. Каждый пользовательский процесс имел частный сегмент данных из 150 переменных, и можно было присоединять общие блоки , что позволяло осуществлять межпользовательское взаимодействие через общую память.

В системе PLATO IV слова были 60-битными, в соответствии с семейством компьютеров CDC 6600. Некоторые более поздние реализации изменили это до 64 бит. [22]

Базовые ресурсы памяти

Частная область памяти каждого процесса состояла из 150 слов каждое, называемых переменными ученика; значения этих переменных были постоянными, следуя за отдельным пользователем от сеанса к сеансу. Они были адресованы как n1through, n150когда использовались для хранения целочисленных значений, или как v1through v150, когда использовались для хранения значений с плавающей точкой. [23]

Урок TUTOR мог присоединить один регион общей памяти объемом до 1500 слов с помощью commonкоманды. Каждый урок мог иметь неименованный временный общий блок, содержащий переменные, общие для всех пользователей этого урока. Такие блоки создавались, когда урок начинал использоваться, и освобождались, когда урок становился неактивным. Напротив, именованные общие блоки были связаны с блоком урока (файлом на диске). Общая память адресуется как nc1through nc1500(для целых чисел) или vc1through vc1500(для чисел с плавающей точкой). [24]

Если 150 переменных ученика было недостаточно, урок мог использовать storageкоманду для создания дополнительного сегмента частной памяти объемом до 1000 слов. Этот сегмент существовал только в пространстве подкачки, но его можно было сопоставить с переменными ученика или общими переменными. Например [25]

общий 1000хранение 75stoload vc1001,1,75

nc1В этом примере to определяется nc1000как общий безымянный общий блок, тогда как nc1001to nc1075— это частное хранилище.

Определение символических имен

Команда Tutor defineбыла очень похожа на директиву препроцессора C. Это был единственный способ связать мнемонические имена с переменными. Программист должен был статически выделять память и присваивать имена переменным. Рассмотрим следующий пример: [26]#define

определить мои имена первый=v1, второй =v2 результат=v3

Это создает набор определений, именованных 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]

определить сегмент, имя=начальная переменная, число бит на байт, с массив, имя(размер)=начальная переменная массив, имя (число строк, число столбцов)=начальная переменная

Сегментированные массивы , определяемые ключевым словом segment, были сопоставимы с упакованными массивами в Pascal . Размер байта и то, должны ли элементы массива рассматриваться как знаковые или беззнаковые, полностью контролировались пользователем. Произвольные манипуляции с текстом можно было выполнять, устанавливая размер байта равным машинному размеру байта, 6 бит в реализациях с использованием display code , 8 бит в некоторых более поздних реализациях ASCII и расширенного ASCII . Обратите внимание на отсутствие какой-либо спецификации размерности массива для сегментированных массивов.

Передача параметров

Общий механизм передачи параметров был добавлен в TUTOR в начале эпохи PLATO IV. Например: [32]

определить радиус=v1,x=v2,y=v3единица измерения варьируетсясделать полукруг(100,150,300)сделать полукруг(50)*единица полуокружности(радиус, x,y)радиус окружности, x,y,0,180нарисовать x-радиус, y;x+радиус, y

Обратите внимание, что формальные параметры, перечисленные в списке аргументов команды unit, являются просто определенными именами для статически выделенных глобальных переменных. Семантика передачи параметров была указана как эквивалентная назначению во время передачи управления целевому устройству, и если фактические параметры были опущены, как во второй doкоманде выше, эффект заключался в том, чтобы оставить предыдущие значения соответствующих формальных параметров неизменными.

Локальные переменные

Локальные переменные были добавлены в TUTOR где-то около 1980 года. Авторы уроков, желающие использовать локальные переменные, должны были использовать lvarsкоманду для объявления размера буфера, используемого для локальных переменных, до 128 слов. [33] После этого блок, использующий локальные переменные, мог начинаться следующим образом: [34]

единица какая-то ИМЯ1,ИМЯ2,ИМЯ3(РАЗМЕР) ИМЯ4=КОНСТАНТА плавающий:ИМЯ5,ИМЯ6,ИМЯ7(РАЗМЕР) целое число, ЧИСЛО БИТОВ:ИМЯ8,ИМЯ9 целое число, ЧИСЛО БИТОВ, со знаком: ИМЯ10 целое число:ИМЯ11

Строки продолжения команды, unitприведенной выше, считаются строками неявной defineкоманды с локальной областью действия . Обычные определения в терминах переменных студента, такие как n150могут использоваться в таком локальном define, но формы, показанные здесь, все автоматически связывают имена с позициями в блоке памяти, выделенном командой lvars. Доступная документация TUTOR не обсуждает, как выделяются локальные переменные.

Другие реализации

Существовало значительное семейство языков, связанных с TUTOR, каждое из которых было похоже на исходный язык TUTOR, но имело отличия. В частности, TUTOR был компонентом системы (система компьютерного образования PLATO), которая работала на определенном оборудовании мэйнфрейма CDC. Для эффективности в TUTOR были некоторые аппаратно-зависимые элементы (например, переменные, которые были 60-битными словами, которые можно было использовать как массивы из 60 бит или как 10 шестибитных символов и т. д.). Кроме того, TUTOR был разработан до появления графического пользовательского интерфейса (GUI) для Windows.

Язык microTutor был разработан в проекте PLATO в UIUC, чтобы разрешить запуск частей урока на терминалах, содержащих микрокомпьютеры, с подключением к коду TUTOR, работающему на мэйнфрейме. Диалект microTutor также был языком программирования системы Cluster, разработанной в UIUC и лицензированной TDK в Японии; система Cluster состояла из небольшой группы терминалов, подключенных к мини-компьютеру, который обеспечивал хранение и компиляцию. Tencore Language Authoring System является производной от TUTOR, разработанной Полом Тенцаром для ПК и продаваемой Computer Teaching Corporation. cT был производной от TUTOR и microTutor, разработанной в Carnegie Mellon, которая позволяла программам запускаться без изменений в оконных графических средах на системах Windows, Mac и Unix/Linux.

Эмулятор терминала Pterm, разработанный Cyber1, поддерживает язык microTutor, начиная с версии 6. [35] [36]

Цитаты

  1. Шервуд 1974, стр. 4.
  2. ^ "Cyber1 PLATO Computer System" . Получено 2020-06-06 .
  3. ^ Куртин и др. 1972.
  4. ^ Шервуд 2000.
  5. Джонс 1976, Раздел 7.2.
  6. ^ См., например, руководство пользователя PLATO 1981, стр. 4-56.
  7. Из памятки пользователя TUTOR 1973, стр. 5
  8. ^ Из памятки пользователя TUTOR 1973, Упражнение 4-1
  9. ^ Тенцар и Голден 1972.
  10. ^ Из памятки пользователя TUTOR 1973, Упражнение 4-1
  11. ^ Памятка пользователя TUTOR 1973, стр. 21.
  12. ^ Стифл 1974.
  13. Шервуд 1974, стр. II-1.
  14. Из Шервуда 1974, стр. II-11
  15. Шервуд 1974, стр. II-9.
  16. Из Шервуда 1974, стр. II-3.
  17. Из Авнера 1981, стр. S5
  18. Из Авнера 1981, стр. S6
  19. Из Шервуда 1974, стр. IV-1
  20. ^ Авнер 1975, стр. C5.
  21. Шервуд 1974, стр. IX-3.
  22. Джонс 1976.
  23. Шервуд 1974, стр. IV-2, IX-17.
  24. Шервуд 1974, стр. X-1 — X-3 и X-6.
  25. Из Шервуда 1974, стр. X-11.
  26. Из памятки пользователя TUTOR 1973, стр. 17
  27. Подчеркивание из оригинала, Шервуд 1974, стр. IV-5
  28. Из Шервуда 1974, стр. IX-2
  29. Авнер 1975, стр. 15.
  30. Шервуд 1974, стр. VII-52 — VII-55.
  31. Из Авнера 1975, стр. 14.
  32. Из Шервуда 1974, стр. IV-10
  33. ^ Авнер 1981, стр. C3.
  34. Из Авнера 1981, стр. C2
  35. ^ Синдер 2018.
  36. ^ Синдер нд

Ссылки

  • Руководство пользователя PLATO (PDF) , Control Data Corporation, апрель 1981 г.
  • Памятка пользователя TUTOR: Введение в TUTOR (PDF) , Урбана, Иллинойс: Исследовательская лаборатория компьютерного образования, Университет Иллинойса, март 1973 г., ERIC  ED078665
  • Авнер, Элейн (ноябрь 1975 г.), Памятка пользователя PLATO, номер один: сводка команд и системных переменных TUTOR (3-е изд.), Урбана, Иллинойс: PLATO Publications / Исследовательская лаборатория компьютерного образования, Университет Иллинойса, ERIC  ED124130
  • Авнер, Элейн (август 1981 г.), Краткое изложение команд и системных переменных TUTOR (PDF) (10-е изд.), Урбана, Иллинойс: Исследовательская лаборатория компьютерного образования, Университет Иллинойса, ERIC  ED208879
  • Кертин, Констанс; Клейтон, Дуглас; Финч, Шерил; Мур, Дэвид; Вудрафф, Лоис (1972). «Обучение переводу русского языка с помощью компьютера». The Modern Language Journal . 56 (6): 354–60. doi :10.2307/324788. ISSN  1540-4781. JSTOR  324788.
  • Джонс, Дуглас В. (1976), Поддержка времени выполнения для языка TUTOR на небольшой компьютерной системе
  • Шервуд, Брюс Арне (июнь 1974 г.), Язык TUTOR (PDF) , Урбана, Иллинойс: PLATO Publications / Исследовательская лаборатория компьютерного образования, Университет Иллинойса, ERIC  ED124149
  • Шервуд, Брюс Арне (9 апреля 2000 г.), Дальнейший прогресс с полной обратной совместимостью ( Электронная почта ), Список рассылки Python IDLE-dev
  • Sinder, Dale (nd). "Release Notes for Pterm v6". cyber1 . Получено 4 мая 2024 г. .
  • Синдер, Дейл (2018-03-26). "MicroTUTOR с Pterm: краткое руководство пользователя" (PDF) . cyber1 . Получено 4 мая 2024 г. .
  • Стифл, Джек (ноябрь 1974 г.), Студенческий терминал Платона IV (PDF)
  • Тенцар, Пол; Голден (1972), Орфография, распознавание слов и понятий , Исследовательская лаборатория компьютерного образования, Иллинойсский университет в Урбане, Отчет X-35

Дальнейшее чтение

  • Дененберг, Стюарт А. (апрель 1978 г.). «Личная оценка системы PLATO». ACM SIGCUE Outlook . 12 (2): 3–10.
  • Шервуд, Брюс (1977). «Язык TUTOR». Control Data Education Company.
  • Андерсен, Дэвид; Шервуд, Брюс; Шервуд, Джудит; Уитли, Кевин. «Язык программирования cT (производный от TUTOR)». Центр проектирования образовательных вычислений в Университете Карнеги-Меллона.(больше не поддерживается с 2002 года).
Взято с "https://en.wikipedia.org/w/index.php?title=TUTOR&oldid=1230169631"