Original source: https://el.media.mit.edu/logo-foundation/what_is_logo/logo_programming.html
El lenguaje de programación Logo, un dialecto de Lisp, fue diseñado como una herramienta de aprendizaje. Sus características (interactividad, modularidad, extensibilidad, flexibilidad de tipos de datos) se derivan de este objetivo.
Interactividad
Aunque existen algunas versiones de Logo que se compilan, generalmente se implementa como un lenguaje interpretado. La interactividad de este enfoque proporciona al usuario retroalimentación inmediata sobre instrucciones individuales, ayudando así en el proceso de depuración y aprendizaje. Los mensajes de error son descriptivos. Por ejemplo
fowad
no se como avanzar
(La palabra fowad no es una primitiva, una de las palabras integradas de Logo, ni un procedimiento que haya definido).
adelante
No hay suficientes entradas para reenviar
(Ahora que la ha escrito correctamente, Logo conoce la palabra adelante , pero no puede ejecutar la instrucción porque adelante requiere información adicional.
adelante 100
(El logotipo está feliz. No hay ningún mensaje de error. La tortuga avanza 100 pasos).
Modularidad y extensibilidad
Los programas de logotipos suelen ser colecciones de pequeños procedimientos. Generalmente, los procedimientos se definen escribiéndolos en un editor de texto. La palabra especial to va seguida del nombre del procedimiento. Las líneas siguientes forman la definición del procedimiento. La palabra fin indica que has terminado.
En nuestro ejemplo de gráficos de tortuga definimos un procedimiento para dibujar un cuadrado.
al cuadrado
repetir 4 [adelante 50 derecha 90]
final
y lo utilizó como subprocedimiento de otro procedimiento
hasta florecer
repetir 36 [cuadro 10 derecho]
final
De manera similar, la flor podría ser un componente básico de algo más grande.
al jardín
repetir 25 [establecer flor en posición aleatoria]
final
No, set-random-position no es una primitiva, pero random lo es y también lo es setposition (o setpos o setxy ). O podrías escribir set-random-position usando forward y right con random .
Una vez que se define un procedimiento Logo, funciona como las primitivas Logo. De hecho, cuando miras los programas Logo no hay forma de saber qué palabras son primitivas y cuáles están definidas por el usuario a menos que conozcas esa implementación de Logo en particular. En nuestra muestra de lenguaje utilizamos el procedimiento de selección para seleccionar aleatoriamente un elemento de una lista, por ejemplo en el procedimiento quién.
a quién
elegir salida [Sandy Dale Dana Chris]
final
En algunas versiones de Logo pick es primitivo, mientras que en otras tienes que escribirlo tú mismo. ¿ Quién se vería y trabajaría de la misma manera en cualquier caso?
Logo le permite desarrollar proyectos complejos en pequeños pasos. La programación en Logo se realiza añadiendo vocabulario, enseñándole nuevas palabras en términos de palabras que ya conoce. En este sentido, es similar a la forma en que la gente aprende el lenguaje hablado.
Flexibilidad
Logo funciona con palabras y listas. La palabra de un logotipo es una cadena de caracteres. Una lista de logotipos es una colección ordenada de palabras o listas. Los números son palabras, pero son especiales porque puedes hacer cosas como aritmética con ellos.
Muchos lenguajes de programación son bastante estrictos al querer saber exactamente qué tipo de datos afirma estar utilizando. Esto hace las cosas más fáciles para la computadora, pero más difíciles para el programador. Antes de sumar un par de números, es posible que tengas que especificar si son números enteros o reales. La computadora necesita saber esas cosas. Pero la mayoría de la gente no piensa en que este logo se encargue de ello por usted. Cuando se le pide que haga aritmética, Logo simplemente lo hace.
imprimir 3 + 4
7
imprimir 3/4
.75
Si no estás familiarizado con Logo pero trabajas en otros lenguajes de programación, la siguiente secuencia puede que te sorprenda:
imprimir la palabra “manzana” salsa puré
de manzana
imprimir la palabra “3 “4
34
imprimir 12 + palabra “3 “4
46
Aquí hay un procedimiento recursivo que calcula factoriales:
a factorial :número
si :número = 1 [salida 1]
salida :número * factorial :número – 1
final
impresión factorial 3
6
impresión factorial 5
120
A continuación se muestra un procedimiento para invertir una lista de palabras:
para revertir: ¿cosas
si no son iguales? recuento: cosas 1
[salida primero: cosas]
[frase de salida al revés pero primero: cosas primero: cosas]
fin
imprimir reverso [manzanas y peras]
peras y manzanas
Quizás también quieras echar un vistazo a la interesante muestra del logotipo de Brian Harvey.
Mejoras
Las características que se acaban de ilustrar son comunes a todas las versiones de Logo. Algunas implementaciones de Logo incluyen funciones de lenguaje mejoradas.
Había un logotipo orientado a objetos llamado Object Logo para Macintosh.
MicroWorlds Logo incluye multitarea para que se puedan ejecutar varios procesos independientes simultáneamente. La misma capacidad se encuentra en el software de Control Lab, un producto del logotipo de LEGO. Un logotipo aún más paralelo es StarLogo.
En un logo tradicional la orden a la tortuga
repetir 9999 [adelante 1 derecha 1]
tomaría un tiempo ejecutarlo. La instrucción
repetir 9999 [adelante 1 derecha 1] imprimir “HOLA
Haría que apareciera la palabra HOLA después de que la tortuga terminara de moverse.
En el logotipo de MicroWorld escribiendo
iniciar [repetir 9999 [adelante 1 derecha 1]] imprimir “HOLA
haría que la tortuga se pusiera en marcha. La palabra HOLA aparecerá tan pronto como se inicie el primer proceso. O
para siempre [adelante 1 derecha 1] imprime “HOLA
iniciaría un proceso que continuaría hasta que lo detuvieras. Nuevamente, la palabra HOLA aparecerá tan pronto como se inicie el proceso de tortuga.
I’ve always been captivated by the wonders of science, particularly the intricate workings of the human mind. With a degree in psychology under my belt, I’ve delved deep into the realms of cognition, behavior, and everything in between. Pouring over academic papers and research studies has become somewhat of a passion of mine – there’s just something exhilarating about uncovering new insights and perspectives.