SlideShare una empresa de Scribd logo
1 de 4
Una aproximación a la Didáctica del Logo. (parte 2)

Enrique Araújoviedo (2001): Foro Local de Informática Educativa, Localidad Octava. Bogotá.



Logo es un lenguaje basado en listas. Pero realmente es poco lo que se muestra de él sobre
esto. Casi todos los tratados o trabajos están basados en su capacidad gráfica, de la que no
carecen –hoy por hoy- la mayoría de los lenguajes de programación. Por tanto no vamos a
resaltar -pero sí utilizar su capacidad gráfica, que no podemos desconocerlo, es excepcional-
en éste trabajo esta potencialidad sino preocuparnos un poco más en esa ventaja que tiene
sobre muchos lenguajes maduros y experimentados. Logo, por supuesto es un lenguaje
maduro y experimentado, pero tiene un adalid que son las listas y las capacidades mentales
que requieren para su tratamiento. Hé visto recientemente un trabajo sobre cómo abordar el
trabajo gráfico con Logo utilizando diagramas de flujo; es un gran esfuerzo, pero muy
reforzado. Los diagramas de flujo (libres) no son una buena estructura para abordar la
programación en Logo y en general los lenguajes basados en listas como Lisp.

La pretensión de éste apartado es mostrar cómo aprovechar el potencial de Logo (la
programación en estructuras de listas) para desarrollar un tipo de pensamiento específico: el
heurísitico.

Los docentes de informática sabemos que el lenguaje, por antonomasia para enseñar a
programar es el Lenguaje Pascal; hoy existen versiones de lenguajes libres muy buenas como
Léxico, sin embargo, haciendo a un lado la discusión acerca de cómo empezar a enseñar a
programar –cuando de enseñar a programar se trata- muchos creemos que Logo en la etapa
primaria cumple cabalmente las expectativas tanto de la estructuración de la programación
como las de desarrollo de pensamiento. Igualmente mucha gente defiende que el lenguaje que
hay que enseñar es el C++ -cosa que no discuto porque comparto, pero en una etapa final de la
Educación Básica-. De manera semejante, creo que es horrendo enseñar VisualBasic –no
porque sea un lenguaje malo; no, todo lo contrario, es un lenguaje profesional que requiere
madurez para obtener resultados que ameriten su uso; cosa parecida pasa con Java-.
Retomando nuestro asunto que es la formación inicial en la programación y en esto hacemos
alusión a enseñar a programar a niños entre los 8 y los 12 años. En este espacio son también
muy buenos entornos de trabajo como como KPL (basado en lenguaje Basic) y scracth (basado
en lenguaje Logo). Pero una cosa son los entornos de trabajo y otra bien diferente son las IDE
(los ambientes de desarrollo). En éstas últimas por ejemplo, existe la posibilidad de la
compilación y por tanto la ejecución del producto independiente del entorno.

Enseñar a programar a los niños y jóvenes con Logo ha seguido una directriz, que consiste en
enseñar a elaborar figuras según una secuencia de comandos. Cuando las figuras son básicas o
que requieren un patrón predeterminado, es decir con una geometría a lo más definidas a
patrones de simetría axial, o grupos básicos la dificultad es mínima; pero cuando requiere de
estructuras geométricas más exigentes (teselaciones, fractales,…) el ejercicio de la
programación se vuelve engorroso y tortuoso en la medida que se requieren fuertes
conocimientos geométricos previos. En este sentido el fracaso no radica en el lenguaje sino en
su didáctica; en pretender abordar un desarrollo sin los concebidos prerrequisitos
geométricos. Surge la pregunta: ¿se debe tener fuertes conocimientos geométricos para
aprender a programar en Logo? Antes de responder, debe aclararse que una cosa es enseñar a
programar con Logo y otra es enseñar a programar en Logo. El objetivo de la enseñanza de la
programación es la primera; pues como se manifestó arriba se puede “enseñar a programar
con Pascal”, “se puede “enseñar a programar con C++”, se puede “enseñar a programar con
Delphi”, etc. El fin último es enseñar a programar, el lenguaje es la herramienta; el medio. Pero
si de lo que se trata es de enseñar el lenguaje como tal, se requieren precisamente esas
estructuras de programación y otros recursos como la diagramación libre, la estructurada y en
general los lenguajes de representación. Aprender un lenguaje de programación se puede
hacer desde cero o desde el púlpito de un Gurú. Mucha gente, después de haber trabajado por
años con un lenguaje, tuvo que aprender un nuevo lenguaje en pocas semanas; de no haber
tenido esas estructuras de programación habrían durado mucho más e incluso tardar años en
la reconversión. En alguna medida las didácticas de una segunda lengua se asemejan a las
didácticas de la enseñanza de un lenguaje de programación y éstas se diferencian de las
didácticas de la programación. Esto es que aprender a programar se puede realizar sin el
conocimiento de un lenguaje de programación, como lo propone precisamente el proyecto
Léxico. Así pues, enseñar Logo, a programar en Logo es muy diferente a aprender a programar
con Logo. Para aprender a programar con Logo, la metáfora de las figuras y el uso de una
geometría básica está bien; pero para aprender a programar en Logo, esa metáfora no es útil.
Primero porque realmente sí se requieren serios conocimientos geométricos, algebraicos y
topológicos y segundo porque en este enfoque no es evidente el trabajo subyacente de las
listas, que es la razón de ser de Logo. Los lenguajes, en general, tienen unos espacios de
definición: intentad hacer una página web con C++; intentad hacer un protocolo de red con
Cobol o Fortran (que se puede se puede, claro. A costa de que?) Semejante cosa ocurre con
Logo. Su diseño inicial y su pretensión no es ser un lenguaje profesional (quizás para ello esté
LISP) sino ser un lenguaje para la enseñanza y dentro de éste campo para desarrollar
estructuras de pensamiento. Tal vez por ello, muchos de los entornos Logo están elaborados
en lenguajes profesionales; un excelente entorno (Logográfico –argentino-) ha sido
desarrollado con VisualBasic; los clásicos (WMSLogo, FMSlogo) han sido desarrollados en C++;
un entorno muy bueno (el Xlogo) ha sido desarrollado en java y el último entorno que conocí
fue elaborado en Python. No conozco ningún compilador de C++ o Pascal elaborado en Logo
(eso sería como elaborar un diccionario de español elaborado en inglés).

Después de estas disquisiciones entremos en materia. Lo que pretendemos es enseñar a
programar en Logo y por ello su enfoque serán las listas. Tampoco vamos a ir muy lejos –el
tiempo y el espacio apremian-, solamente trataremos lo básico; lo necesario para trabajar con
listas.



LAS LISTAS

 En general, todos sabemos que es una lista; las entendemos como una secuencia (horizontal o
vertical) de expresiones que pueden estar ordenadas o no. Así, un directorio telefónico es una
lista con algunos tipos de identificadores para separar segmentos de expresiones. Un párrafo
es una lista de palabras con algunos tipos de identificadores para separar segmentos de
palabras. El párrafo tiene un identificador de inicio (usualmente un espacio previo y una letra
mayúscula) y otro indicador de final (usualmente el punto aparte y un espacio posterior). Un
“punto seguido” es un indicador de separación de un segmento del párrafo y divide el párrafo,
pero no lo concluye; cosa semejante podría decirse de la “coma” y el “punto y coma”. Un
“espacio en blanco” es un delimitador de separación.

En Logo las listas están asociadas a un tipo de estructuras arbóreas (ver artículo sobre
estructuras en árbol) que nos permiten establecer la secuencia de los elementos que contiene
la lista. Una lista en Logo tiene un identificador de inicio (el paréntesis cuadrado “[“ ) y un
identificador de terminación (el paréntesis cuadrado “]“ ). Los elementos de la lista deben

una relación matemática :         → ℕcon el conjunto de elementos de la lista. Dos listas son
estar contenidos entre estos dos identificadores. Los elementos están ordenados de acuerdo a

diferentes si dadas :       → ℕ y      :     → ℕ se tiene que       ≠ . Más específicamente
                                     ,

diríamos que       y deben ser tales que :        →     ⊊ℕ y      :   →     ⊊ con ≠ .
                                                                               ℕ

Una lista puede ser vacía. En este caso su único elemento es el “caracter en blanco”. El
“caracter en blanco” o “espacio en blanco” sólo se considera como elemento en éste único
caso, en los demás se considera como un indicador de separación entre elementos. Es claro
pues que no se puede utilizar el espacio en blanco dos veces seguidas para indicar por
ejemplo: (caracter)(espacio en blanco)(espacio en blanco)(caracter). Pues esto sería lo mismo
que: (caracter)(espacio en blanco)(caracter). Y por tanto no se admite: (espacio en
blanco)(espacio en blanco)(espacio en blanco)(espacio en blanco)…(espacio en blanco)(espacio
en blanco). Ya que todos ellos equivaldrían a uno solo.

Logo además de considerar las listas, dispone de otros tipos de datos como las “palabras”.
Una palabra es un conjunto de caracteres (letras, números, caracteres especiales:
alfanuméricos, símbolos de puntuación, símbolos de acento, etc.). Se tiene pues que el
“carácter en blanco” define la “palabra vacía”. Ejemplos de palabras serían: a, 4, color,
amarillo, ioki, aníbalnicolás, siuleuquirneojuaraodeivo, a2009m11d26, 1+4=5, 9^2igual81,
unodostres. Para el intérprete del lenguaje Logo (que en adelante llamaremos simplemente
Logo) una palabra puede ser cualquier cosa que contenga un caracter o muchos siempre y
cuando no estén separados por el delimitador “espacio en blanco”. A su vez una lista no es
más que un conjunto de palabras o de listas o de combinaciones de palabras y listas.

Existen muchas definiciones de lista.

La primera y más elemental es decir que:

Definición 1: Una lista es un conjunto de palabras.

Ejemplos: a) [ a e i o u]; b) [ 1 2 3 4]; c) [ a A7 i(8) águila uh!]; d) [ … y Aladino dijo: ábrete
sésamo!]; e) [ uno dos tres]; f) [ uno tres dos]; g) [ 1 dos 3]; h) [ unodostres]; i) [ ].

Es claro que las listas (e) y (f) son distintas porque aunque los elementos son los mismos, el
orden es distinto. En las listas (e) y (g) los elementos son distintos; en la lista (h), hay un solo
elemento, lo mismo que en la lista (i).
Esta definición es bastante débil por cuanto no admite listas como:

a) [ a [ e i o u] ]

b) [ a [ e i] o [u] ]

c) [ [ ] [ a [ e ] ] [ [ i ] [ [o] ] [u] ]

Una definición más precisa sería:

Definición 2: Secuencia ordenada de palabras y/o listas delimitadas entre los indicadores “[“ y
“]”.

Más contenido relacionado

Destacado (7)

Web summit presentation slideshare
Web summit presentation   slideshareWeb summit presentation   slideshare
Web summit presentation slideshare
 
Maapa codigo
Maapa codigoMaapa codigo
Maapa codigo
 
Boudica
BoudicaBoudica
Boudica
 
cloud computing
cloud computingcloud computing
cloud computing
 
Catálogo yves rocher campaña 16, 2014
Catálogo yves rocher campaña 16, 2014Catálogo yves rocher campaña 16, 2014
Catálogo yves rocher campaña 16, 2014
 
Catálogo flormar campaña 9, 2015
Catálogo flormar campaña 9, 2015Catálogo flormar campaña 9, 2015
Catálogo flormar campaña 9, 2015
 
Catálogo yves rocher campaña 9, 2015
Catálogo yves rocher campaña 9, 2015Catálogo yves rocher campaña 9, 2015
Catálogo yves rocher campaña 9, 2015
 

Similar a Aproximación a la Didactica del Logo(Parte2)

Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prolog
Anderipe Pinto
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
liberaunlibroupeg
 
presentacindslintro-151124180611-lva1-app6891.pdf
presentacindslintro-151124180611-lva1-app6891.pdfpresentacindslintro-151124180611-lva1-app6891.pdf
presentacindslintro-151124180611-lva1-app6891.pdf
FranciscoBlancoFis
 

Similar a Aproximación a la Didactica del Logo(Parte2) (20)

Proyecto
ProyectoProyecto
Proyecto
 
Tutorial basico prolog
Tutorial basico prologTutorial basico prolog
Tutorial basico prolog
 
Argentina Programa Apendix parte 1.pdf
Argentina Programa Apendix parte 1.pdfArgentina Programa Apendix parte 1.pdf
Argentina Programa Apendix parte 1.pdf
 
lenguaje y programacion
lenguaje y programacionlenguaje y programacion
lenguaje y programacion
 
POO
POOPOO
POO
 
Automatas
AutomatasAutomatas
Automatas
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 
Resumen Capitulo 1 - Sebesta
Resumen Capitulo 1 - Sebesta Resumen Capitulo 1 - Sebesta
Resumen Capitulo 1 - Sebesta
 
Manual de-java
Manual de-javaManual de-java
Manual de-java
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a ObjetosIntroduccion a la Programacion Orientada a Objetos
Introduccion a la Programacion Orientada a Objetos
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetosIntroduccion a la programacion orientada a objetos
Introduccion a la programacion orientada a objetos
 
Introducción a los lenguajes de programación( imodulo)
Introducción a los lenguajes de programación( imodulo)Introducción a los lenguajes de programación( imodulo)
Introducción a los lenguajes de programación( imodulo)
 
Clase02 paradigmas
Clase02 paradigmasClase02 paradigmas
Clase02 paradigmas
 
presentacindslintro-151124180611-lva1-app6891.pdf
presentacindslintro-151124180611-lva1-app6891.pdfpresentacindslintro-151124180611-lva1-app6891.pdf
presentacindslintro-151124180611-lva1-app6891.pdf
 
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducción a DSL (Lenguajes Específicos de Dominios) con PythonIntroducción a DSL (Lenguajes Específicos de Dominios) con Python
Introducción a DSL (Lenguajes Específicos de Dominios) con Python
 
Mario martinez alvarez
Mario martinez alvarezMario martinez alvarez
Mario martinez alvarez
 
3
33
3
 
Tipos De Datos
Tipos De DatosTipos De Datos
Tipos De Datos
 

Más de SED - Fundación Galileo para el Desarrollo del Pensamiento, la Ciencia y la Tecnología

Más de SED - Fundación Galileo para el Desarrollo del Pensamiento, la Ciencia y la Tecnología (20)

Andrea, la niña descomplicada
Andrea, la niña descomplicadaAndrea, la niña descomplicada
Andrea, la niña descomplicada
 
El profe molina (v1)
El profe molina (v1)El profe molina (v1)
El profe molina (v1)
 
Acuerdos men fecode sept10-2013
Acuerdos men fecode sept10-2013Acuerdos men fecode sept10-2013
Acuerdos men fecode sept10-2013
 
La lógica de la sopa
La lógica de la sopaLa lógica de la sopa
La lógica de la sopa
 
El oficio de maestro mi profesora gloria ojeda
El oficio de maestro   mi profesora gloria ojedaEl oficio de maestro   mi profesora gloria ojeda
El oficio de maestro mi profesora gloria ojeda
 
Mi modelo, la pedagogia involuta
Mi modelo, la pedagogia involutaMi modelo, la pedagogia involuta
Mi modelo, la pedagogia involuta
 
Modelo pedagógico orientado al diseño
Modelo pedagógico orientado al diseñoModelo pedagógico orientado al diseño
Modelo pedagógico orientado al diseño
 
Glifos (ingenia)
Glifos (ingenia)Glifos (ingenia)
Glifos (ingenia)
 
Micromundos Para Desocupados Parte Ii
Micromundos Para Desocupados Parte IiMicromundos Para Desocupados Parte Ii
Micromundos Para Desocupados Parte Ii
 
Micromundos Para Desocupados Parte I
Micromundos Para Desocupados Parte IMicromundos Para Desocupados Parte I
Micromundos Para Desocupados Parte I
 
De La Idea Al Proyecto(Parte4)
De La Idea Al Proyecto(Parte4)De La Idea Al Proyecto(Parte4)
De La Idea Al Proyecto(Parte4)
 
Comprender Y Aprender2
Comprender Y Aprender2Comprender Y Aprender2
Comprender Y Aprender2
 
De La Idea Al Proyecto(Parte1)
De La Idea Al Proyecto(Parte1)De La Idea Al Proyecto(Parte1)
De La Idea Al Proyecto(Parte1)
 
Pres Logo 01
Pres Logo 01Pres Logo 01
Pres Logo 01
 
Cerebro,Ojo,Mano
Cerebro,Ojo,ManoCerebro,Ojo,Mano
Cerebro,Ojo,Mano
 
Juego De Polinomios
Juego De PolinomiosJuego De Polinomios
Juego De Polinomios
 
Teoria De Las Hileras
Teoria De Las HilerasTeoria De Las Hileras
Teoria De Las Hileras
 
Juego De Polinomios
Juego De PolinomiosJuego De Polinomios
Juego De Polinomios
 
Hileras De Dominos (Ejercicios Propuestos)
Hileras De Dominos (Ejercicios Propuestos)Hileras De Dominos (Ejercicios Propuestos)
Hileras De Dominos (Ejercicios Propuestos)
 
Aulas Inteligentes -Cuento-
Aulas Inteligentes -Cuento-Aulas Inteligentes -Cuento-
Aulas Inteligentes -Cuento-
 

Último

RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
amelia poma
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
jlorentemartos
 

Último (20)

La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPCTRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
TRABAJO FINAL TOPOGRAFÍA COMPLETO DE LA UPC
 
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACIONRESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
RESOLUCIÓN VICEMINISTERIAL 00048 - 2024 EVALUACION
 
Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024Tema 19. Inmunología y el sistema inmunitario 2024
Tema 19. Inmunología y el sistema inmunitario 2024
 
Biografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdfBiografía de Charles Coulomb física .pdf
Biografía de Charles Coulomb física .pdf
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 2º de la ESO
 
Novena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan EudesNovena de Pentecostés con textos de san Juan Eudes
Novena de Pentecostés con textos de san Juan Eudes
 
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...Louis Jean François Lagrenée.  Erotismo y sensualidad. El erotismo en la Hist...
Louis Jean François Lagrenée. Erotismo y sensualidad. El erotismo en la Hist...
 
Usos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicasUsos y desusos de la inteligencia artificial en revistas científicas
Usos y desusos de la inteligencia artificial en revistas científicas
 
Desarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por ValoresDesarrollo y Aplicación de la Administración por Valores
Desarrollo y Aplicación de la Administración por Valores
 
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
TEMA 14.DERIVACIONES ECONÓMICAS, SOCIALES Y POLÍTICAS DEL PROCESO DE INTEGRAC...
 
Posición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptxPosición astronómica y geográfica de Europa.pptx
Posición astronómica y geográfica de Europa.pptx
 
Linea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docxLinea del tiempo - Filosofos Cristianos.docx
Linea del tiempo - Filosofos Cristianos.docx
 
prostitución en España: una mirada integral!
prostitución en España: una mirada integral!prostitución en España: una mirada integral!
prostitución en España: una mirada integral!
 
Supuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docxSupuestos_prácticos_funciones.docx
Supuestos_prácticos_funciones.docx
 
Tema 11. Dinámica de la hidrosfera 2024
Tema 11.  Dinámica de la hidrosfera 2024Tema 11.  Dinámica de la hidrosfera 2024
Tema 11. Dinámica de la hidrosfera 2024
 
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESOPrueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
Prueba de evaluación Geografía e Historia Comunidad de Madrid 4ºESO
 
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptxLA LITERATURA DEL BARROCO 2023-2024pptx.pptx
LA LITERATURA DEL BARROCO 2023-2024pptx.pptx
 
AEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptxAEC 2. Aventura en el Antiguo Egipto.pptx
AEC 2. Aventura en el Antiguo Egipto.pptx
 
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptxCONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
CONCURSO NACIONAL JOSE MARIA ARGUEDAS.pptx
 

Aproximación a la Didactica del Logo(Parte2)

  • 1. Una aproximación a la Didáctica del Logo. (parte 2) Enrique Araújoviedo (2001): Foro Local de Informática Educativa, Localidad Octava. Bogotá. Logo es un lenguaje basado en listas. Pero realmente es poco lo que se muestra de él sobre esto. Casi todos los tratados o trabajos están basados en su capacidad gráfica, de la que no carecen –hoy por hoy- la mayoría de los lenguajes de programación. Por tanto no vamos a resaltar -pero sí utilizar su capacidad gráfica, que no podemos desconocerlo, es excepcional- en éste trabajo esta potencialidad sino preocuparnos un poco más en esa ventaja que tiene sobre muchos lenguajes maduros y experimentados. Logo, por supuesto es un lenguaje maduro y experimentado, pero tiene un adalid que son las listas y las capacidades mentales que requieren para su tratamiento. Hé visto recientemente un trabajo sobre cómo abordar el trabajo gráfico con Logo utilizando diagramas de flujo; es un gran esfuerzo, pero muy reforzado. Los diagramas de flujo (libres) no son una buena estructura para abordar la programación en Logo y en general los lenguajes basados en listas como Lisp. La pretensión de éste apartado es mostrar cómo aprovechar el potencial de Logo (la programación en estructuras de listas) para desarrollar un tipo de pensamiento específico: el heurísitico. Los docentes de informática sabemos que el lenguaje, por antonomasia para enseñar a programar es el Lenguaje Pascal; hoy existen versiones de lenguajes libres muy buenas como Léxico, sin embargo, haciendo a un lado la discusión acerca de cómo empezar a enseñar a programar –cuando de enseñar a programar se trata- muchos creemos que Logo en la etapa primaria cumple cabalmente las expectativas tanto de la estructuración de la programación como las de desarrollo de pensamiento. Igualmente mucha gente defiende que el lenguaje que hay que enseñar es el C++ -cosa que no discuto porque comparto, pero en una etapa final de la Educación Básica-. De manera semejante, creo que es horrendo enseñar VisualBasic –no porque sea un lenguaje malo; no, todo lo contrario, es un lenguaje profesional que requiere madurez para obtener resultados que ameriten su uso; cosa parecida pasa con Java-. Retomando nuestro asunto que es la formación inicial en la programación y en esto hacemos alusión a enseñar a programar a niños entre los 8 y los 12 años. En este espacio son también muy buenos entornos de trabajo como como KPL (basado en lenguaje Basic) y scracth (basado en lenguaje Logo). Pero una cosa son los entornos de trabajo y otra bien diferente son las IDE (los ambientes de desarrollo). En éstas últimas por ejemplo, existe la posibilidad de la compilación y por tanto la ejecución del producto independiente del entorno. Enseñar a programar a los niños y jóvenes con Logo ha seguido una directriz, que consiste en enseñar a elaborar figuras según una secuencia de comandos. Cuando las figuras son básicas o que requieren un patrón predeterminado, es decir con una geometría a lo más definidas a patrones de simetría axial, o grupos básicos la dificultad es mínima; pero cuando requiere de estructuras geométricas más exigentes (teselaciones, fractales,…) el ejercicio de la programación se vuelve engorroso y tortuoso en la medida que se requieren fuertes conocimientos geométricos previos. En este sentido el fracaso no radica en el lenguaje sino en
  • 2. su didáctica; en pretender abordar un desarrollo sin los concebidos prerrequisitos geométricos. Surge la pregunta: ¿se debe tener fuertes conocimientos geométricos para aprender a programar en Logo? Antes de responder, debe aclararse que una cosa es enseñar a programar con Logo y otra es enseñar a programar en Logo. El objetivo de la enseñanza de la programación es la primera; pues como se manifestó arriba se puede “enseñar a programar con Pascal”, “se puede “enseñar a programar con C++”, se puede “enseñar a programar con Delphi”, etc. El fin último es enseñar a programar, el lenguaje es la herramienta; el medio. Pero si de lo que se trata es de enseñar el lenguaje como tal, se requieren precisamente esas estructuras de programación y otros recursos como la diagramación libre, la estructurada y en general los lenguajes de representación. Aprender un lenguaje de programación se puede hacer desde cero o desde el púlpito de un Gurú. Mucha gente, después de haber trabajado por años con un lenguaje, tuvo que aprender un nuevo lenguaje en pocas semanas; de no haber tenido esas estructuras de programación habrían durado mucho más e incluso tardar años en la reconversión. En alguna medida las didácticas de una segunda lengua se asemejan a las didácticas de la enseñanza de un lenguaje de programación y éstas se diferencian de las didácticas de la programación. Esto es que aprender a programar se puede realizar sin el conocimiento de un lenguaje de programación, como lo propone precisamente el proyecto Léxico. Así pues, enseñar Logo, a programar en Logo es muy diferente a aprender a programar con Logo. Para aprender a programar con Logo, la metáfora de las figuras y el uso de una geometría básica está bien; pero para aprender a programar en Logo, esa metáfora no es útil. Primero porque realmente sí se requieren serios conocimientos geométricos, algebraicos y topológicos y segundo porque en este enfoque no es evidente el trabajo subyacente de las listas, que es la razón de ser de Logo. Los lenguajes, en general, tienen unos espacios de definición: intentad hacer una página web con C++; intentad hacer un protocolo de red con Cobol o Fortran (que se puede se puede, claro. A costa de que?) Semejante cosa ocurre con Logo. Su diseño inicial y su pretensión no es ser un lenguaje profesional (quizás para ello esté LISP) sino ser un lenguaje para la enseñanza y dentro de éste campo para desarrollar estructuras de pensamiento. Tal vez por ello, muchos de los entornos Logo están elaborados en lenguajes profesionales; un excelente entorno (Logográfico –argentino-) ha sido desarrollado con VisualBasic; los clásicos (WMSLogo, FMSlogo) han sido desarrollados en C++; un entorno muy bueno (el Xlogo) ha sido desarrollado en java y el último entorno que conocí fue elaborado en Python. No conozco ningún compilador de C++ o Pascal elaborado en Logo (eso sería como elaborar un diccionario de español elaborado en inglés). Después de estas disquisiciones entremos en materia. Lo que pretendemos es enseñar a programar en Logo y por ello su enfoque serán las listas. Tampoco vamos a ir muy lejos –el tiempo y el espacio apremian-, solamente trataremos lo básico; lo necesario para trabajar con listas. LAS LISTAS En general, todos sabemos que es una lista; las entendemos como una secuencia (horizontal o vertical) de expresiones que pueden estar ordenadas o no. Así, un directorio telefónico es una lista con algunos tipos de identificadores para separar segmentos de expresiones. Un párrafo
  • 3. es una lista de palabras con algunos tipos de identificadores para separar segmentos de palabras. El párrafo tiene un identificador de inicio (usualmente un espacio previo y una letra mayúscula) y otro indicador de final (usualmente el punto aparte y un espacio posterior). Un “punto seguido” es un indicador de separación de un segmento del párrafo y divide el párrafo, pero no lo concluye; cosa semejante podría decirse de la “coma” y el “punto y coma”. Un “espacio en blanco” es un delimitador de separación. En Logo las listas están asociadas a un tipo de estructuras arbóreas (ver artículo sobre estructuras en árbol) que nos permiten establecer la secuencia de los elementos que contiene la lista. Una lista en Logo tiene un identificador de inicio (el paréntesis cuadrado “[“ ) y un identificador de terminación (el paréntesis cuadrado “]“ ). Los elementos de la lista deben una relación matemática : → ℕcon el conjunto de elementos de la lista. Dos listas son estar contenidos entre estos dos identificadores. Los elementos están ordenados de acuerdo a diferentes si dadas : → ℕ y : → ℕ se tiene que ≠ . Más específicamente , diríamos que y deben ser tales que : → ⊊ℕ y : → ⊊ con ≠ . ℕ Una lista puede ser vacía. En este caso su único elemento es el “caracter en blanco”. El “caracter en blanco” o “espacio en blanco” sólo se considera como elemento en éste único caso, en los demás se considera como un indicador de separación entre elementos. Es claro pues que no se puede utilizar el espacio en blanco dos veces seguidas para indicar por ejemplo: (caracter)(espacio en blanco)(espacio en blanco)(caracter). Pues esto sería lo mismo que: (caracter)(espacio en blanco)(caracter). Y por tanto no se admite: (espacio en blanco)(espacio en blanco)(espacio en blanco)(espacio en blanco)…(espacio en blanco)(espacio en blanco). Ya que todos ellos equivaldrían a uno solo. Logo además de considerar las listas, dispone de otros tipos de datos como las “palabras”. Una palabra es un conjunto de caracteres (letras, números, caracteres especiales: alfanuméricos, símbolos de puntuación, símbolos de acento, etc.). Se tiene pues que el “carácter en blanco” define la “palabra vacía”. Ejemplos de palabras serían: a, 4, color, amarillo, ioki, aníbalnicolás, siuleuquirneojuaraodeivo, a2009m11d26, 1+4=5, 9^2igual81, unodostres. Para el intérprete del lenguaje Logo (que en adelante llamaremos simplemente Logo) una palabra puede ser cualquier cosa que contenga un caracter o muchos siempre y cuando no estén separados por el delimitador “espacio en blanco”. A su vez una lista no es más que un conjunto de palabras o de listas o de combinaciones de palabras y listas. Existen muchas definiciones de lista. La primera y más elemental es decir que: Definición 1: Una lista es un conjunto de palabras. Ejemplos: a) [ a e i o u]; b) [ 1 2 3 4]; c) [ a A7 i(8) águila uh!]; d) [ … y Aladino dijo: ábrete sésamo!]; e) [ uno dos tres]; f) [ uno tres dos]; g) [ 1 dos 3]; h) [ unodostres]; i) [ ]. Es claro que las listas (e) y (f) son distintas porque aunque los elementos son los mismos, el orden es distinto. En las listas (e) y (g) los elementos son distintos; en la lista (h), hay un solo elemento, lo mismo que en la lista (i).
  • 4. Esta definición es bastante débil por cuanto no admite listas como: a) [ a [ e i o u] ] b) [ a [ e i] o [u] ] c) [ [ ] [ a [ e ] ] [ [ i ] [ [o] ] [u] ] Una definición más precisa sería: Definición 2: Secuencia ordenada de palabras y/o listas delimitadas entre los indicadores “[“ y “]”.