Come introdurre la programmazione?
- Scelta del linguaggio
- Scelta dei problemi
Assunzione di base
Fare breccia negli studenti è difficile
Punti su cui ci focalizzeremo
- scelta del linguaggio
- scelta dei problemi
Scelta del linugaggio
Nella fase iniziale di apprendimento di un linguaggio va ridotta al minimo la quantità di sintassi da introdurre.
- Nonostante ciò... scaffolding: a seconda del linguaggio scelto vi sono più o meno costrutti sintattici che è impossibile eliminare, pena il non poter compilare e eseguire un programma.
- Di conseguenza... leap of faith: non c'è altro modo di introdurre questi costrutti se non chiedendo di impararne a memoria la sintassi e rimandando più avanti nel corso una spiegazione della loro semantica.
Per esempio, in C
#include <stdio.h>
int main() {
printf("Hello world!\n");
}
È necessario
- includere una libreria (di sistema)
- dichiarare il prototipo di una funzione
- utilizzare il tipo
int
- inserire una coppia di parentesi che non contiene nulla
- far digerire delle parentesi quadre e un punto e virgola
- ma anche dei doppi apici e una sequenza di escape
Peggio ancora, in Java
class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello world!");
}
}
È necessario
- definire una classe
- dichiarare il prototipo di una funzione pubblica, statica e
void
- che ha come argomento un array di oggetti della classe
String
- che usa la classe
System
invocando il metodo di un suo campo statico
Non sarebbe meglio...
print 'Hello world'
- e basta?
per esempio...
Python
|
- Introdotto a partire dal 1991
- Fortemente tipizzato, con type checking a run time
- Compilato in bytecode ma eseguibile in modo interattivo
tramite console
- Ispirato al Monty Python's Flying Circus
|
Python
- Si tratta di software floss, disponibile per i principali
sistemi operativi
(http://www.python.org)
- Due versioni disponibili: 2.7.X e 3.8.X
(meglio fare riferimento alla seconda)
- Sono disponibili utility che automatizzano l'installazione di
package che aggiungono funzionalità al linguaggio
- Esistono front-end grafici (in particolar modo,
jupyter)
Una nota sui sistemi operativi
L'uso di sistemi operativi che permettono all'utente di
interagire in modo proficuo tramite un terminale è da preferirsi,
in quanto permette allo studente
- di avere più controllo sul file system e in ultima analisi su
tutti i file che vengono prodotti nel processo di
creazione–compilazione–esecuzione
- di essere a conoscenza dell'effettivo output di editor,
compilatori e altri strumenti
- di rendersi conto di che cosa succede a un livello
relativamente basso del sistema operativo
In particolare le distribuzioni Linux permettono di non gravare
sul bilancio degli istituti e tra esse ve ne sono di
specificamente pensate per non richiedere hardware altamente
performante
Alcuni riferimenti bibliografici
Scelta dei problemi
Approccio tipico
Ti insegno a scrivere un programma che stampa i primi dieci valori della sequenza di Fibonacci
$ ./fibo
1 1 2 3 5 8 13 21 34 55
$
Che reazione ci possiamo aspettare?
- A che cosa mi serve?
- Non faccio prima a calcolare a mente e scrivere su carta?
Scelta dei problemi
- Sottolineare che il valore cardine dell'approccio informatico
è legato all'automatizzazione della soluzione dei problemi
- Cercare ove possibile di far lavorare gli studenti in contesti
pratici e alla loro portata, considerando problemi
- dei quali è loro chiaro il valore della soluzione
- che non sanno affrontare o automatizzare
- che richiedono l'uso di un elaboratore per delle
istanze del mondo reale
All'inizio...
...è difficile partire da problemi cool su grandi moli di dati.
Se questo non è possibile
Stringere un patto formativo con gli studenti
Per esempio: arriveremo a produrre una mappa di tweet
geolocalizzati con un particolare hashtag