KOREPETYTOR - TUTOR
Paradygmat | imperatyw ( proceduralny ) |
---|---|
Zaprojektowany przez | Paul Tenczar i Richard Blomme |
Deweloper | Paul Tenczar i University of Illinois w Urbana-Champaign |
Po raz pierwszy pojawiły się | 1969 |
Dyscyplina pisania | Żaden |
Główne wdrożenia | |
NAUCZYCIEL, Mikro-TUTOR | |
Pod wpływem | |
TenCORE , USE ( Systemy Regency ) |
TUTOR , znany również jako PLATO Author Language , to język programowania opracowany do użytku w systemie PLATO na Uniwersytecie Illinois w Urbana-Champaign od około 1965 roku. TUTOR został początkowo zaprojektowany przez Paula Tenczara do użytku w nauczaniu wspomaganym komputerowo (CAI) oraz instruktaż zarządzany komputerowo (CMI) (w programach komputerowych nazywanych „lecjami”) i ma wiele funkcji do tego celu. Na przykład, TUTOR ma potężne komendy do analizowania i oceniania odpowiedzi, grafiki i funkcje, które upraszczają obsługę rekordów uczniów i statystyk przez instruktorów. Elastyczność TUTORa, w połączeniu z mocą obliczeniową PLATO (działającą na tym, co w 1972 roku uznano za superkomputer), sprawiła, że nadaje się on również do tworzenia gier — w tym symulatorów lotu, gier wojennych, gier wieloosobowych w stylu lochów, gier karcianych, gier słownych gry i gry lekcyjne, takie jak Bugs and Drugs ( BND ). TUTOR żyje do dziś jako język programowania systemu Cyber1 PLATO, który obsługuje większość kodu źródłowego z PLATO z lat 80. i ma około 5000 użytkowników w czerwcu 2020 r.
Geneza i rozwój
TUTOR został pierwotnie opracowany jako język autorski specjalnego przeznaczenia do projektowania lekcji instruktażowych, a jego ewolucja w język programowania ogólnego przeznaczenia była nieplanowana. Nazwa TUTOR została po raz pierwszy zastosowana do autorskiego języka systemu PLATO w późniejszych czasach Platona III. Wydaje się, że pierwszą dokumentacją języka pod tą nazwą był Podręcznik TUTOR, Raport CERL X-4, RA Avner i P. Tenczar, styczeń 1969.
Artykuł Nauczanie tłumaczenia języka rosyjskiego przez komputer daje obraz programu TUTOR na krótko przed uruchomieniem PLATO IV. Obecne były podstawowe elementy języka, ale polecenia były pisane wielkimi literami i zamiast używania ogólnego mechanizmu, wsparcie dla alternatywnych zestawów znaków było poprzez specjalne nazwy poleceń, takie jak WRUSS
„pisz używając rosyjskiego zestawu znaków”.
Przez lata siedemdziesiąte twórcy TUTOR wykorzystywali fakt, że cały korpus programów TUTOR był przechowywany on-line w tym samym systemie komputerowym. Ilekroć czuli potrzebę zmiany języka, uruchamiali oprogramowanie do konwersji na korpusie kodu TUTORa, aby zrewidować cały istniejący kod tak, aby był zgodny z wprowadzonymi przez nich zmianami. W rezultacie po opracowaniu nowych wersji TUTORa utrzymanie kompatybilności z wersją PLATO może być bardzo trudne.
Control Data Corporation (CDC), do 1981 roku, w dużej mierze usunęła nazwę TUTOR ze swojej dokumentacji PLATO. Nazwali sam język PLATO Author Language . Jednak wyrażenie plik TUTOR lub nawet plik lekcji TUTOR przetrwało jako nazwa typu pliku używanego do przechowywania tekstu napisanego w języku autora PLATO.
Struktura lekcji TUTOR
Lekcja TUTOR składa się z sekwencji jednostek, w których każda jednostka zaczyna się od przedstawienia informacji, a postęp z jednej jednostki do następnej jest uzależniony od poprawnej odpowiedzi na jedno lub więcej pytań. Podobnie jak w przypadku paragrafów COBOL , sterowanie może wejść do jednostki TUTOR z poprzedniej jednostki i wyjść do następnej, ale jednostki są również wywoływane jako podprogramy za pomocą poleceń do
lub join
.
Oto przykładowa jednostka ze strony 5 notatki użytkownika TUTOR , marzec 1973 ( Computer-based Education Research Laboratory , University of Illinois at Urbana-Champaign):
unit math
at 205
write Answer these problems
3 + 3 =
4 × 3 =
arrow 413
answer 6
arrow 613
answer 12
Z tego przykładu powinno wynikać od razu kilka rzeczy.
- Po pierwsze, TUTOR jest językiem o stałym formacie. Każdy wiersz zaczyna się od nazwy polecenia, która musi mieścić się w stałym 8-znakowym polu na nazwę polecenia. Argumenty tego polecenia ( znacznik ) zaczynają się od dziewiątego znaku. Chociaż do dostania się do 9. kolumny użyto klawisza tabulacji, generował on spacje, ponieważ platon nie miał znaku tabulacji.
- W niektórych przypadkach, takich jak
write
powyższe polecenie, znacznik może składać się z wielu wierszy. Linie kontynuacji są albo puste, albo mają wiodącą tabulator. - Współrzędne ekranowe są przedstawiane jako pojedyncze liczby, więc 205 odnosi się do wiersza 2 kolumny 5, a 413 odnosi się do wiersza 4 kolumny 13.
To, co może nie być oczywiste, to struktura sterowania zawarta w tej jednostce. Te arrow
znaki komend wejście do oceniania bloku Taka struktura kontroli jest jedną z unikalnych cech wychowawcy.
Cechy szczególne
TUTOR zawierał szereg unikalnych funkcji. Poniższa lista nie ma na celu zastąpienia podręcznika TUTOR, a jedynie podkreśla najciekawsze, innowacyjne i czasami mylące cechy języka.
Ocena odpowiedzi
Oceny blok w TUTOR jest system kontroli, który zaczyna się z arrow
poleceniem i kończy się w następnym arrow
, endarrow
lub unit
polecenie. arrow
Komenda także pyta o wejście ze szczególnym charakterze strzałką (przypominający „▷”) wyświetlany monit we wskazanych współrzędnych ekranowych. W efekcie blok oceniający może być traktowany jako cofająca się struktura kontrolna, w której uczeń może podejmować wiele prób odpowiedzi na pytanie, dopóki poprawna odpowiedź nie pozwoli na postęp.
Ocenianie dopasowania wzorca
Każdy blok oceniający składa się z sekwencji poleceń dopasowywania wzorca , z których każda wprowadza (prawdopodobnie pusty) blok poleceń do wykonania, jeśli ten wzorzec pasuje. Dwa najczęściej używane polecenia dopasowywania wzorców to answer
i wrong
. Miały one identyczną semantykę dopasowywania wzorców, z tym wyjątkiem, że answer
oceniały odpowiedź ucznia jako poprawną, jeśli pasowała, a wrong
odpowiedź ucznia była nieprawidłowa.
Pola znaczników w poleceniach answer
i wrong
składały się z list słów opcjonalnych, wymaganych i alternatywnych. rozważmy ten przykład z ćwiczenia 4-1 w Notatce użytkownika TUTORa z 1973 roku :
answer <it, is,a, it's, figure,
polygon>
(right, rt) (triangle, triangular)
To pasowałoby do odpowiedzi, takich jak „to jest trójkąt prostokątny”, „to jest figura trójkątna” lub po prostu „trójkąt rt”. Nie pasowałby do słowa „coś w rodzaju trójkąta”, ponieważ słowa „rodzaj” nie są wymienione jako ignorowane i nie pasowałby do słowa „trójkąt, prawda?” ponieważ kolejność jest zła.
Podsystem dopasowywania wzorców rozpoznał błędy pisowni, więc słowa „trójkąt” lub „trójkąt” pasowałyby do przykładowego wzorca. Autor lekcji mógł użyć specs
polecenia, aby ustawić pedantyczny system w kwestii błędów ortograficznych.
Algorytmy dopasowywania wzorców używane przez różne implementacje programu TUTOR różniły się szczegółowo, ale zazwyczaj każde słowo w tekście wejściowym i każde słowo we wzorcu były konwertowane na wektory bitowe . Aby sprawdzić, czy słowo wprowadzone przez ucznia pasuje do słowa z wzorca, jako miarę stopnia różnicy między słowami zastosowano odległość Hamminga między dwoma wektorami bitowymi. Wektory bitowe miały zazwyczaj długość 60 lub 64 bitów, z polami na obecność liter, obecność par liter i pierwszą literę. W rezultacie liczba jednego bitu w wyłącznym lub dwóch takich wektorów bitowych przybliżyła zakres różnicy fonetycznej między odpowiednimi słowami.
Ocenianie struktur kontrolnych
Wszystkie wczesne prezentacje struktury kontrolnej bloku oceniającego TUTOR były mylące. Jednak we współczesnych terminach blok oceniający można opisać jako iteracyjną strukturę kontrolną, która kończy się, gdy wkład ucznia zostanie oceniony jako prawidłowy. Treść tej struktury kontrolnej składa się z serii przypadków , z których każda jest wprowadzana przez polecenie dopasowania wzorca, takie jak answer
lub wrong
. Wszystkie dane wyjściowe wytworzone przez ciało pętli oceniającej w poprzednim cyklu są usuwane z ekranu przed następnym cyklem.
Rozważmy ten przykład z ćwiczenia 4-1 Notatki użytkownika TUTOR z 1973 roku :
wrong <it, is,a> square
at 1501
write A square has four
sides.
W przypadku, gdy uczeń wprowadzi „kwadrat” lub „kwadrat”, odpowiedź jest oceniana jako nieprawidłowa, a tekst „Kwadrat ma cztery boki”. jest wyprowadzany począwszy od wiersza 15, kolumny 1 na ekranie. Wynik ten pozostaje na ekranie, dopóki uczeń nie zacznie wprowadzać nowej odpowiedzi, po czym jest usuwany, aby można było obliczyć odpowiedź na nową odpowiedź. Mechanizm przywracania ekranu wyświetlacza do poprzedniego stanu różni się w zależności od implementacji. Wczesne implementacje polegały na przełączeniu terminala w tryb kasowania i ponownym wykonaniu całej dopasowanej sprawy. Niektóre późniejsze implementacje buforowały dane wyjściowe generowane podczas oceniania, aby można było je usunąć.
join
Komenda była wyjątkowa forma wywołania podprogramu. Zostało to zdefiniowane jako równoważne zastępowaniu tekstowym treścią połączonej jednostki w miejsce samego polecenia łączenia (strona 21, 1973 TUTOR Notatka użytkownika ). W związku z tym połączona jednostka może zawierać część bloku osądzającego. Tak więc, podczas gdy blok oceniający jest koncepcyjnie iteratorem obejmującym serię przypadków , blok ten może być arbitralnie podzielony na podprogramy. (Alternatywne wywołanie podprogramu, do
polecenie, zgodne ze zwykłą semantyką związaną z wywołaniami podprogramów w innych językach programowania.)
Polecenia graficzne i wyświetlające
Terminal studencki PLATO IV posiadał panel wyświetlacza plazmowego o wymiarach 512 na 512 pikseli , z obsługą sprzętową do kreślenia punktów , rysowania linii i wyświetlania tekstu. Każdy piksel na terminalu PLATO IV był albo pomarańczowy albo czarny. Terminal CDC PLATO V używał monochromatycznego czarno-białego CRT do emulacji panelu plazmowego. Wbudowany zestaw znaków miał 4 zestawy po 63 znaki, każdy 8 na 16 pikseli, połowa z nich była stała, połowa była programowalna. Język Tutor zapewniał pełną obsługę tego terminala.
Były dwa układy współrzędnych (patrz strona II-1 w The TUTOR Language Bruce'a Sherwooda):
- Współrzędne zgrubne określono w postaci wierszy i kolumn tekstu. Na przykład zgrubna współrzędna 1501 była odniesieniem do znaku 1 wiersza 15, gdzie lewy górny znak na ekranie znajdował się w lokalizacji 101, a prawy dolny znak w lokalizacji 3264.
- Dokładne współrzędne zostały określone jako współrzędne X i Y względem lewego dolnego rogu ekranu. Dokładna współrzędna 0,511 określała lewy górny róg ekranu, podczas gdy 0,496 była równoważna zgrubnej 101, co pozwalało na 16 pikseli wysokości znaku oraz na fakt, że znaki były kreślone względem ich dolnego lewego rogu.
Polecenia rysowania
Poniższy przykład ilustruje niektóre polecenia rysowania Nauczyciela.
draw 1812;1852;skip;1844;1544
circle 16,344,288
draw 1837;1537;1535;1633;1833
Zwróć uwagę na użycie średników do oddzielenia kolejnych współrzędnych w draw
poleceniu. Pozwala to na jednoznaczne użycie dokładnych współrzędnych oddzielonych przecinkami. Normalnie polecenie rysowania łączy kolejne punkty za pomocą odcinków linii, ale wstawiając skip
znacznik, draw
polecenie może koncepcyjnie unieść pióro.
Znaczniki w circle
poleceniu podają promień i dokładne współrzędne środka. Dodatkowe znaczniki mogą określać kąty początkowe i końcowe okręgów częściowych.
Ręczne komponowanie poleceń rysowania jest trudne, dlatego w 1974 do systemu PLATO został włączony edytor obrazów, aby zautomatyzować tę pracę. Mogło to dotyczyć tylko poleceń rysowania ze stałymi współrzędnymi.
Polecenia renderowania tekstu
Poniższy przykład ilustruje niektóre narzędzia do renderowania tekstu w programie Tutor.
unit title
size 9.5 $$ text 9.5 times normal size
rotate 45 $$ text rotated 45 degrees
at 2519
write Latin
size 0 $$ return to normal writing
rotate 0
at 3125
write Lessons on Verbs
Tekst renderowany w rozmiarze zero z rotacją zero wykorzystywał wbudowany sprzęt do renderowania znaków terminala PLATO, podczas gdy renderowanie z niezerowym rozmiarem i rotacją odbywało się za pomocą segmentów linii, a zatem znacznie wolniej ze względu na prędkość łącza komunikacyjnego z terminalem.
Struktury kontrolne
Poza unikalnymi mechanizmami oceny odpowiedzi, oryginalny zestaw struktur kontrolnych TUTORa był raczej nieliczny. W połowie lat 70. rozwiązano ten mankament wprowadzając if
, endif
bloki z sekcjami opcjonalnymi elseif
i else
. Semantyka tych struktur kontrolnych była rutynowa, ale składnia odziedziczyła obowiązkowe wcięcia języka nauczyciela, zapowiadając wcięcie Pythona i dodając unikalny niepusty znak wcięcia, aby odróżnić wcięcia od wierszy kontynuacji.
Ilustruje to następujący przykład, ze strony S5 Podsumowanie poleceń i zmiennych systemowych TUTORa (wyd. 10) autorstwa Elaine Avner , 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
. . write special branch
. endif
endif
( Strzałka przypisania w calc
instrukcji nie jest poprawnie wyświetlana w niektórych przeglądarkach. Wygląda podobnie do <=, ale jako jeden znak. Miała dedykowany klawisz na klawiaturze PLATO IV.)
Ta sama składnia użyto loop
, endloop
bloki z semantyki porównywalne do pętli while w tradycyjnych językach programowania. Ilustruje to następujący przykład, ze strony S6 Podsumowanie poleceń i zmiennych systemowych TUTORa (wyd. 10) autorstwa Elaine Avner, 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
Zwróć uwagę, że polecenia reloop
i outloop
są nieco analogiczne do instrukcji continue
i break
języków opartych na C , z wyjątkiem tego, że muszą znajdować się na poziomie wcięć pętli, którą modyfikują, i mają tag warunku, który wskazuje, kiedy wskazany transfer sterowania ma nastąpić . To sprawia, że konstrukcja jest bardziej wydajna niż w innych językach, ponieważ każda linia wewnętrznej pętli może zakończyć lub ponownie zapętlić kilka zewnętrznych pętli za pomocą jednej instrukcji.
Składnia wyrażeń
Składnia wyrażeń TUTORa nie przypominała składni FORTRAN ani nie była ograniczona przez źle zaprojektowane zestawy znaków epoki. Na przykład zestaw znaków PLATO IV zawierał znaki kontrolne dla indeksu dolnego i górnego , a TUTOR używał ich do potęgowania. Rozważ to polecenie (ze strony IV-1 The TUTOR Language , Sherwood, 1974):
circle (412+72.62)1/2,100,200
Zestaw znaków zawierał również konwencjonalne symbole mnożenia i dzielenia ×
oraz ÷
, ale w bardziej radykalnym odejściu od konwencji ustalonych przez FORTRAN, zezwalał na mnożenie niejawne, więc wyrażenia (4+7)(3+6)
i były poprawne, z wartościami odpowiednio 99 i 15,9 (op cit). Ta funkcja była postrzegana jako niezbędna. Gdy uczniowie wpisali liczbową odpowiedź na pytanie, mogli użyć operatorów i zmiennych oraz standardowej notacji algebraicznej, a program używał polecenia „oblicz” w programie TUTOR, aby skompilować i uruchomić formułę oraz sprawdzić, czy jest ona równoważna liczbowo (lub w ramach błąd zaokrąglenia zmiennoprzecinkowego) do poprawnej odpowiedzi.
3.4+5(23-3)/2
Język zawierał predefiniowaną stałą nazwaną grecką literą pi (π) z odpowiednią wartością, którą można było wykorzystać w obliczeniach. Zatem wyrażenie to może być użyte do obliczenia pola powierzchni koła, używając wbudowanej stałej π, niejawnego mnożenia i potęgowania wskazywanego przez indeks górny.
πr2
W programie TUTOR porównanie zmiennoprzecinkowe x=y
zostało zdefiniowane jako prawdziwe, jeśli x
i y
było w przybliżeniu równe (patrz strona C5 Notatki użytkownika PLATO, numer jeden autorstwa Avnera, 1975). To uprościło życie matematycznie naiwnym twórcom lekcji instruktażowych, ale czasami przyprawiało o ból głowy programistów wyrafinowanego numerycznie kodu, ponieważ było możliwe, że oba x<y
i x≥y
mogą być jednocześnie prawdziwe.
Zarządzanie pamięcią
Jako język autorski, TUTOR zaczynał od minimalnych zasobów pamięci i tylko najbardziej prymitywnych narzędzi do manipulowania nimi. Każdy proces użytkownika posiadał prywatny segment danych składający się ze 150 zmiennych i można było dołączyć wspólne bloki wspólne , umożliwiając komunikację między użytkownikami za pośrednictwem pamięci współdzielonej.
W systemie PLATO IV słowa miały 60 bitów, zgodnie z rodziną komputerów CDC 6600 . Niektóre późniejsze implementacje zmieniły to na 64 bity.
Podstawowe zasoby pamięci
Obszar pamięci prywatnej każdego procesu składał się ze 150 słów każdy, określanych jako zmienne studenckie; wartości tych zmiennych były trwałe, podążając za indywidualnym użytkownikiem od sesji do sesji. Zostały one zaadresowane jako n1
przez, n150
gdy były używane do przechowywania wartości całkowitych, lub jako v1
przez, v150
gdy były używane do przechowywania wartości zmiennoprzecinkowych.
Lekcja TUTOR może dołączyć pojedynczy region do 1500 słów pamięci współdzielonej za pomocą common
polecenia. Każda lekcja może mieć nienazwany tymczasowy wspólny blok zawierający zmienne wspólne dla wszystkich użytkowników tej lekcji. Takie bloki zostały utworzone, gdy lekcja zaczęła być używana i cofnięta, gdy lekcja stała się nieaktywna. W przeciwieństwie do tego, nazwane wspólne bloki były powiązane z blokiem lekcji (plikiem na dysku). Pamięć współdzielona była adresowana jako nc1
poprzez nc1500
(dla liczb całkowitych) lub vc1
poprzez vc1500
(dla liczb zmiennoprzecinkowych).
Tam, gdzie 150 zmiennych uczniów było niewystarczających, lekcja mogła wykorzystać
storage
polecenie do utworzenia dodatkowego segmentu pamięci prywatnej do 1000 słów. Ten segment istniał tylko w przestrzeni wymiany, ale można go było odwzorować na zmienne ucznia lub zmienne wspólne. Na przykład (ze strony X-11 The TUTOR Language , Sherwood, 1974):
common 1000
storage 75
stoload vc1001,1,75
Ten przykład definiuje nc1
to nc1000
jako udostępniony nienazwany wspólny blok, podczas gdy nc1001
to nc1075
jest prywatną pamięcią masową.
Definiowanie nazw symbolicznych
Polecenie Nauczyciela define
było bardzo podobne do dyrektywy preprocesora C. Był to jedyny sposób na powiązanie nazw mnemonicznych ze zmiennymi. Do programisty należało statyczne przydzielenie pamięci i nadanie nazw zmiennym. Rozważ ten przykład ze strony 17 Notatki użytkownika TUTORa -- Wprowadzenie do TUTORa , 1973"
#define
define mynames
first=v1, second =v2
result=v3
Tworzy to zestaw definicji o nazwie mynames
definiujących trzy zmienne zmiennoprzecinkowe. Użytkownicy zostali poinformowani, że " nie powinno być żadnych v3 ani v26 nigdzie w twojej lekcji poza samym define
stwierdzeniem . Umieść wszystkie swoje definicje na samym początku lekcji, gdzie będziesz mieć gotowe odniesienie do używanych zmiennych." (podkreślenie z oryginału, strona IV-5 The TUTOR Language , Sherwood, 1974.)
Funkcje mogą być zdefiniowane, z semantyką podstawienia makro, jak na tej ilustracji ze strony IX-2 The TUTOR Language , Sherwood, 1974:
define cotan(a)=cos(a)/sin(a)
W przeciwieństwie do C, pierwotne zasady zakresu programu TUTOR były czystą „definicją przed użyciem” bez żadnych przepisów dotyczących definicji lokalnych. Zatem a
użyty powyżej parametr formalny nie może mieć żadnej wcześniejszej definicji.
Później w rozwoju TUTORa, wraz z wprowadzeniem wielu nazwanych zestawów definicji, programista otrzymał wyraźną kontrolę nad tym, które zestawy definicji obowiązują obecnie. Na przykład define purge, setname
odrzuci wszystkie definicje w nazwanym zestawie.
Tablice, spakowane tablice i manipulacja tekstem
Oryginalne narzędzia TUTOR do manipulacji tekstem opierały się na poleceniach dla określonych operacji tekstowych, na przykład pack
umieszczania spakowanego ciągu znaków w kolejnych zmiennych w pamięci, search
wyszukiwania jednego ciągu w drugim i move
przenoszenia ciągu z pamięci do pamięci. Do 1975 roku dodano bardziej ogólne narzędzia do tablic liczb całkowitych i tablic upakowanych. Strona 14 noty użytkownika PLATO – Podsumowanie poleceń programu TUTOR i zmiennych systemowych , Avner, 1975, zawiera następujące informacje:
define segment, name=starting var, num bits per byte, s
array, name(size)=starting var
array, name (num rows, num columns)=starting var
Tablice segmentowane , zdefiniowane za pomocą słowa kluczowego segment
, były porównywalne z tablicami spakowanymi w Pascalu . Rozmiar w bajtach i to, czy elementy tablicy mają być traktowane jako podpisane, czy nie, były całkowicie pod kontrolą użytkownika. Dowolna manipulacja tekstem może być wykonana przez ustawienie rozmiaru bajtu na rozmiar bajtu maszyny, 6 bitów w implementacjach używających kodu wyświetlania , 8 bitów w niektórych późniejszych implementacjach ASCII i rozszerzonych ASCII . Zwróć uwagę na brak jakiejkolwiek specyfikacji wymiarów tablicy dla tablic segmentowanych.
Przekazywanie parametrów
Ogólny mechanizm przekazywania parametrów został dodany do TUTOR na początku ery PLATO IV. Strona IV-10 The TUTOR Language autorstwa Sherwood, 1974 podaje następujący przykład:
define radius=v1,x=v2,y=v3
unit vary
do halfcirc(100,150,300)
do halfcirc(50)
*
unit halfcirc(radius, x,y)
circle radius, x,y,0,180
draw x-radius, y;x+radius, y
Zauważ, że parametry formalne wymienione na liście argumentów unit
polecenia są po prostu zdefiniowanymi nazwami dla statycznie alokowanych zmiennych globalnych. Semantyka przekazywania parametrów została podana jako równoważna przypisaniu w momencie przekazania sterowania do jednostki docelowej, a jeśli rzeczywiste parametry zostały pominięte, jak w drugim do
poleceniu powyżej, efektem było pozostawienie wcześniejszych wartości odpowiednich formalnych parametry bez zmian.
Zmienne lokalne
Zmienne lokalne zostały dodane do TUTORa około 1980 roku. Autorzy lekcji, którzy chcieli używać zmiennych lokalnych, musieli użyć lvars
polecenia do zadeklarowania rozmiaru bufora używanego dla zmiennych lokalnych, do 128 słów. Po wykonaniu tej czynności, jednostka używająca zmiennych lokalnych mogłaby zacząć w następujący sposób (ze strony C2 Summary of TUTOR Commands and System Variables , Avner, 1981):
unit someu
NAME1,NAME2,NAME3(SIZE)
NAME4=CONSTANT
floating:NAME5,NAME6,NAME7(SIZE)
integer, NUM BITS:NAME8,NAME9
integer, NUM BITS,signed:NAME10
integer:NAME11
Wiersze kontynuacji unit
polecenia podanego powyżej są traktowane jako wiersze define
polecenia niejawnego o zasięgu lokalnym . Konwencjonalne definicje w kategoriach zmiennych studenckich, takie jak n150
mogą być używane w takim lokalnym define
, ale przedstawione tutaj formularze automatycznie wiążą nazwy z lokalizacjami w bloku pamięci przydzielonym przez lvars
polecenie. Dostępna dokumentacja TUTORa nie omawia sposobu alokacji zmiennych lokalnych.
Inne realizacje
Istnieje spora rodzina języków związanych z programem TUTOR, z których każdy jest podobny do oryginalnego języka TUTOR, ale różni się. W szczególności, TUTOR był elementem systemu (komputerowego systemu edukacyjnego PLATO), który działał na określonym sprzęcie typu mainframe CDC. Aby zwiększyć wydajność, w TUTOR znajdowały się pewne elementy specyficzne dla sprzętu (np. zmienne, które były 60-bitowymi słowami, które można było wykorzystać jako tablice 60-bitowe lub jako 10 znaków sześciobitowych itp.). Również TUTOR został zaprojektowany przed pojawieniem się graficznego interfejsu użytkownika (GUI) zorientowanego na Windows.
Język microTutor został opracowany w ramach projektu PLATO w UIUC, aby umożliwić uruchamianie części lekcji w terminalach zawierających mikrokomputery, z połączeniami z kodem TUTOR działającym na komputerze mainframe. Dialekt microTutor był również językiem programowania systemu klastrowego opracowanym w UIUC i licencjonowanym przez TDK w Japonii; System Cluster składał się z niewielkiej grupy terminali podłączonych do minikomputera, który zapewniał przechowywanie i kompilację. Tencore Język Authoring systemu jest pochodną TUTOR opracowany przez Paula Tenczar dla komputerów i sprzedawany przez firmę Computer Teaching Corporation. cT był pochodną TUTOR i microTutor opracowanych w Carnegie Mellon, które umożliwiały uruchamianie programów bez zmian w środowiskach okienkowych GUI na systemach Windows, Mac i Unix/Linux: Archiwum języka programowania cT
Bibliografia
Linki zewnętrzne
- Podręcznik użytkownika PLATO , CDC Corporation, zaktualizowany w kwietniu 1981 r.
- Notatka użytkownika TUTOR. Wprowadzenie do TUTOR , Computer-Based Education Research Laboratory, University of Illinois w Urbana Champaign, marzec 1973.
- Notatka użytkownika PLATO, numer jeden: Podsumowanie poleceń programu TUTOR i zmiennych systemowych. Wydanie trzecie , Elaine Avner, Computer-Based Education Research Laboratory, University of Illinois at Urbana Champaign, listopad 1975.
- Podsumowanie poleceń i zmiennych systemowych TUTORa (wydanie 10) , Elaine Avner, Computer-Based Education Research Laboratory, University of Illinois at Urbana Champaign, listopad 1981.
- Osobista ocena systemu PLATO przez Stewarta A. Denenberga, ACM SIGCUE Outlook, 12, 2 (kwiecień 1978), strony 3–10.
- Obsługa czasu wykonywania dla języka TUTOR w małym systemie komputerowym , Douglas W. Jones , 1976.
- Język TUTOR , Bruce Sherwood, Computer-Based Education Research Laboratory, University of Illinois w Urbana Champaign, czerwiec 1974.
- Język TUTOR , Bruce Sherwood, Control Data Education Company, 1977.
- Terminal studencki Plato IV , Jack Stifle
- Język programowania cT (pochodzący od TUTOR) z Center for Design of Educational Computing na Carnegie Mellon University, autorstwa Davida Andersena, Bruce'a Sherwooda, Judith Sherwood i Kevina Whitleya (od 2002 r. nie jest już wspierany).