Scelte

Software libero

Cos’è il software libero, cosa non è il software libero.

Le quattro libertà:

  1. Libertà di eseguire il programma, per qualsiasi scopo.
  2. Libertà di studiare come funziona il programma e di modificarlo in modo da adattarlo alle proprie necessità.
  3. Libertà di ridistribuire copie in modo da aiutare il prossimo.
  4. 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ù);
Seymour Papert il ceratore di Logo

Seymour Papert il ceratore di Logo

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.

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.

"spirale" creata con pyturtle

“Spirale” creata con pyturtle.

Siti di riferimento per Python - pygraph:

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 è:

Programma scritto in Scratch

Programma scritto in 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.

"spirale" creata con Scratch

“Spirale” creata con Scratch.

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.