Características

Esta es una lista general de características. Para verlo todo, tendrás que explorar la referencia.

turtleSpaces se basa en una implementación completa del entorno Apple (LCSI) Logo. De Logo se ha dicho que es «el lenguaje de programación más potente y fácil de usar jamás implementado en un ordenador personal». (David Thornburg)

Logo es un lenguaje «funcional» basado en «primitivas» (comandos) que se devuelven su salida unas a otras: se pueden encadenar para recuperar, calcular y transformar datos de distintas maneras antes de guardarlos o de actuar en función de ellos.

Los usuarios pueden crear «procedimientos» que se comportan igual que las primitivas (y pueden sustituirlas). Un procedimiento puede recibir parámetros y devolver una salida, igual que una primitiva. Tomemos la primitiva product , que multiplica dos números:

Así hemos sustituido en la práctica product por nuestro propio procedimiento.

Logo se concibió originalmente como un terreno de juego lingüístico para la infancia. Por eso maneja con mucha potencia las cadenas y las «listas» (un conjunto de «elementos»), como [pig duck cow] o [[Bob 53][Frank 22][Sue 34]]. Hay diversas primitivas para construir, ordenar y reordenar listas y cadenas, que en Logo se llaman «palabras».

  • Hemos añadido listas «blandas», que se «resuelven» (o evalúan) en tiempo de ejecución. Estas listas van entre llaves en lugar de corchetes: {xpos ypos zpos} {hours minutes seconds}
  • Hemos añadido arreglos más tradicionales en forma de tables. Las tablas son arreglos predefinidos de x y (z). Su contenido se lee y se escribe con cell y putcell.
  • También hay almacenamiento de datos por posición, en forma de zones y sectors.
  • Puedes guardar y recuperar datos de archivos.
  • Puedes mostrar texto en distintas fuentes, tamaños y colores.

La tortuga se añadió a Logo más tarde, pero acabó siendo su rasgo más reconocible. La tortuga es un «cursor» gráfico que se mueve con respecto a sí mismo, a diferencia de otros sistemas gráficos «absolutos» (aunque en Logo también puedes trabajar en absoluto). Le dices a la tortuga que avance y que gire, y lo hace en relación con su posición y su orientación.

En turtleSpaces hemos añadido a las tortugas mucha funcionalidad adicional:

  • La tortuga puede moverse en tres dimensiones. Esto significa que, además de forward , back , left y right , existen up , down , rollleft , rollright. Por comodidad hemos añadido también raise , lower , slideleft y slideright.
  • position devuelve la ubicación de la tortuga con tres coordenadas, mientras que el tradicional pos devuelve 2 (x, y)
  • Junto a heading , setheading hemos añadido pitch , setpitch y roll , setroll
  • orientation , setorientation fija las tres a la vez, según setorientationorder , que indica el orden en que se aplican los tres parámetros de orientación (heading , pitch y roll) (¡maldito seas, Euler!)
  • Para una orientación más fiable se pueden usar vectors , setvectors ; también tenemos una variedad de primitivas relacionadas con vectores.
  • Puedes fijar un anchorpoint de órbita y luego orbit ar a su alrededor en grados. Es utilísimo para las cámaras y para dibujar patrones interesantes.
  • Puedes crear tortugas nuevas, ya sean «persistentes» con la primitiva newturtle , o efímeras con hatch , cuya salida se puede merge ar con la de su madre**.** Puedes averiguar dónde están unas tortugas respecto a otras con near , inside ,facingp , location y otras.
  • Puedes fijar el «modelo» de una tortuga con cualquier código de dibujo de Logo mediante tags , que permiten «acotar» tramos de la «traza» de una tortuga (su salida gráfica), y usarlos como modelos o activarlos y desactivarlos. Las trazas también se pueden copiar, cargar y guardar. A los modelos se les pueden anteponer comandos arbitrarios con setpremodel , lo que permite cambiar la orientación del modelo cuando haga falta.
  • Puedes deshacer lo último que hizo una tortuga con backtrack , y convertir la traza de una tortuga en un procedimiento con assemble , lo que permite crear modelos «sobre la marcha».

Las tortugas pueden ocupar varios space s, y pueden repartirse entre ellos (newspace selectspace). Cada espacio es un lienzo tridimensional infinito.

Cualquier tortuga puede ser una cámara, elegida con setview. Puedes cambiar la posición de la cámara respecto a su tortuga con setviewpoint. Las tortugas también actúan como luces: pueden ser un foco, una luz puntual o ninguna luz.

Los procedimientos y las variables (containers), junto con varios ajustes, son propios de cada tortuga. Puedes share contenedores entre tortugas, y compartir procedimientos mediante la tortuga especial libby (biblioteca).

A las tortugas las «conducen» los workers , que son hilos de proceso. Un worker puede conducir varias tortugas (una tras otra), o varios workers pueden conducir varias tortugas. ¡Varios workers pueden (intentar) conducir la misma tortuga! Workers y tortugas no son lo mismo. Piensa en las tortugas como coches, y en los workers como conductores.

Puedes conectarte por telnet a turtleSpaces y manejar un worker desde un terminal u otra aplicación (API).

Mientras que las tortugas de Logo tradicionales solo pueden trazar líneas o rellenar espacios, como turtleSpaces se basa en OpenGL disponemos de otras muchas shapes que se pueden crear, entre ellas:

  • shard
  • pinshard
  • voxel
  • voxeloid
  • ramp
  • tent
  • sphere
  • sphereslice
  • cutsphere
  • cutsphereslice
  • spheroid
  • spheroidslice
  • cutspheroid
  • cutspheroidslice
  • icosphere
  • icospheroid
  • amigaball
  • amigaballoid
  • cylinder
  • cylinderslice
  • cylinderarc
  • cylinderarcslice
  • cylindroid
  • cylindroidslice
  • cylindroidarc
  • cylindroidarcslice
  • duocylindrdoid
  • tube
  • tubearc
  • tubeslice
  • tubearcslice
  • tuboid
  • tuboidarc
  • tuboidslice
  • tuboidarcslice
  • duotuboid
  • cone
  • coneslice
  • cutcone
  • cutconeslice
  • conoid
  • conoidslice
  • cutconoid
  • cutconoidslice
  • duocutconoid
  • funnel
  • funnelslice
  • cutfunnel
  • cutfunnelslice
  • cutfunneloidslice
  • funneloid
  • funneloidslice
  • cutfunneloid
  • duocutfunneloid
  • pyramid
  • pyramoid
  • dome
  • domoid
  • torus
  • torusslice
  • toroid
  • toroidslice
  • tetrahedron
  • tetrahedroid
  • octahedron
  • octahedroid
  • dodecahedron
  • dodecahedroid
  • mark
  • inscribe
  • typeset

Puedes speckle (o pixelar al estilo Minecraft) voxels y quads. Puedes crear gráficos basados en píxeles (en 2 y 3 dimensiones) y usarlos como speck

Entre las primitivas de sonido están la tradicional toot (tone), noise (que genera ruido blanco), playnotes , y puedes usar playmusic para reproducir música creada con el tracker integrado. También puedes usar el sintetizador de voz de tu sistema operativo con say (macOS y Linux)

turtleSpace tiene usuarios. Para usar turtleSpaces «inicias sesión» como usuario.

Los espacios de trabajo de los usuarios se guardan como carpetas «turtleSpace» (TSP). Esas carpetas guardan cada cambio que haces en los procedimientos y permiten volver a cualquier fase del desarrollo (undo , redo). Lo que escribes en el indicador interactivo también se guarda.

Las instantáneas se crean al hacer save o takesnapshot : el punto de guardado es el estado al que se restaura el espacio de trabajo cuando se carga. Pero puedes seguir desarrollando y volver al estado «actual» con load autosave. Puedes crear una «portada» persistente (que se usa en el cat álogo) con takecover

El indicador interactivo tiene un historial que se puede leer mediante código (historycount historyitem historylist).

El recorrido de bienvenida

La primera vez que abres el IDE, Shelly la tortuga te lo enseña: la barra de menús, el espacio de trabajo, los controles de ejecución, la consola, la vista 3D y los Ejemplos. Dura más o menos un minuto, y Shelly puede leerlo en voz alta. Para verlo otra vez, elige Ayuda → Bienvenida. También puedes leer el mismo recorrido en la web.

Shelly, la asistente de errores

Cuando un programa se detiene con un error, Shelly aparece y ofrece que Claude te lo explique. ¿Qué significa esto? explica el error en general. Explícalo en mi código explica qué ha fallado en tu propio programa. Prueba con una errata:

La ayuda de Shelly con los errores aparece cuando has iniciado sesión.

Pregúntale a Claude

Con la sesión iniciada, el editor tiene una pestaña Claude, el asistente de código con IA, donde puedes hacer preguntas sobre Logo y sobre tu programa. El botón redondo de Claude, arriba a la derecha del editor de texto y del espacio de Bloques, ofrece tres opciones: Comment procedure añade comentarios al procedimiento, Explain with Claude explica el procedimiento o todo el programa con palabras sencillas, y Teach Me How lo convierte en un Turtorial.

Las respuestas de la IA pueden equivocarse, así que compruébalas. Consulta AI features en la Política de privacidad para saber qué se envía.

El Turtorial

Un Turtorial es una lección que Shelly prepara a partir de un programa. En lugar de darte la respuesta, te guía para que construyas el programa tú mismo, paso a paso, con pistas, preguntas rápidas y un botón Revisar mi trabajo. Se ajusta al nivel de quien aprende según las insignias que ha conseguido; si no sabe nada, supone que empiezas desde cero.

El Turtorial empieza en un espacio de trabajo vacío, así que si tienes cambios sin guardar te pide guardarlos antes. Si lo dejas a medias, elige Ayuda → Resume para seguir donde lo dejaste en el mismo navegador. Necesitas haber iniciado sesión.

La propuesta del día

¿Buscas una idea? Cada día hay una palabra creativa nueva, que aparece en la consola al abrir el IDE. La palabra cambia a medianoche UTC. Haz algo sobre ella, márcalo con Propuesta de hoy al publicarlo y busca en la galería lo que han hecho los demás hoy.

Cinco idiomas

El IDE y esta web están disponibles en English, Español, Français, 日本語 y Polski. Elige el idioma en Ajustes → Idioma. Los comandos de Logo siguen en inglés en todos los idiomas, así que los ejemplos de código funcionan en todas partes.