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