Il Linguaggio Logo

La seguente citazione del libro di "Mindstorms" scritto nel 1980 da Seymour Papert indica i tre criteri ch eindividuano una "nuova Matematica" per i bambini:

Turtle geometry started with the goal of fitting children. Its primary design criterion was to be appropriable (fatta propria). Of course it had to have serious mathematical content, but we shall see that appropriability and serious mathematical content are not at all incompatible . On the contrary: We shall end up understanding that some of the most personal knowledge is also the most profoundly mathematical. In many ways mathematics — for example the mathematics of space and movement and repetitive patterns of action — is what comes naturally to most children . It is into this mathematics that we sink the tap-root of Turtle geometry. As my colleagues and I have worked through these ideas, a number of principles have given more structure to the concept of an appropriable mathematics.
First: there was the continuity principle: The mathematics must be continuous with well established personal knowledge from which it can inherit a sense of warmth and value as well as "cognitive" competence.

Then there was the power principle: It must empower the learner to perform personally meaningful projects that could not be done without it.

Finally there was the principle of cultural resonance: The topic must make sense in terms of a larger social context.
I have spoken of Turtle geometry making sense to children. But it will not truly make sense to children unless it is accepted by adults too. A dignified mathematics for children cannot be something we permit ourselves to inflict on children, like unpleasant medicine, although we see no reason to take it ourselves.

TurtleScript

Il linguaggio Logo (Wikipedia - Linguaggio Logo (informatica)) nasce con un forte orientamento alla grafica ed una delle sue pi\xF9 famose applicazioni si concretizza in Turtle Script, un linguaggio che permette attraverso un set di semplici comandi tratti dal linguaggio Logo stesso di spostare una tartaruga lungo una finestra di osservazione tracciando segmenti su di questa.

TurtleScript, modalit\xE0 di disegno

"La geometria della tartaruga si differenzia dal modo tradizionale di disegnare al computer perch\xE9 descrive i percorsi "dall'interno" piuttosto che "dall'esterno" o "dall'alto". Ad esempio dicendo "gira a destra" non si esprime una direzione assoluta, ma una direzione relativa all'orientamento corrente della tartaruga, dicendo "vai avanti di 10 passi" ci si riferisce alla posizione e alla direzione correnti. Questo approccio ha molti vantaggi, ad esempio disegnare un quadrato inclinato \xE8 facile come disegnare un quadrato con i lati orizzontali e verticali: la sequenza delle istruzioni sar\xE0 la stessa, cambier\xE0 solo la posizione (inclinazione) iniziale della tartaruga. Un altro vantaggio \xE8 di carattere pedagogico : questo modo di disegnare, infatti, \xE8 consono all'esperienza del ragazzo, poich\xE9 \xE8 analogo al modo di muoversi nello spazio."

TurtleScript, riflessioni

Sebbene la semplicit\xE0 di TurtleScript sia evidente quando si ha la necessit\xE0 di realizzare pattern particolarmente complessi la "geometria della tartaruga" pu\xF2 rivelarsi anti-intuitiva o nel peggiore dei casi limitante. Il problema di disegnare una linea che congiunga due punti dati della finestra di osservazione potrebbe essere approcciato spostando la tartaruga nel primo punto, inclinarla dell'angolo adeguato in modo che punti verso il secondo punto e farla avanzare della distanza tra i due punti. Ci\xF2 rende evidente che anche problemi intuitivi possano richiedere competenze di geometria analitica o di trigonometria non banali per essere risolti. Il linguaggio Logo pu\xF2 essere utile in quanto fornisce immediato feedback della sequenza di istruzioni proposte dal programmatore ma al contempo pu\xF2 risultare troppo lontano dalla metodologia standard di disegno su canvas propria della maggior parte dei linguaggi di programmazione rendendo a posteriori il passo da esso ad un nuovo linguaggio pi\xF9 arduo del dovuto. Mancando inoltre di strutture dati complesse e di un sistema per la creazione di strutture dati derivate TurtleScript si rivela inadatto all'implementazione degli algoritmi pi\xF9 diffusi e formativi. Il linguaggio Logo pu\xF2 essere un ottimo punto di partenza per i primi mesi di studio dell'informatica ma alla lunga potrebbe rivelarsi inadeguato o addirittura dannoso.

Queste riflessioni possono avere come sboco naturale la "destrutturazione" del linguaggio e la sua ricomposizione in modo da

  • mantenere gli aspetti pedagogici positivi ampliandoli con le vicinanza al metalinguaggio originario
  • estendere le capacita' del linguaggio

TS_AndryakLib, una libreria per turtleScript

Alla luce delle riflessioni sul linguaggio TurtleScript \xE8 stata realizzata una libreria che permette agli studenti di sfruttare unitamente alla tecnica di disegno per descrizione dei percorsi dall'interno anche quella dall'esterno. Tale libreria sviluppata da Andrea Aquino \xE8 piuttosto semplice e mette a disposizione dell'utilizzatore variabili extra che normalmente l'interprete del linguaggio tiene per s\xE8 (inclinazione della tartaruga, posizione della tartaruga sulla Canvas, stato della penna). Attraverso le nuove funzioni drawline, drawlineto e drawcircle si pu\xF2 rappresentare un segmento o un cerchio in un punto qualsiasi dell'area di disegno senza modificare la posizione o l'orientamento della tartaruga. Le informazioni riguardo utilizzo e funzionamento della libreria possono essere trovate nella documentazione proposta di seguito come allegato.

TS_AndryakLib.turtle

TS_AndryakLib_documentazione.txt

ANEL (Anel Non E' Logo) in notazione BNF

Puo valere la pena fare un passo in avanti? Speriamo Si puo' sviluppare il tentativo di usare il Logo per insegnare i principi dei linguaggi e dei compilatori in una scuola superiore. Il primo passo e' la sua definizione usando la notazione BNF, se vuoi qualche approfondimento vai alla pagina NotazioneBnf.

Per il significaato dei metasimboli usati fate riferimento qui.

In questa formulazione non esistono possibilit\xE0 di istruzioni di controllo annidate

<Stringa>      ::= """{ Qualsiasi carattere }"""

<Numero>       ::= [ "+"|"-" ] { <cifra> } "," { <cifra> } [ "E" | "D" | "e" | "d" {<cifra>} ]

<Nome>         ::= <lettera> { <cifra> | <lettera> | "_" }

<Assegnazione> ::=  <Nome> "=" <Espr>

<Espr>         ::=  | <Nome> | FNCT '(' <Espr> ')' | <Espr> '+' <Espr> | <Espr> '-' <Espr> 
                    | <Espr> '*' <Espr> | <Espr> '/' <Espr> 
                    | '-' <Espr>  | <Espr> '^' <Espr>  | '(' <Espr> ')' 
                    | not <Espr>  | <Espr> 'e' <Espr>  | <Espr> 'o' <Espr>
                    | <Espr> < <Espr> | <Espr> <= <Espr> 
                    | <Espr> > <Espr> | <Espr> => <Espr>


<Azione>       ::= avanti | indietro | sinistra | destra | direzione | centro | vai | vaiorizz | vaivert 
                   | pennasu | pennagiu | spessorepenna | colorepenna | dimensionesfondo | coloresfondo 
                   | attorno | muro | pulisci | ricomincia | mostra | nascondi | scrivi |dimensionecarattere 
                   | casuale | messaggio | finestrainserimento

<Comando>      ::=  <Azione> { <Espr> ["," <Espr> ] }

<Comando_se>   ::= se <Espr>  "["  { <Comando> } "]"   [  altrimenti  "["{ <Comando> }"]"   ]

<Comando_mentre>::= mentre <Espr> "[" { <Comando> } "]" 

<Comando_per>   ::= per <Assegnazione> finoa <Espr>  "[" { <Comando> } "]" 

Bison Parser

Bison \xE8 un generatore di Parser (decodificatore) per " Context-free grammar " di tipo LALR[1] (Look-Ahead LR parsers),

In altri termini un decodificatore LALR cerca di individuare per primo l'elemento piu' semplice presente nella "frase", partendo da destra, per poi risalire generando "l'albero sintattico" muovendosi da Destra a Sinistra.

Rispetto alla notazione BNF in Bison il termine "terminal symbol" viene usato per qualsiasi elemento sintattico non ulteriormente suddivisibile (ad esclusione chiaramente dei caratteri. Un "terminal symbol" viene indicato come "token" mentre un generico "raggruppamento" di construtti \xE8 indicato come "non-terminal symbol". La definizione "linguistica" \xE8 leggermente differente.

Qui c'\xE8 il manuale online http://www.gnu.org/software/bison/manual/bison.html

Dare un'occhiata a questo thread

http://unix.derkeiler.com/Newsgroups/comp.unix.programmer/2004-08/0572.html

http://www.scarpaz.com/2005-Didattica/index.html

Training

Alcuni link:

-- RobertoBernetti - 20 Jan 2011
Topic attachments
I Attachment Action Size Date Who Comment
TS_AndryakLib.turtleturtle TS_AndryakLib.turtle manage 2 K 22 Feb 2011 - 16:00 UnknownUser Libreria TS_AndryakLib per TurtleScript
TS_AndryakLib_documentazione.txttxt TS_AndryakLib_documentazione.txt manage 2 K 22 Feb 2011 - 16:03 UnknownUser Documentazione della libreria TS_AndryakLib per TurtleScript
Topic revision: r1 - 22 Feb 2017, UnknownUser
This site is powered by FoswikiCreative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License1999-2025
Ideas, requests, problems regarding this site? Send feedback