TUTOR

редактировать
язык программирования
TUTOR
Paradigm императивный (процедурный )
Разработано Пол Тенцар и Ричард Бломм
Разработчик Пол Тенцар и Университет Иллинойса в Урбана-Шампейн
Впервые появился1969 (1969)
Печатная дисциплина нет
Основные реализации
TUTOR, Micro-TUTOR
Под влиянием
, (Regency Systems )

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

Содержание

  • 1 Истоки и разработка
  • 2 Структура урока РЕГУЛЯТОРА
  • 3 Уникальные особенности
    • 3.1 Оценка ответов
      • 3.1.1 Оценка соответствия шаблону
      • 3.1.2 Оценка управляющих структур
    • 3.2 Графические и графические команды
      • 3.2.1 Команды рисования
      • 3.2.2 Команды визуализации текста
    • 3.3 Управляющие структуры
    • 3.4 Синтаксис выражения
    • 3.5 Управление памятью
      • 3.5.1 Базовые ресурсы памяти
      • 3.5.2 Определение символьных имен
      • 3.5. 3 Массивы, упакованные массивы и манипуляции с текстом
      • 3.5.4 Передача параметров
      • 3.5.5 Локальные переменные
  • 4 Другие реализации
  • 5 Ссылки
  • 6 Внешние ссылки

Истоки и разработка

TUTOR изначально разрабатывался как специальный язык разработки для разработки учебных уроков, и его эволюция в язык программирования общего назначения е было незапланированным. Имя TUTOR впервые было применено к авторскому языку системы PLATO в более поздние дни Платона III. Первой документацией по языку под этим названием, по-видимому, была «Учебник для преподавателей», отчет CERL X-4, составленный Р.А. Авнером и П. Тенцаром, январь 1969 г.

Статья «Обучение переводу русского языка» by Computer дает снимок TUTOR незадолго до того, как PLATO IV заработал. Присутствовали основные элементы языка, но команды были даны в верхнем регистре, и вместо использования общего механизма поддержка альтернативных наборов символов осуществлялась через специальные имена команд, такие как WRUSSдля «записи с использованием русских символов. задавать."

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

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

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

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

Вот пример единицы измерения со страницы 5 памятки пользователя TUTOR, март 1973 г. (Лаборатория компьютерных образовательных исследований, Университет Иллинойса в Урбане-Шампейне):

unit math на 205 напишите Ответьте на эти задачи 3 + 3 = 4 × 3 = стрелка 413 ответ 6 стрелка 613 ответ 12

Несколько вещей должны быть сразу очевидны из этого примера.

  • Во-первых, TUTOR - это язык с фиксированным форматом. Каждая строка начинается с имени команды, которое должно соответствовать фиксированному 8-значному полю для имени команды. Аргументы этой команды (тега) начинаются с 9-го символа. Несмотря на то, что для перехода к 9-му столбцу использовалась клавиша табуляции, она генерировала пробелы, поскольку у plato не было символа табуляции.
  • В некоторых случаях, таких как команда writeвыше, тег может состоят из нескольких строк. Строки продолжения либо пустые, либо имеют начальную табуляцию.
  • Координаты экрана представлены отдельными числами, поэтому 205 относится к строке 2, столбцу 5, а 413 относится к строке 4, столбцу 13.

Что может не быть очевидна структура управления, заложенная в этом устройстве. Команда стрелкаотмечает вход в судейский блок. Эта структура управления является одной из уникальных особенностей TUTOR.

Уникальные особенности

TUTOR содержал ряд уникальных функций. Следующий список не предназначен для замены учебного пособия для РУКОВОДИТЕЛЯ, а просто выделяет наиболее интересные, новаторские и иногда сбивающие с толку особенности языка.

Оценка ответа

Блок оценки в TUTOR - это управляющая структура, которая начинается с команды arrowи заканчивается следующей arrow, endarrowили unitкоманда. Команда стрелкатакже запрашивает ввод со специальным символом стрелки (похожим на «▷»), отображаемым в качестве подсказки в указанных координатах экрана. Фактически, оценочный блок можно рассматривать как структуру управления обратным прослеживанием, где ученик может делать несколько попыток ответить на вопрос, пока правильный ответ не позволит продвинуться вперед.

Оценка соответствия шаблону

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

Поля тегов в командах answerи неправильныйсостояли из списков необязательных, обязательных и альтернативных слов. рассмотрим этот пример из упражнения 4-1 в памятке пользователя TUTOR 1973:

answer (right, rt) (треугольник, треугольник)

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

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

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

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

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

Рассмотрим пример из упражнения 4-1 памятки пользователя TUTOR 1973:

неправильный квадрат на 1501 записи У квадрата четыре стороны.

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

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

Графические команды и команды отображения

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

Было две системы координат (см. Стр. II-1 книги TUTOR Language Брюса Шервуда):

  • Грубые координаты были указаны в терминах строк и столбцов текста. Грубая координата 1501, например, была ссылкой на строку 15, символ 1, где верхний левый символ на экране находился в позиции 101, а нижний правый символ был в позиции 3264.
  • Точные координаты были указаны как X и координаты Y относительно левого нижнего угла экрана. Точная координата 0,511 определяла верхний левый угол экрана, а 0,496 была эквивалентна грубой 101, учитывая высоту символа в 16 пикселей и тот факт, что символы были нанесены относительно их нижнего левого угла.

Команды рисования

В следующем примере показаны некоторые команды рисования наставника.

рисовать 1812; 1852; пропускать; 1844; круг 1544 16,344,288 рисовать 1837; 1537; 1535; 1633; 1833

Обратите внимание на использование точек с запятой для разделите последовательные координаты в команде draw. Это позволяет однозначно использовать точные координаты, разделенные запятыми. Обычно команда рисования соединяет последовательные точки с отрезками линии, но, поместив в тег skip, можно заставить команду drawконцептуально приподнять перо.

Теги в команде circleзадают радиус и точные координаты центра. Дополнительные теги могут указывать начальный и конечный углы для частичных окружностей.

Составлять команды рисования вручную сложно, поэтому к 1974 году в систему PLATO был включен редактор изображений, чтобы автоматизировать эту работу. Это могло иметь дело только с командами рисования с постоянными координатами.

Команды визуализации текста

В следующем примере показаны некоторые инструменты визуализации текста Tutor.

размер заголовка блока 9,5 $$ текст в 9,5 раз больше обычного размера повернуть 45 $$ текст повернут на 45 градусов при 2519 записать латинский размер 0 $$ вернуться к обычному письму повернуть 0 при 3125 записать Уроки по глаголам

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

Управляющие структуры

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

Это проиллюстрировано в следующем примере со страницы S5 Сводки команд и системных переменных TUTOR (10-е изд) Элейн Авнер, 1981:

if n8 ​​<4. write first branch. calc n9⇐34 elseif n8=4. write second branch. do someunit else. write default branch. if n8>6.. напишите специальную ветку. endif endif

(Стрелка присваивания в инструкции calcотображается неправильно в некоторых браузерах. Похоже, что это похоже на <= but as one character. It had a dedicated key on the PLATO IV keyboard.)

Такой же синтаксис использовался для цикла , endloopблоки с семантикой, сравнимой с циклами while в традиционных языках программирования. Это проиллюстрировано в следующем примере со страницы S6 Сводки команд и системных переменных TUTOR ( 10-е изд) Элейн Авнер, 1981:

loop n8 <10. write within loop. sub1 n8 reloop n8≥5. write still within loop. do someunit outloop n8<3. write still within loop endloop write outside of loop

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

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

Синтаксис выражения TUTOR не обращался к синтаксису FORTRAN и не ограничивался плохо разработанными наборами символов той эпохи. Например, набор символов PLATO IV включал управляющих символов для нижнего индекса и верхнего индекса, и TUTOR использовал их для возведения в степень. Рассмотрим эту команду (со страницы IV-1 The TUTOR Language, Sherwood, 1974):

circle (41 + 72.6), 100,200

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

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

В TUTOR сравнение с плавающей запятой x = yбыло определено как истинное, если xи yбыли приблизительно равны (см. Стр. C5 меморандума пользователя PLATO, номер один Авнера, 1975 г.). Это упростило жизнь математически наивным разработчикам учебных уроков, но иногда вызывало головную боль у разработчиков сложного числового кода, потому что было возможно, что и x, и x≥yмогут быть истинными одновременно.

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

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

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

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

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

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

Если 150 переменных ученика было недостаточно, на уроке можно было использовать команду storageдля создания дополнительного сегмента частной памяти размером до 1000 слов. Этот сегмент существовал только в пространстве подкачки, но его можно было сопоставить с переменными студента или общими переменными. Например (со страницы X-11 The TUTOR Language, Sherwood, 1974):

common 1000 storage 75 stoload vc1001,1,75

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

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

Команда Tutor defineбыла очень похожа на директиву C #defineпрепроцессора. Это был единственный способ связать мнемонические имена с переменными. Программист должен был статически выделять память и присваивать имена переменным. Рассмотрим этот пример со страницы 17 памятки пользователя TUTOR - Введение в TUTOR, 1973 "

define mynames first = v1, second = v2 result = v3

Это создает набор определений с именем mynamesопределение трех переменных с плавающей запятой. Пользователям сообщили, что «не должно быть никаких v3 или v26 где-либо на вашем уроке, кроме самого оператора define. Поместите все свои определения в самое начало урока, где у вас будет готовая ссылка на то, какие переменные вы используете ». (Подчеркивание из оригинала, страница IV-5 The TUTOR Language, Sherwood, 1974.)

Функции могут быть определены с семантикой макроподстановки, как на этой иллюстрации со страницы IX-2 языка TUTOR, Шервуд, 1974:

define cotan (a) = cos (a) / sin (a)

В отличие от C, исходные правила области TUTOR были чистым «определение перед использованием» без положений для локальных определений. Таким образом, формальный параметр a, использованный выше, не должен иметь никакого предыдущего определения.

Позже, при разработке TUTOR, с введением множества именованных наборов определений, программист получил явный контроль над тем, какие наборы определений действовали в настоящее время. Например, define purge, setnameотбрасывает все определения в названном наборе.

Массивы, упакованные массивы и манипуляции с текстом

Исходные инструменты TUTOR для манипуляции с текстом основывались на командах для определенных текстовых операций, например, packдля помещения упакованной строки символов в последовательные переменные в памяти, searchдля поиска одной строки внутри другой и move, чтобы переместить строку из памяти в память. К 1975 году были добавлены более общие инструменты для массивов целых чисел и упакованных массивов. Страница 14 памятки пользователя PLATO - Сводка команд и системных переменных TUTOR, Avner, 1975, дает следующее:

определить сегмент, имя = начальная переменная, число бит на байт, массив s, имя (размер) = начальная переменная array, name (num rows, num columns) = start var

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

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

Общий механизм передачи параметров был добавлен в TUTOR в начале эпохи PLATO IV. На странице IV-10 The TUTOR Language, автор Sherwood, 1974, приводится следующий пример:

define radius = v1, x = v2, y = v3 unit change do halfcirc (100,150300) do halfcirc (50) * unit halfcirc (radius, x, y) радиус круга, x, y, 0,180 нарисовать x-radius, y; x + radius, y

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

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

Локальные переменные были добавлены в TUTOR примерно в 1980 году. Авторы уроков, желавшие использовать локальные переменные, должны были использовать команду lvars, чтобы объявить размер буфер, используемый для локальных переменных, до 128 слов. Сделав это, модуль, использующий локальные переменные, может начаться следующим образом (со страницы C2 Сводки команд и системных переменных TUTOR, Avner, 1981):

unit someu NAME1, NAME2, NAME3 (SIZE) NAME4 = CONSTANT плавающее: NAME5, NAME6, NAME7 (SIZE) целое число, NUM BITS: NAME8, NAME9 integer, NUM BITS, подписано: NAME10 целое: NAME11

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

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

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

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

Ссылки

Внешние ссылки

Последняя правка сделана 2021-06-09 06:31:06
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте