Scelte¶
Software libero¶
Cos’è il software libero, cosa non è il software libero.
Le quattro libertà:
- Libertà di eseguire il programma, per qualsiasi scopo.
- Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità.
- Libertà di ridistribuire copie in modo da aiutare il prossimo.
- Libertà di migliorare il programma e distribuirne pubblicamente i miglioramenti da voi apportati (e le vostre versioni modificate in genere), in modo tale che tutta la comunità ne tragga beneficio.
(vedi: http://www.gnu.org)
Licenze aperte¶
Cosa sono il le licenze Creative Commons (“copyleft”)?
Licenza libera Creative Commons:
- CC: Creative commons;
- BY: Attribuzione;
- SA: Condividi allo stesso modo;
- NC: Non commerciale;
- ND: Non opere derivate.
Attribuzione - Condividi allo stesso modo CC BY-SA
“Questa licenza permette a terzi di modificare, ottimizzare ed utilizzare la tua opera come base, anche commercialmente, fino a che ti diano il credito per la creazione originale e autorizza le loro nuove creazioni con i medesimi termini. Tutte le opere basate sulla tua porteranno la stessa licenza, quindi tutte le derivate permetteranno anche un uso commerciale. Questa è la licenza usata da Wikipedia, ed è consigliata per materiali che potrebbero beneficiare dell’incorporazione di contenuti da progetti come Wikipedia e similari.”
vedi: * http://it.wikipedia.org/wiki/Creative_Commons * http://creativecommons.org/licenses/
Linguaggio di programmazione¶
Quali caratteristiche deve avere il linguaggio nella didattica?
Deve:
- essere trasparente, cioè deve frapporre meno complicazioni possibili tra il problema e la soluzione;
- avere una sintassi semplice;
- essere potente in modo da poter crescere con l’alunno;
- essere sorretto da una progettazione attenta agli aspetti logici;
- avere strutture di dati e costrutti più vicini agli umani che alle macchine;
- permettere di esplorare e usare diversi paradigmi di programmazione;
- essere corredato da materiale didattico libero ed esempi a sorgente aperto;
- avere solide librerie dedicate agli usi più disparati;
- facile da ampliare e adattare ai propri scopi.
La geometria della tartaruga¶
Negli anni 80 dl secolo scorso, all’MIT Seymour Papert ha modificato un linguaggio dedicato alla soluzione di problemi di intelligenza artificiale per comandare un robottino che aveva una penna e permettere ai bambini di dare le istruzioni per realizzare dei disegni.
La tartaruga è un cursore grafico che può lasciare un segno quando si muove. La geometria della tartaruga è carattreizzata da avere un riferimento intrinseco cioè sono riferiti al cursore stesso e non ad un riferimento esterno.
I comandi base della geometria della tartaruga sono semplici:
- forward (avanti);
- back (indietro);
- right (destra);
- left (sinistra);
- penup (penna su);
- pendown (penna giù);
A partire da questi comandi si possono affrontare problemi con un ampio ventaglio di difficoltà, da quelli elementari a problemi che richiedono conoscenze matematiche elevate.
Possibilità¶
La mia proposta per questo modulo di informatica per l’insegnamento della matematica nella scuola secondaria di secondo grado è: Giocare con la grafica della tartaruga con un linguaggio di programmazione. Ma quale linguaggio?
- LibreLogo
- Python + pygraph
- Scratch
Vediamo di seguito un esempio sviluppato con questi tre strumenti.
LibreLogo¶
Il seguente programma scritto nel dialetto di Logo inserito in Libreoffice produce una “spirale” triangolare che ruota su se stesa:
to spirale
# Disegna una spirale.
repeat 200 [
forward repcount
left 121 ]
end
home clearscreen
penup forward 170 pendown
spirale
Il risultato è visibile in figura. Si può osservare il disegno stilizzato di una tartaruga in alto a destra.
Siti di riferimento per LibreLogo:
- extensions.libreoffice.org/extension-center/librelogo
- www.numbertext.org/logo/librelogo.pdf
- librelogo.org
- en.wikipedia.org/wiki/LibreLogo
Python + pygraph¶
In questo caso il programma è:
from pyturtle import TurtlePlane, Turtle
def spi():
"""Disegna una "spirale" poligonale."""
for lato in range(200):
tina.forward(lato)
tina.left(121)
tp = TurtlePlane()
tina = Turtle()
spi()
tp.mainloop()
Il risultato è quello visibile in figura in questo caso la “tartaruga”, cioè il puntatore grafico è ridotto ad un triangolino.
Siti di riferimento per Python - pygraph:
- www.python.org
- pygraph.readthedocs.org
- bitbucket.org/zambu/pygraph
- http://python4kids.net/
Scratch¶
Il linguaggio di programmazione Scratch non è del tutto testuale, ogni singolo comando è circondato da un blocco che lo identifica e che visualizza la funzione.
Lo stesso programma realizzato con Scratch è:
Il programmatore non scrive il programma ma assembla i blocchi corrispondenti alle istruzioni. Il risultato è una via di mezzo tra un programma e un diagramma di flusso.
Il risultato è quello riprodotto in figura qui la “tartaruga” è un oggetto sprite che può avere diverse rappresentazioni.
Siti di riferimento per Scratch:
- scratch.mit.edu
- wiildos.wikispaces.com/scratch
Snap¶
Snap è un linguaggio a blocchi derivato da Scratch. Supera alcune pesanti limitazioni di quest’ultimo risultando molto più interessante per un uso nella didattica.
Permette di realizzare funzioni con parametri e è in grado di interfacciarsi con vari dispositivi esterni come:
- Lego NXT package by Connor Hudson
- Nintendo Wiimote package by Connor Hudson
- Finch and Hummingbird robots package by Tom Lauwers
- Parallax S2 robot package by Connor Hudson
- LEAP Motion by Connor Hudson
- speech synthesis by Connor Hudson
- Arduino package by Alan Yorinks
Siti di riferimento per Scratch:
- snap.berkeley.edu/snapsource/snap.html
Proposta¶
Concludendo, la proposta per questo laboratorio riguarda l’uso di:
- software libero,
- multi piattaforma,
- semplice da installare,
- linguaggio di programmazione:
- il più possibile “trasparente”,
- adatto per un uso didattico,
- geometria della tartaruga.
Concretamente proporrò gli esempi che propongo possono essere realizzati in LibreLogo, Python + pygraph o Snap.
Nel resto di questo documento gli esempi saranno presentati in Python + pygraph.