Metodi

Da aptiva.

Idee sparse da approfondire

Indice

Come motivare gli studenti

  • no al puro formalismo, ci vuole una motivazione. Ovviamente cambia in funzione del tipo di scuola dove andrete ad insegnare. Videogiochi, Robot, sensori per la fisica? Sage e le applicazioni alla matematica?

Quale Linguaggio insegnare a scuola?

quale linguaggio di programmazione? Pascal e' ormai defunto. C, Java, Javascript, Python? pro e contro. (leggi "why pascal is not my favourite language/why C is not my favourite language")

Python

Penso che oggi sia fra le scelte piu' sensate. Python ha un basso impatto, potendo funzionare anche in modo interattivo consente di fare esperimenti col linguaggio per arrivare poi alla costruzione di programmi.

  • ha una sintassi "minimale" (niente begin/end parentesi graffe, le variabili vengono definite con l'uso, garbage collection automatica)
  • le variabili hanno un tipo inferito dal dato memorizzato
  • le funzioni operano automaticamente come template, non sono legate al tipo dei parametri ma funzionano per ogni tipo per il quale sono definiti gli operatori o le ulteriori funzioni utilizzati
  • educa alla scrittura ordinata del codice (l'indentazione fa parte della sintassi
  • lo stesso linguaggio si usa in programmazione procedurale imperativa, a oggetti e funzionale.
  • ha un uso amplissimo (non e' il pascal che fuori dalla scuola non usa nessuno o il C che e' un linguaggio "per soli adulti" dove si possono scrivere cose efficientissime ma incomprensibili). E' uno dei linguaggi maggiormente utilizzati in Google!
  • funziona sui cellulari, sul raspberry pi...
  • ha le "batterie incluse", esistono vagonate di librerie che consentono in poche righe per esempio di create servizi web, accendere led etc.
  • e' interpretato e compilato, si puo' sperimentare il singolo statement con una semplice interfaccia testuale del linguaggio e copiare/incollare lo statement in un programma piu' ampio
  • le librerie hanno autocompilazione, le librerie si autocompilano al primo utilizzo o quando viene modificato il loro sorgente
  • e' molto piu' portabile del java
  • Esistono ottimi libri interattivi liberi online (in lingua inglese).

PRO: linguaggio semplice, non richiede la definizione delle variabili, signature polimorfe, tipizzazione degli argomenti a run-time, sintassi minimale, educazione all'indentazione, e' un linguaggio a oggetti ma non obbligatoriamente a oggetti, ha overloading degli operatori, linguaggio realmente usato, funziona su tutto (telefonini, computer etc),

CONTRO: non e' velocissimo (usa un suo bytecode).

Javascript

Sintassi simile a C per i blocchi (Python usa l'indentazione). Si integra con lo sviluppo web ed motiva gli studenti che riescono a fare pagine web attive.

C

E' il mio linguaggio preferito ma lo ritengo inadatto alla didattica in una scuola secondaria. Di solito dico che e' un linguaggio per soli adulti. Il C infatti consente una grande liberta' ed e' molto efficiente, ma consente di scrivere programmi illeggibili e non manutenibili.

PRO: e' un linguaggio molto usato, e' molto veloce ed ha ottimizzatori efficienti, consente operazioni a basso livello

CONTRO: non educa ad una programmazione ordinata (si possono scrivere programmi illeggibili), non e' ad oggetti, tutte le variabili vanno dichiarate (tipi statici)

Java

Scheme

In un corso universitario scheme puo' servire per riorganizzare le conoscenze degli studenti in una visione piu' ampia (gli studenti che hanno pregressi corsi di programmazione e quelli di licei tradizionali ripartono ad armi pari). Ci vuole tanto coraggio per proporlo in una scuola secondaria... non penso che tanta astrazione possa essere compresa.

Prolog

Il prolog e' defunto con il mito della quinta generazione giapponese e con i sistemi esperti. L'idea di indicare solo fatti e regole e di delegare ad un motore generale di risoluzione la ricerca del risultato (mediante ricerca esaustiva) e' inefficiente sia come metodo di calcolo sia come processo educativo.

PRO: Fornisce una visione non usuale sulla programmazione

CONTRO: La programmazione logica e' usata molto raramente in casi reali,

C++

Pascal

A mio avviso e' da evitare. La pagina di Wikipedia List of educational programming languages lo mette nella categoria "Linguaggi Storici", e li' e' giusto che stia. Non e' piu' usato se non da alcuni docenti che non hanno saputo aggiornarsi.

PRO: Ordinato

CONTRO: Sintassi pesante, non e' ad oggetti, le variabili devono sempre essere definite, non si controlla totalmente l'esecuzione (si sono controlli automaticamente inseriti nel codice e costi per la scansione dei frame pointer per le variabili automatiche).

Linguaggi per applicazioni specifiche

  • bash
  • i linguaggi per l'approccio LAMP (Linux/Apache/MySQL/php)
Strumenti personali
Namespace

Varianti
Azioni
Navigazione
Strumenti