TUTOR , también conocido como lenguaje de autor PLATO , es un lenguaje de programación desarrollado para su uso en el sistema PLATO de la Universidad de Illinois en Urbana-Champaign a partir de aproximadamente 1965. TUTOR fue diseñado inicialmente por Paul Tenczar para su uso en instrucción asistida por computadora (CAI) e instrucción administrada por computadora (CMI) (en programas de computadora llamados "lecciones") y tiene muchas características para ese propósito. Por ejemplo, TUTOR tiene poderosos comandos de análisis y evaluación de respuestas, gráficos y características para simplificar el manejo de registros y estadísticas de estudiantes por parte de los instructores. La flexibilidad de TUTOR, en combinación con la potencia computacional de PLATO (que se ejecutaba en lo que se consideraba una supercomputadora en 1972), también lo hizo adecuado para la creación de juegos, incluidos simuladores de vuelo, juegos de guerra, juegos de rol multijugador estilo mazmorra, juegos de cartas, juegos de palabras y juegos de lecciones médicas como Bugs and Drugs ( BND ). TUTOR sigue vivo hoy en día como el lenguaje de programación para el sistema Cyber1 PLATO, [2] que ejecuta la mayor parte del código fuente de PLATO de la década de 1980 y tiene aproximadamente 5000 usuarios en junio de 2020.
Orígenes y desarrollo
TUTOR se desarrolló originalmente como un lenguaje de creación de contenido específico para diseñar lecciones instructivas, y su evolución hacia un lenguaje de programación de propósito general no fue planificada. El nombre TUTOR se aplicó por primera vez al lenguaje de creación del sistema PLATO en los últimos días de Plato III. La primera documentación del lenguaje, bajo este nombre, parece haber sido Avner, Richard Allen; Tenczar, Paul (enero de 1969), The TUTOR Manual. Informe X-4 del CERL
El artículo Teaching the Translation of Russian by Computer [3] ofrece una visión general de TUTOR poco antes de que PLATO IV estuviera operativo. Los elementos básicos del lenguaje estaban presentes, pero los comandos se daban en mayúsculas y, en lugar de utilizar un mecanismo general, el soporte para conjuntos de caracteres alternativos se realizaba mediante nombres de comandos especiales, como WRUSS"escribir utilizando el conjunto de caracteres ruso".
Durante la década de 1970, los desarrolladores de TUTOR aprovecharon el hecho de que todo el corpus de programas de TUTOR se almacenaba en línea en el mismo sistema informático. Siempre que sentían la necesidad de cambiar el lenguaje, ejecutaban un software de conversión sobre el corpus de código de TUTOR para revisar todo el código existente de modo que se ajustara a los cambios que habían realizado. [4] Como resultado, una vez que se desarrollaban nuevas versiones de TUTOR, mantener la compatibilidad con la versión PLATO podía resultar muy difícil. [5]
En 1981, Control Data Corporation (CDC) había eliminado en gran medida el nombre TUTOR de su documentación de PLATO y se referían al lenguaje en sí como PLATO Author Language . Sin embargo, la frase TUTOR file o incluso TUTOR lesson file sobrevivió como el nombre del tipo de archivo utilizado para almacenar texto escrito en PLATO Author Language. [6]
Estructura de una lección TUTOR
Una lección TUTOR consiste en una secuencia de unidades , donde cada unidad comienza con la presentación de información y el progreso de una unidad a la siguiente depende de que se responda correctamente una o más preguntas. Al igual que con los párrafos COBOL , el control puede ingresar a una unidad TUTOR desde la unidad anterior y salir a la siguiente, pero las unidades también se pueden llamar como subrutinas utilizando los comandos doo join.
A continuación se muestra una unidad de ejemplo: [7]
Unidad matemática
a los 205
Escribe Responde estos problemas
3 + 3 =
4 × 3 =
flecha 413
respuesta 6
flecha 613
respuesta 12
De este ejemplo deberían desprenderse inmediatamente varias cosas.
- En primer lugar, TUTOR es un lenguaje de formato fijo. Cada línea comienza con un nombre de comando, que debe caber en un campo fijo de 8 caracteres. Los argumentos de ese comando (la etiqueta ) comienzan en el noveno carácter. Aunque se utilizó una tecla de tabulación para llegar a la novena columna, generó espacios ya que PLATO no tenía carácter de tabulación.
- En algunos casos, como en el
writecomando anterior, la etiqueta puede constar de varias líneas. Las líneas de continuación están en blanco o tienen una tabulación inicial. - Las coordenadas de la pantalla se presentan como números individuales, por lo que 205 se refiere a la línea 2, columna 5, y 413 se refiere a la línea 4, columna 13.
Lo que puede no resultar evidente es la estructura de control implícita en esta unidad. El arrowcomando marca la entrada a un bloque de jueces. Esta estructura de control es una de las características únicas de TUTOR.
Características únicas
TUTOR contiene una serie de características únicas. La siguiente lista no pretende sustituir a un manual de TUTOR, sino simplemente destacar las características más interesantes, innovadoras y, a veces, confusas del lenguaje.
Responder juzgando
Un bloque de evaluación en TUTOR es una estructura de control que comienza con un arrowcomando y termina con el siguiente arrowcomando endarrowo unit. El arrowcomando también solicita una entrada, con el carácter de flecha especial (similar a "▷") que se muestra como una solicitud en las coordenadas de pantalla indicadas. En efecto, un bloque de evaluación puede considerarse como una estructura de control de retroceso donde el estudiante puede hacer múltiples intentos para responder una pregunta hasta que una respuesta correcta le permita avanzar.
Evaluación de la coincidencia de patrones
Cada bloque de evaluación consta de una secuencia de comandos de coincidencia de patronesanswer , cada uno de los cuales introduce un bloque (posiblemente vacío) de comandos que se ejecutarán si ese patrón coincide. Los dos comandos de coincidencia de patrones más comunes fueron y wrong. Estos tenían una semántica de coincidencia de patrones idéntica, excepto que answerjuzgaban que la respuesta de un estudiante era correcta si coincidía, mientras que wrongjuzgaban que la respuesta de un estudiante era incorrecta.
Los campos de etiqueta en los comandos answery wrongconsistían en listas de palabras opcionales, obligatorias y alternativas. Considere este ejemplo: [8]
respuesta <eso, es, un, es, figura,
polígono>
(derecha, rt) (triángulo, triangular)
Esto coincidiría con respuestas como "es un triángulo rectángulo" o "es una figura triangular" o simplemente "triángulo rectángulo". No coincidiría con "más o menos triangular" porque las palabras "más o menos" no están incluidas como ignoradas y no coincidiría con "triángulo, ¿verdad?" porque el orden es incorrecto.
El subsistema de comparación de patrones reconocía los errores ortográficos, por lo que las palabras "triangel" o "triangl" coincidirían con el patrón de ejemplo. El autor de la lección podría usar el specscomando para determinar el grado de pedantedismo del sistema en relación con los errores ortográficos.
Los algoritmos de comparación de patrones utilizados por las distintas implementaciones de TUTOR variaban en detalle, pero, por lo general, cada palabra del texto de entrada y cada palabra del patrón se convertían en vectores de bits . Para ver si una palabra de la entrada del estudiante coincidía con una palabra del patrón, se utilizó la distancia de Hamming entre los dos vectores de bits como medida del grado de diferencia entre las palabras. Los vectores de bits tenían normalmente una longitud de 60 o 64 bits, con campos para la presencia de letras, la presencia de pares de letras y la primera letra. Como resultado, la cantidad de un bit en el exclusivo o de dos de dichos vectores de bits se aproximaba al grado de la diferencia fonética entre las palabras correspondientes. [9]
Juzgar las estructuras de control
Todas las presentaciones iniciales de la estructura de control de un bloque de evaluación TUTOR eran confusas. Sin embargo, en términos modernos, un bloque de evaluación puede describirse como una estructura de control iterativa que finaliza cuando se juzga que la entrada del estudiante es correcta. El cuerpo de esta estructura de control consta de una serie de casos , cada uno introducido por un comando de coincidencia de patrones como answero wrong. Toda la salida producida por el cuerpo del bucle de evaluación en el ciclo anterior se borra de la pantalla antes del siguiente ciclo.
Consideremos este ejemplo: [10]
incorrecto <eso, es,un> cuadrado
a las 1501
escribe Un cuadrado tiene cuatro
lados.
En el caso de que el estudiante ingrese "cuadrado" o "un cuadrado", la respuesta se juzga incorrecta y el texto "Un cuadrado tiene cuatro lados" se muestra a partir de la línea 15, columna 1, en la pantalla. Esta salida permanece en la pantalla hasta que el estudiante comienza a ingresar una nueva respuesta, momento en el cual se borra para que se pueda calcular la respuesta a la nueva respuesta. El mecanismo por el cual la pantalla vuelve a su estado anterior varía de una implementación a otra. Las primeras implementaciones operaban cambiando la terminal al modo de borrado y volviendo a ejecutar todo el caso que había coincidido. Algunas implementaciones posteriores almacenaban en búfer la salida producida durante la evaluación para que esta salida pudiera borrarse.
El joincomando era una forma única de llamada a una subrutina. Se definía como equivalente a la sustitución textual del cuerpo de la unidad unida en lugar del comando de unión en sí. [11] Como tal, una unidad unida podía contener parte de un bloque de evaluación. Por lo tanto, si bien el bloque de evaluación es conceptualmente un iterador que encierra una serie de casos , este bloque puede dividirse arbitrariamente en subrutinas. (Una llamada a una subrutina alternativa, el docomando, se ajustaba a la semántica habitual asociada con las llamadas a subrutinas en otros lenguajes de programación).
Comandos gráficos y de visualización
El terminal de estudiante PLATO IV [12] tenía un panel de plasma de 512 por 512 píxeles , con soporte de hardware para trazado de puntos , dibujo de líneas y visualización de texto. Cada píxel del terminal PLATO IV era naranja o negro. El terminal CDC PLATO V usaba un CRT monocromático en blanco y negro para emular el panel de plasma. El conjunto de caracteres incorporado tenía 4 conjuntos de 63 caracteres, cada uno de 8 por 16 píxeles, la mitad de estos eran fijos y la otra mitad programables. El lenguaje Tutor brindaba soporte completo para este terminal.
Había dos sistemas de coordenadas [13]
- Las coordenadas aproximadas se especificaban en términos de filas y columnas de texto. La coordenada aproximada 1501, por ejemplo, era una referencia al carácter 1 de la línea 15, donde el carácter superior izquierdo de la pantalla estaba en la posición 101 y el carácter inferior derecho en la posición 3264.
- Las coordenadas precisas se especificaron como coordenadas X e Y relativas a la esquina inferior izquierda de la pantalla. La coordenada precisa 0,511 especificaba la esquina superior izquierda de la pantalla, mientras que 0,496 era equivalente a la coordenada gruesa 101, lo que permitía la altura de 16 píxeles de un carácter y el hecho de que los caracteres se trazaban en relación con su esquina inferior izquierda.
Comandos de dibujo
El siguiente ejemplo ilustra algunos de los comandos de dibujo del Tutor. [14]
dibujar 1812;1852;saltar;1844;1544
círculo 16.344.288
dibujar 1837;1537;1535;1633;1833
Tenga en cuenta el uso de punto y coma para separar las coordenadas sucesivas en el drawcomando. Esto permite el uso inequívoco de coordenadas precisas separadas por comas. Normalmente, el comando de dibujo conecta puntos consecutivos con segmentos de línea, pero al colocar la etiqueta, se podría hacer que
skipel comando levante conceptualmente su lápiz.draw
Las etiquetas del circlecomando indican el radio y las coordenadas precisas del centro. Las etiquetas adicionales podrían especificar los ángulos de inicio y fin de los círculos parciales.
La composición manual de comandos de dibujo es difícil, por lo que en 1974 se incluyó un editor de imágenes en el sistema PLATO para automatizar este trabajo. [15] Este solo podía manejar comandos de dibujo con coordenadas constantes.
Comandos de representación de texto
El siguiente ejemplo ilustra algunas de las herramientas de representación de texto de Tutor. [16]
Título de la unidad
Tamaño 9.5 $$ texto 9.5 veces el tamaño normal
rotar 45 $$ texto rotado 45 grados
a las 2519
escribir latín
tamaño 0 $$ volver a la escritura normal
rotar 0
a las 3125
Escribe lecciones sobre verbos
El texto renderizado en tamaño cero y rotación cero utilizó el hardware de renderizado de caracteres integrado del terminal PLATO, mientras que el renderizado con tamaño distinto de cero y rotación se realizó con segmentos de línea y, por lo tanto, fue significativamente más lento debido a la velocidad del enlace de comunicación con el terminal.
Estructuras de control
Aparte de sus mecanismos únicos de evaluación de respuestas, el conjunto original de estructuras de control de TUTOR era bastante escaso. A mediados de la década de 1970, esta deficiencia se solucionó introduciendo bloques if, endifcon secciones elseify opcionales else. La semántica de estas estructuras de control era rutinaria, pero la sintaxis heredó la sangría obligatoria del lenguaje Tutor, anticipando la de Python y agregando un carácter de sangría único que no está en blanco para distinguir la sangría de las líneas de continuación.
Esto se ilustra en el siguiente ejemplo: [17]
si n8<4
. escribe la primera rama
. cálculo n9⇐34
De lo contrario, si n8=4
. escribe la segunda rama
. hacer alguna unidad
demás
. escribe la rama predeterminada
. si n8>6
. . escribe rama especial
.finsi
fin si
(La flecha de asignación en la calcdeclaración no se representa correctamente en algunos navegadores. Parece similar a <= pero como un solo carácter. Tenía una tecla dedicada en el teclado PLATO IV).
Se utilizó la misma sintaxis para los bloques loop, endloopcon una semántica comparable a la de los bucles while en los lenguajes de programación convencionales. Esto se ilustra en el siguiente ejemplo [18]
bucle n8<10
. escribir dentro del bucle
.sub1 n8
rehacer bucle n8≥5
. escribe todavía dentro del bucle
. hacer alguna unidad
bucle de salida n8<3
. escribe todavía dentro del bucle
bucle final
escribir fuera del bucle
Tenga en cuenta que los comandos reloopand outloopson algo análogos a las declaraciones continueand breakde los lenguajes basados en C , excepto que deben ubicarse en el nivel de sangría del bucle que modifican y tienen una etiqueta de condición que indica cuándo debe realizarse la transferencia de control indicada. Esto hace que la construcción sea más poderosa que en otros lenguajes, porque cualquier línea del bucle interno podría terminar o volver a ejecutar varios bucles externos con una declaración.
Sintaxis de expresión
La sintaxis de expresión de TUTOR no se parecía a la sintaxis de FORTRAN ni estaba limitada por los conjuntos de caracteres mal diseñados de la época. Por ejemplo, el conjunto de caracteres PLATO IV incluía caracteres de control para subíndice y superíndice , y TUTOR los usaba para la exponenciación. Considere este comando [19]
círculo (41 2 +72,6 2 ) 1/2 ,100,200
El conjunto de caracteres también incluía los símbolos convencionales de multiplicación y división, ×y ÷, pero en un cambio más radical respecto de las convenciones establecidas por FORTRAN, permitía la multiplicación implícita, por lo que las expresiones (4+7)(3+6)y eran válidas, con los valores 99 y 15,9, respectivamente (op cit). Esta característica se consideraba esencial. Cuando los estudiantes escribían una respuesta numérica a una pregunta, podían usar operadores y variables y notación algebraica estándar, y el programa usaría el comando "compute" de TUTOR para compilar y ejecutar la fórmula y verificar que fuera numéricamente equivalente (o que estuviera dentro del error de redondeo de punto flotante) a la respuesta correcta.
3.4+5(23-3)/2
El lenguaje incluía una constante predefinida denominada con la letra griega pi (π), con el valor apropiado, que podía utilizarse en los cálculos. Así, la expresión podía utilizarse para calcular el área de un círculo, utilizando la constante π incorporada, la multiplicación implícita y la exponenciación indicada por un superíndice.
πr2
En TUTOR, la comparación de punto flotante x=yse definió como verdadera si xy yeran aproximadamente iguales. [20] Esto simplificó la vida para los desarrolladores de lecciones instructivas matemáticamente ingenuos, pero ocasionalmente causó dolores de cabeza para los desarrolladores de código numéricamente sofisticado porque era posible que tanto x<yy x≥ypudieran ser verdaderos al mismo tiempo. [21]
Gestión de la memoria
Como lenguaje de creación, TUTOR comenzó con recursos de memoria mínimos y solo las herramientas más rudimentarias para manipularlos. Cada proceso de usuario tenía un segmento de datos privado de 150 variables y se podían adjuntar bloques comunes compartidos , lo que permitía la comunicación entre usuarios a través de la memoria compartida.
En el sistema PLATO IV, las palabras eran de 60 bits, en consonancia con la familia de computadoras CDC 6600. Algunas implementaciones posteriores cambiaron esto a 64 bits. [22]
Recursos básicos de memoria
La región de memoria privada de cada proceso constaba de 150 palabras cada una, denominadas variables de estudiante; los valores de estas variables eran persistentes y seguían al usuario individual de sesión en sesión. Se las denominaba n1through n150cuando se utilizaban para almacenar valores enteros, o v1through v150cuando se utilizaban para almacenar valores de punto flotante. [23]
Una lección TUTOR podía adjuntar una única región de hasta 1500 palabras de memoria compartida mediante el commoncomando. Cada lección podía tener un bloque común temporal sin nombre que contenía variables compartidas por todos los usuarios de esa lección. Dichos bloques se creaban cuando una lección comenzaba a usarse y se desasignaban cuando la lección se volvía inactiva. Por el contrario, los bloques comunes con nombre se asociaban con un bloque de una lección (un archivo de disco). La memoria compartida se direccionaba como nc1through nc1500(para números enteros) o vc1through vc1500(para números de punto flotante). [24]
Cuando 150 variables de estudiantes no eran suficientes, una lección podía usar el
storagecomando para crear un segmento de memoria privada adicional de hasta 1000 palabras. Este segmento existía solo en el espacio de intercambio, pero podía asignarse a variables de estudiantes o variables comunes. Por ejemplo, [25]
común 1000
almacenamiento 75
Carga de carga vc1001,1,75
Este ejemplo define nc1to nc1000como un bloque común compartido sin nombre, mientras que nc1001to nc1075es un almacenamiento privado.
Definición de nombres simbólicos
El definecomando Tutor era muy similar a la directiva del preprocesador de C. Esta era la única forma de asociar nombres mnemotécnicos con variables. Dependía del programador asignar memoria estáticamente y nombres a las variables. Considere este ejemplo: [26]#define
define mis nombres
primero=v1, segundo=v2
resultado=v3
Esto crea un conjunto de definiciones denominadas que mynamesdefinen tres variables de punto flotante. Se les recomendó a los usuarios que " no debería haber ninguna v3 o v26 en ninguna parte de la lección, excepto en la definedeclaración misma . Coloque todas sus definiciones al comienzo de la lección, donde tendrá una referencia rápida de qué variables está utilizando". [27]
Las funciones podrían definirse, con semántica de macro-sustitución, como en esta ilustración: [28]
definir cotan(a)=cos(a)/sin(a)
A diferencia de C, las reglas de alcance originales de TUTOR eran puramente de "definición antes del uso" sin disposiciones para definiciones locales. Por lo tanto, el parámetro formal autilizado anteriormente no debe tener ninguna definición previa.
Más adelante en el desarrollo de TUTOR, con la introducción de múltiples conjuntos de definiciones con nombre, se le dio al programador control explícito sobre qué conjuntos de definiciones estaban en vigor en ese momento. Por ejemplo, define purge, setnamedescartaría todas las definiciones en el conjunto con nombre. [29]
Matrices, matrices empaquetadas y manipulación de texto
Las herramientas originales de TUTOR para la manipulación de texto se basaban en comandos para operaciones de texto específicas, por ejemplo, packpara colocar una cadena de caracteres empaquetada en variables consecutivas en la memoria, searchpara buscar una cadena dentro de otra y movepara mover una cadena de una memoria a otra. [30] En 1975, se añadieron herramientas más generales para matrices de números enteros y matrices empaquetadas. Por ejemplo: [31]
definir segmento, nombre=variable inicial, número de bits por byte, s
matriz, nombre(tamaño)=variable inicial
matriz, nombre (número de filas, número de columnas)=var inicial
Las matrices segmentadas , definidas con la palabra clave segment, eran comparables a las matrices empaquetadas en Pascal . El tamaño en bytes y si los elementos de la matriz debían tratarse como firmados o no estaban completamente bajo el control del usuario. La manipulación arbitraria del texto se podía realizar estableciendo el tamaño en bytes al tamaño en bytes de la máquina, 6 bits en implementaciones que usaban código de visualización , 8 bits en algunas implementaciones ASCII posteriores y ASCII extendidas . Nótese la falta de cualquier especificación de la dimensionalidad de la matriz para matrices segmentadas.
Paso de parámetros
A principios de la era PLATO IV se añadió a TUTOR un mecanismo de paso de parámetros generales . Por ejemplo: [32]
definir radio=v1,x=v2,y=v3
La unidad varía
hacer medio círculo(100,150,300)
hacer medio círculo(50)
*
unidad semicircular(radio, x,y)
radio del círculo, x,y,0,180
dibujar x-radio, y;x+radio, y
Tenga en cuenta que los parámetros formales que se enumeran en la lista de argumentos del unitcomando son simplemente los nombres definidos para las variables globales asignadas estáticamente. La semántica del paso de parámetros se dio como equivalente a la asignación en el momento de la transferencia de control a la unidad de destino, y si se omitían los parámetros realesdo , como en el segundo comando anterior, el efecto era dejar sin cambios los valores anteriores de los parámetros formales correspondientes.
Variables locales
Las variables locales se agregaron a TUTOR alrededor de 1980. Los autores de lecciones que deseaban usar variables locales debían usar el lvarscomando para declarar el tamaño del búfer utilizado para las variables locales, hasta 128 palabras. [33] Una vez hecho esto, una unidad que use variables locales podría comenzar de la siguiente manera: [34]
unidad someu
NOMBRE1,NOMBRE2,NOMBRE3(TAMAÑO)
NOMBRE4=CONSTANTE
flotante:NOMBRE5,NOMBRE6,NOMBRE7(TAMAÑO)
entero, NUM BITS:NOMBRE8,NOMBRE9
entero, NUM BITS, con signo: NOMBRE10
entero:NOMBRE11
Las líneas de continuación del unitcomando indicado anteriormente se consideran líneas de un definecomando implícito con alcance local . Las definiciones convencionales en términos de variables de estudiante como n150podrían usarse en un comando local de este tipo define, pero las formas ilustradas aquí vinculan automáticamente los nombres a las ubicaciones en el bloque de memoria asignado por el lvarscomando. La documentación TUTOR disponible no analiza cómo se asignan las variables locales.
Otras implementaciones
Ha existido una familia considerable de lenguajes relacionados con TUTOR, cada uno similar al lenguaje TUTOR original pero con diferencias. En particular, TUTOR era un componente de un sistema (el sistema educativo basado en computadora PLATO) que se ejecutaba en un hardware de mainframe CDC particular. Para lograr una mayor eficiencia, TUTOR tenía algunos elementos específicos del hardware (por ejemplo, variables que eran palabras de 60 bits que podían usarse como matrices de 60 bits o como 10 caracteres de seis bits, etc.). Además, TUTOR fue diseñado antes de la llegada de la interfaz gráfica de usuario (GUI) orientada a Windows.
El lenguaje microTutor fue desarrollado en el proyecto PLATO de la UIUC para permitir que partes de una lección se ejecutaran en terminales que contenían microcomputadoras, con conexiones al código TUTOR que se ejecutaba en el mainframe. El dialecto microTutor también fue el lenguaje de programación del sistema Cluster desarrollado en la UIUC y licenciado a TDK en Japón; el sistema Cluster consistía en un pequeño grupo de terminales conectados a una minicomputadora que proporcionaba almacenamiento y compilación. El sistema de creación de lenguaje Tencore es un derivado de TUTOR desarrollado por Paul Tenczar para PC y vendido por Computer Teaching Corporation. cT fue un derivado de TUTOR y microTutor desarrollado en Carnegie Mellon que permitía que los programas se ejecutaran sin cambios en entornos de GUI con ventanas en sistemas Windows, Mac y Unix/Linux.
El emulador de terminal Pterm desarrollado por Cyber1 admite el lenguaje microTutor a partir de la versión 6. [35] [36]
Citas
- ^ Sherwood 1974, pág. 4.
- ^ "Sistema informático Cyber1 PLATO" . Consultado el 6 de junio de 2020 .
- ^ Curtin y otros 1972.
- ^ Sherwood 2000.
- ^ Jones 1976, Sección 7.2.
- ^ Véase, por ejemplo, la guía del usuario de PLATO de 1981, pág. 4-56.
- ^ Del memorando del usuario TUTOR de 1973, pág. 5
- ^ Del memorando del usuario TUTOR de 1973, Ejercicio 4-1
- ^ Tenczar y Golden 1972.
- ^ Del memorando del usuario TUTOR de 1973, Ejercicio 4-1
- ^ Nota del usuario TUTOR 1973, pág. 21.
- ^ Sofocar 1974.
- ^ Sherwood 1974, pág. II-1.
- ^ De Sherwood 1974, pág. II-11
- ^ Sherwood 1974, pág. II-9.
- ^ De Sherwood 1974, pág. II-3
- ^ De Avner 1981, pág. S5
- ^ De Avner 1981, pág. S6
- ^ De Sherwood 1974, pág. IV-1
- ^ Avner 1975, pág. C5.
- ^ Sherwood 1974, pág. IX-3.
- ^ Jones 1976.
- ^ Sherwood 1974, págs. IV-2, IX-17.
- ^ Sherwood 1974, págs. X-1 a X-3 y X-6.
- ^ De Sherwood 1974, pág. X-11
- ^ Del memorando del usuario TUTOR de 1973, pág. 17
- ^ Subrayado del original, Sherwood 1974, pág. IV-5
- ^ De Sherwood 1974, pág. IX-2
- ^ Avner 1975, pág. 15.
- ^ Sherwood 1974, págs. VII-52 a VII-55.
- ^ De Avner 1975, pág. 14
- ^ De Sherwood 1974, pág. IV-10
- ^ Avner 1981, pág. C3.
- ^ De Avner 1981, pág. C2
- ^ Sinder 2018.
- ^ Sinder y col.
Referencias
- Manual del usuario de PLATO (PDF) , Control Data Corporation, abril de 1981
- Nota para usuarios de TUTOR: Introducción a TUTOR (PDF) , Urbana, Illinois: Computer-Based Education Research Lab, Universidad de Illinois, marzo de 1973, ERIC ED078665
- Avner, Elaine (noviembre de 1975), Memorándum del usuario de PLATO, número uno: Resumen de los comandos TUTOR y las variables del sistema (3.ª ed.), Urbana, Illinois: PLATO Publications / Computer-Based Education Research Lab, Universidad de Illinois, ERIC ED124130
- Avner, Elaine (agosto de 1981), Resumen de comandos TUTOR y variables del sistema (PDF) (10.ª ed.), Urbana, Illinois: Computer-Based Education Research Lab, Universidad de Illinois, ERIC ED208879
- Curtin, Constance; Clayton, Douglas; Finch, Cheryl; Moor, David; Woodruff, Lois (1972). "Enseñanza de la traducción del ruso por ordenador". The Modern Language Journal . 56 (6): 354–60. doi :10.2307/324788. ISSN 1540-4781. JSTOR 324788.
- Jones, Douglas W. (1976), Soporte de tiempo de ejecución para el lenguaje TUTOR en un sistema informático pequeño
- Sherwood, Bruce Arne (junio de 1974), El lenguaje TUTOR (PDF) , Urbana, Illinois: PLATO Publications / Computer-Based Education Research Lab, Universidad de Illinois, ERIC ED124149
- Sherwood, Bruce Arne (9 de abril de 2000), Progreso hacia adelante con compatibilidad total con versiones anteriores ( Correo electrónico ), lista de correo IDLE-dev de Python
- Sinder, Dale (nd). "Notas de la versión de Pterm v6". cyber1 . Consultado el 4 de mayo de 2024 .
- Sinder, Dale (26 de marzo de 2018). "MicroTUTOR con Pterm: una breve guía del usuario" (PDF) . cyber1 . Consultado el 4 de mayo de 2024 .
- Stifle, Jack (noviembre de 1974), La terminal estudiantil de Platón IV (PDF)
- Tenczar, Paul; Golden (1972), Ortografía, reconocimiento de palabras y conceptos , Laboratorio de investigación educativa basada en computadora, Universidad de Illinois en Urbana, Informe X-35
Lectura adicional
- Denenberg, Stewart A. (abril de 1978). "Una evaluación personal del sistema PLATO". ACM SIGCUE Outlook . 12 (2): 3–10.
- Sherwood, Bruce (1977). "El lenguaje TUTOR". Control Data Education Company.
- Andersen, David; Sherwood, Bruce; Sherwood, Judith; Whitley, Kevin. "El lenguaje de programación cT (derivado de TUTOR)". Centro de Diseño de Computación Educativa de la Universidad Carnegie Mellon.(ya no es compatible desde 2002).