Logo

Logo è un linguaggio di programmazione creato nel 1967 per fornire un ambiente di apprendimento della geometria (ma anche per permettere di giocare con parole e frasi).

All'origine del Logo c'è uno strano incontro: quello tra Seymour Papert, che era un matematico sudafricano che aveva studiato a Ginevra con lo psicologo ed epistemologo Jean Piaget, e due ricercatori in Intelligenza artificiale della società Bolt, Beranek e Newman nel Massachussetts: Wally Feurzig e Cynthia Salomon.

Logo è un linguaggio multiparadigma, derivato da Lisp (che esisteva da pochi anni) e centrato su alcune idee forti:

  • che il rapporto tra programmatore e computer non deve necessariamente essere quello tra un padrone che impartisce ordini e uno schiavo che li esegue, ma quello tra un insegnante e uno studente che apprende nuove parole
  • che si impara insegnando, cioè se si è in grado di insegnare qualcosa, allora la si è capita bene
  • che un linguaggio di programmazione più è simile ad una lingua naturale, più è espressivo e permette di arrivare facilmente a realizzare progetti complessi
/ul>.

In Logo viene rovesciato il rapporto tipico della situazione educativa, dove l'adulto sa e insegna e il bambino non sa e impara: qui è il bambino che insegna e il computer che impara. la definizione di una nuova procedura è vista come la spiegazione da parte del bambino al computer di cosa significa una certa parola. Infatti la parola chiave che introduce la definizione di una procedura è "Per" (sottinteso: fare). Se viene scritta un'istruzione errata, l'interprete Logo risponde "Non so cosa fare con XXX".

Di Logo esistono versioni che permettono ai bambini di utilizzare parole che appartengono alla loro lingua madre, un po' come i Linguaggi nazionali; questo da un lato aiuta i bambini anche piccoli a ricordare il significato di certe espressioni, e dall'altro permette ai bambini fornire alla Tartaruga un'identità di soggetto che capisce e risponde.

Ecoo quattro esempi di come può essere scritto un codice utilizzando Logo "adattato" nelle lingue nazionali:

Frammenti di codice in Logo in differenti lingue
Source: Originale
L'aspetto più conosciuto del Logo, con cui spesso si identifica, è però la Tartaruga, che per un certo periodo era proprio un robot con le ruote, ma presto divenne un simbolo grafico sullo schermo.

La caratteristica principale della Tartaruga è di essere un avatar che si muove interpretando le istruzioni in maniera soggettiva. Non si dice alla tartaruga "Vai alla posizione X, Y" e nemmeno "Vai verso est", ma "Girati verso destra di 90 gradi e vai avanti di 10 passi".

E' una geometria piana diversa da quella che si insegna a scuola, perché le figure geometriche vanno costruite per così dire dall'interno, utilizzando poche informazioni e alcuni vincoli. Ad esempio: ogni figura può essere chiusa se si gira di tante volte nella stessa direzione fino ad un totale di 360°.

La tartaruga - come avatar, cioè come robot programmabile - è stata ripresa oggi da tanti linguaggi e ambienti educativi (per esmepio Scratch e Snap!) anche se la metafora della programmazione non è più quella del dialogo e dell'insegnamento, ma quella della creazione di uno spettacolo su uno stage e non si usa più un linguaggio fatto di parole ma si dispongono blocchi colorati su un tavolo virtuale. In questo modo purtroppo si è persa una della caratteristiche più importanti di Logo.

L'idea di un automa programmabile è al centro di un'altra versione di Logo molto interessante: si tratta di NetLogo, che permette di generare centinaia o migliaia di "robot" contemporanei, a cui si possono assegnare proprietà e comportamenti diversi, e in questo modo simulare ambienti naturali o artificiali complessi in cui la situazione evolve in funzione dei rapporti tra gli attori: ad esempio, una pandemia.

L'idea che Logo sia un linguaggio semplice non deve trarre in inganno: Brian Harvey, un docente dell'Università di Berkeley, nel 1985 ha scritto un intero corso di programazione "Computer Science Logo style", in tre volumi, che usa il Logo come unico linguaggio e che se ne serve per andare molto oltre l'universo della tartaruga. I testi (ma anche i sorgenti) sono scaricabili gratuitamente, per uso personale, dal sito web di Brian Harvey.

Ad esempio, un capitolo del secondo volume è dedicato alla discussione di un programma che finge di essere uno psicoterapeuta, come aveva fatto Joseph Weizebaum nel 1966 per dimostrare quanto è facile cadere nell'inganno dell'attribuzione di un'intelligenza ai computer solo perché parlano (un po' come oggi Alexa...). Una tipica interazione il "dottore" procede così:

>Hello, I am the doctor. What can i do for you? My spirits are low. >Your spirits are low? I'm really depressed. >I'm sorry to hear you are depressed. It's because nobody likes me. >Really, nobody? That's right.
Queello che segue è un frammento del codice sorgente, in particolare quello che analizza ogni frase scritta dall'umano cercando di riconoscere dei pattern:
    ;; Choosing the rule and replying

    to analyze :sentence :keywords
        local [rules keyword]
        if emptyp :keywords [norules stop]
        make "keyword first :keywords
        make "rules gprop :keyword "rules
        if wordp first :rules ~
        [make "keyword first :rules make "rules gprop :keyword "rules]
        checkrules :keyword :rules
    end

    to checkrules :keyword :rules
        if not match first :rules :sentence ~
        [checkrules :keyword butfirst butfirst :rules stop]
        dorule first butfirst :rules
    end

    to dorule :rule
        localmake "print first gprop :keyword :rule
        pprop :keyword :rule lput :print butfirst gprop :keyword :rule
        if equalp :print "newkey [analyze :sentence butfirst :keywords stop]
        if wordp :print [checkrules :print gprop :print "rules stop]
        if equalp first :print "pre ~
        [analyze reconstruct first butfirst :print butfirst butfirst :print stop]
        print capitalize reconstruct :print
        memory :keyword :sentence
    end
Il codice completo si può scaricare dalla pagina web relativa ed eseguire con qualche interprete Logo, come UCBLogo, sviluppato dallo stesso Harvey e compilato per Windows oppure FMSLogo, che è una versione scritta in C++ da George Mills e aggiornata da David Costanzo, che a differenza dell'UCBLogo offre un'interfaccia grafica che ne facilita l'uso.

Esiste anche una versione di Logo che sta "dentro" Libre Office Writer, e non necessita di altro. Basta scrivere codice in una pagina di Writer e cliccare sulla freccia verde per eseguirlo.

Prossimo pannello:  Prolog



Versione: 02/02/2022 - 08:59:47

Parole: 493

Pannelli

Linguaggi                   
Linguaggi di programmazione 
Nomi dei linguaggi          
Caratteri e linguaggi       
Famiglie                    
Traduzione                  
COBOL                       
Lisp                        
APL                         
Perl                        
Javascript                  
Python                      
PHP                         
Ruby                        
Linguaggi educativi         
Pascal                      
Ada                         
Logo                        
Prolog                      
IEML                        
Linguaggi nazionali         
Linotte                     
Linguaggi esoterici         
Intercal                    
Brainfuck                   
Emmental                    
HQ9+                        
🔎