Linguaggi di programmazione
25 min per descrivere un mondo...
G. Vinciguerra
IIS Maserati
GNU LINUX & FLOSS
27 Febbraio 2010
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
1 / 11
Missione impossibile
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Missione impossibile
Non basterebbero ore solo per elencarne il nome...
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Missione impossibile
Non basterebbero ore solo per elencarne il nome...
...figuriamoci per parlarne
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Missione impossibile
Non basterebbero ore solo per elencarne il nome...
...figuriamoci per parlarne
Perché insegnare un linguaggio di programmazione?
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Missione impossibile
Non basterebbero ore solo per elencarne il nome...
...figuriamoci per parlarne
Perché insegnare un linguaggio di programmazione?
Formare tecnici preparati!
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Missione impossibile
Non basterebbero ore solo per elencarne il nome...
...figuriamoci per parlarne
Perché insegnare un linguaggio di programmazione?
Formare tecnici preparati!
Trovare lavoro
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Missione impossibile
Non basterebbero ore solo per elencarne il nome...
...figuriamoci per parlarne
Perché insegnare un linguaggio di programmazione?
Formare tecnici preparati!
Trovare lavoro
Preparare agli esami universitari
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
2 / 11
Altro punto di vista
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
3 / 11
Altro punto di vista
Dubbi
Il linguaggio che insegno oggi, domani...?
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
3 / 11
Altro punto di vista
Dubbi
Il linguaggio che insegno oggi, domani...?
Tecnologie differenti
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
3 / 11
Altro punto di vista
Dubbi
Il linguaggio che insegno oggi, domani...?
Tecnologie differenti
Specializzazione
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
3 / 11
Altro punto di vista
Dubbi
Il linguaggio che insegno oggi, domani...?
Tecnologie differenti
Specializzazione
Ruoli differenti
Scuola: Forma mentis
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
3 / 11
Altro punto di vista
Dubbi
Il linguaggio che insegno oggi, domani...?
Tecnologie differenti
Specializzazione
Ruoli differenti
Scuola: Forma mentis
Mondo produttivo: specializzazione
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
3 / 11
Per associazione di idee
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
4 / 11
Per associazione di idee
Scuola guida
Per guidare un’auto posso rivolgermi ad una scuola guida.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
4 / 11
Per associazione di idee
Scuola guida
Per guidare un’auto posso rivolgermi ad una scuola guida.
A scuola guido una “Bianchina”.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
4 / 11
Per associazione di idee
Scuola guida
Per guidare un’auto posso rivolgermi ad una scuola guida.
A scuola guido una “Bianchina”.
Imparo ad usarla e con essa sostengo l’esame.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
4 / 11
Per associazione di idee
Scuola guida
Per guidare un’auto posso rivolgermi ad una scuola guida.
A scuola guido una “Bianchina”.
Imparo ad usarla e con essa sostengo l’esame.
La motorizzazione mi rilascia una patente di guida per una particolare
categoria di veicoli.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
4 / 11
Per associazione di idee
Scuola guida
Per guidare un’auto posso rivolgermi ad una scuola guida.
A scuola guido una “Bianchina”.
Imparo ad usarla e con essa sostengo l’esame.
La motorizzazione mi rilascia una patente di guida per una particolare
categoria di veicoli.
Non per poter guidare la “Bianchina”!
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
4 / 11
Programmare
Quindi perché?
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
5 / 11
Programmare
Quindi perché?
Il linguaggio di programmazione: non come fine dell’insegnamento, ma come
mezzo per apprendere
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
5 / 11
Programmare
Quindi perché?
Il linguaggio di programmazione: non come fine dell’insegnamento, ma come
mezzo per apprendere
Sviluppare le capacità di ragionamento
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
5 / 11
Programmare
Quindi perché?
Il linguaggio di programmazione: non come fine dell’insegnamento, ma come
mezzo per apprendere
Sviluppare le capacità di ragionamento
Sviluppare ed affinare l’approccio ai problemi (problem solving)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
5 / 11
Linguaggi
Paradigma
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
6 / 11
Linguaggi
Paradigma
Insieme di strumenti concettuali forniti da un linguaggio di programmazione
per la stesura di programmi
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
6 / 11
Linguaggi
Paradigma
Insieme di strumenti concettuali forniti da un linguaggio di programmazione
per la stesura di programmi
Definisce/determina il modo in cui il programmatore concepisce e percepisce
il programma.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
6 / 11
Linguaggi
Paradigma
Insieme di strumenti concettuali forniti da un linguaggio di programmazione
per la stesura di programmi
Definisce/determina il modo in cui il programmatore concepisce e percepisce
il programma.
Il paradigma imperativo (e tutti i suoi sotto-paradigmi) è l’approccio più
diffuso nella programmazione.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
6 / 11
Linguaggi
Paradigma
Insieme di strumenti concettuali forniti da un linguaggio di programmazione
per la stesura di programmi
Definisce/determina il modo in cui il programmatore concepisce e percepisce
il programma.
Il paradigma imperativo (e tutti i suoi sotto-paradigmi) è l’approccio più
diffuso nella programmazione.
Il programma viene inteso come un insieme di istruzioni che possono essere
pensate come un ordine che viene impartito
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
6 / 11
Linguaggi
Vari livelli ed approcci
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di primo grado “classici”
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di primo grado “classici”
Logo
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di primo grado “classici”
Logo
FreePascal (fp)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di primo grado “classici”
Logo
FreePascal (fp)
Basic (basic256)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di primo grado “classici”
Logo
FreePascal (fp)
Basic (basic256)
e alternativi
GvR (Guido van Robot)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di primo grado “classici”
Logo
FreePascal (fp)
Basic (basic256)
e alternativi
GvR (Guido van Robot)
Python (http://linuxdidattica.org/polito/python.html)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
7 / 11
Linguaggi
Vari livelli ed approcci
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
Sua maestà C (e C++)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
Sua maestà C (e C++)
Basic e Gambas
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
Sua maestà C (e C++)
Basic e Gambas
Java
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
Sua maestà C (e C++)
Basic e Gambas
Java
vari per il web (PHP, JSP, ecc.)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
Sua maestà C (e C++)
Basic e Gambas
Java
vari per il web (PHP, JSP, ecc.)
e alternativi
Python
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Linguaggi
Vari livelli ed approcci
Linguaggi “adatti” alla secondaria di secondo grado “classici”
Sua maestà C (e C++)
Basic e Gambas
Java
vari per il web (PHP, JSP, ecc.)
e alternativi
Python
Lazarus
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
8 / 11
Altre possibilità
Da un estremo...
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
9 / 11
Altre possibilità
Da un estremo...
z80asm (assembler per Z80)
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
9 / 11
Altre possibilità
Da un estremo...
z80asm (assembler per Z80)
gnusim8085 (simulatore grafico Intel 8085 )
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
9 / 11
Altre possibilità
Da un estremo...
z80asm (assembler per Z80)
gnusim8085 (simulatore grafico Intel 8085 )
as31 (assembler per Intel 8031/8051
picasm (assembler per pic)
gpsim (simulatore pic)
...all’altro
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
9 / 11
Altre possibilità
Da un estremo...
z80asm (assembler per Z80)
gnusim8085 (simulatore grafico Intel 8085 )
as31 (assembler per Intel 8031/8051
picasm (assembler per pic)
gpsim (simulatore pic)
...all’altro
non free... National instruments LabVIEW
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
9 / 11
Altre possibilità
Da un estremo...
z80asm (assembler per Z80)
gnusim8085 (simulatore grafico Intel 8085 )
as31 (assembler per Intel 8031/8051
picasm (assembler per pic)
gpsim (simulatore pic)
...all’altro
non free... National instruments LabVIEW
Proview (Open Source Process Control System) - http://proview.se/
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
9 / 11
Python
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
Alto livello di astrazione.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
Alto livello di astrazione.
Le variabili non vanno dichiarate esplicitamente ma...
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
Alto livello di astrazione.
Le variabili non vanno dichiarate esplicitamente ma...
vanno inizializzate prima del loro utilizzo.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
Alto livello di astrazione.
Le variabili non vanno dichiarate esplicitamente ma...
vanno inizializzate prima del loro utilizzo.
Il linguaggio è “fortemente tipato” (forte controllo dei tipi di variabile).
Sintassi essenziale ed uniforme.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
Alto livello di astrazione.
Le variabili non vanno dichiarate esplicitamente ma...
vanno inizializzate prima del loro utilizzo.
Il linguaggio è “fortemente tipato” (forte controllo dei tipi di variabile).
Sintassi essenziale ed uniforme.
Definizione dei blocchi di codice attraverso l’indentazione.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
Caratteristiche del linguaggio
Linguaggio interpretato.
Multiparadigma (prog. strutturata, OO, funzionale).
Alto livello di astrazione.
Le variabili non vanno dichiarate esplicitamente ma...
vanno inizializzate prima del loro utilizzo.
Il linguaggio è “fortemente tipato” (forte controllo dei tipi di variabile).
Sintassi essenziale ed uniforme.
Definizione dei blocchi di codice attraverso l’indentazione.
Di base “testuale”, utilizzando opportuni pacchetti
è possibile creare delle GUI.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
10 / 11
Python
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
Multipiattaforma.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
Multipiattaforma.
Leggero (installabile su qualsiasi elaboratore).
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
Multipiattaforma.
Leggero (installabile su qualsiasi elaboratore).
Moderno.
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
Multipiattaforma.
Leggero (installabile su qualsiasi elaboratore).
Moderno.
Niente “infrastrutture” quindi...
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
Multipiattaforma.
Leggero (installabile su qualsiasi elaboratore).
Moderno.
Niente “infrastrutture” quindi...
possiamo concentrarci sulla programmazione
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Python
Motivazioni
Multipiattaforma.
Leggero (installabile su qualsiasi elaboratore).
Moderno.
Niente “infrastrutture” quindi...
possiamo concentrarci sulla programmazione
Esempi
Vediamo alcuni esempi dei linguaggi descritti
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Linguaggi di programmazione
27 Febbraio 2010
11 / 11
Fine
Grazie dell’attenzione
Se ci sono domande o dubbi...
Contatti
G. Vinciguerra (IIS Maserati GNU LINUX & FLOSS)
Guido Vinciguerra
[email protected]
Linguaggi di programmazione
27 Febbraio 2010
12 / 11