SlideShare a Scribd company logo
1 of 41
Oz: un moderno linguaggio di programmazione multi-paradigma Federico Scarel Quest'opera è stata rilasciata sotto la licenza  Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Italy.  Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/publicdomain/  o spedisci una lettera a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
Cos'è Oz ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Cos'è Mozart ? ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ambiente di sviluppo
Tool: debugger
Tool: explorer
Tool: panel
Tipi di dato [1]
Tipi di dato [2] ,[object Object],[object Object],[object Object]
Le variabili di Oz ,[object Object],[object Object],[object Object]
Esempi
Oz come linguaggio imperativo ,[object Object],[object Object],[object Object],[object Object],Valore di Y.  È  l'equivalente di {Cell.access Y} Assegnamento
Gestione delle eccezioni ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
OOP e Oz: classi ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ereditarietà ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Ereditarietà [2] ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Sintonizza ImpostaOra Spegni Spegni class  RadioSveglia  from  Radio Sveglia meth  snooze() ... end ... end
Metodi pubblici e privati ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Metodo otherwise ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Concorrenza dichiarativa ,[object Object],[object Object],[object Object],[object Object]
Esempio di codice ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Possibile  ordine di esecuzione Thread 1 Thread 2 Thread 3 Thread 4 X = 6 K = Z + Y Y = X + 1 Z = X + 2 {Browse Y} {Browse Z}
Concorrenza con stato ,[object Object],[object Object],[object Object],[object Object]
Lock rientranti ,[object Object],[object Object],[object Object]
Esempio codice: lock ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Lock e classi ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Canali di comunicazione: porte e socket ,[object Object],[object Object],[object Object],*Questo non è più valido in ambito distribuito
Port ,[object Object],[object Object],[object Object],[object Object]
Esempio di codice: Port ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Socket [1] ,[object Object],[object Object],[object Object],[object Object]
Socket [2] ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Esempio di codice: socket ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Constraint Programming ,[object Object],[object Object],[object Object]
Constraint Programming e Oz ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Metodo di risoluzione classico ,[object Object],[object Object],[object Object],[object Object]
Codice di esempio ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Propagate e distribute ,[object Object],[object Object],[object Object]
Esempio di propagate e distribute ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Oz in ambiente distribuito ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Condividere variabili ,[object Object],[object Object],[object Object]
Salvare strutture stateless ,[object Object],[object Object]
Esempio di codice distribuito ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Alcuni riferimenti ,[object Object],[object Object]

More Related Content

What's hot

Twcrashcourse
TwcrashcourseTwcrashcourse
Twcrashcourserik0
 
Algoritmo probabilistico di tipo montecarlo per il list decoding elaborato
Algoritmo probabilistico di tipo montecarlo per il list decoding   elaboratoAlgoritmo probabilistico di tipo montecarlo per il list decoding   elaborato
Algoritmo probabilistico di tipo montecarlo per il list decoding elaboratodanielenicassio
 
Corso IFTS CyberSecurity Expert - Cifrai Asimmetrici
Corso IFTS CyberSecurity Expert - Cifrai AsimmetriciCorso IFTS CyberSecurity Expert - Cifrai Asimmetrici
Corso IFTS CyberSecurity Expert - Cifrai AsimmetriciMassimiliano Masi
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereMatteo Valoriani
 
Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingdanielenicassio
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusionePiero Fraternali
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourserik0
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewFrancesco Sciuti
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2STELITANO
 
Acadevmy - ES6 Modern JS Today
Acadevmy - ES6 Modern JS TodayAcadevmy - ES6 Modern JS Today
Acadevmy - ES6 Modern JS TodayFrancesco Sciuti
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++Ilio Catallo
 
Seminario crittografia-linux-day-2004
Seminario crittografia-linux-day-2004Seminario crittografia-linux-day-2004
Seminario crittografia-linux-day-2004Flavio Castelli
 

What's hot (20)

Twcrashcourse
TwcrashcourseTwcrashcourse
Twcrashcourse
 
Algoritmo probabilistico di tipo montecarlo per il list decoding elaborato
Algoritmo probabilistico di tipo montecarlo per il list decoding   elaboratoAlgoritmo probabilistico di tipo montecarlo per il list decoding   elaborato
Algoritmo probabilistico di tipo montecarlo per il list decoding elaborato
 
Sfida CTF: Nebula Level10
Sfida CTF: Nebula Level10Sfida CTF: Nebula Level10
Sfida CTF: Nebula Level10
 
Corso IFTS CyberSecurity Expert - Cifrai Asimmetrici
Corso IFTS CyberSecurity Expert - Cifrai AsimmetriciCorso IFTS CyberSecurity Expert - Cifrai Asimmetrici
Corso IFTS CyberSecurity Expert - Cifrai Asimmetrici
 
OOP with C#
OOP with C#OOP with C#
OOP with C#
 
C#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivereC#, imparare a programmare e sopravvivere
C#, imparare a programmare e sopravvivere
 
Algoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decodingAlgoritmo probabilistico di tipo montecarlo per il list decoding
Algoritmo probabilistico di tipo montecarlo per il list decoding
 
06 3 struct
06 3 struct06 3 struct
06 3 struct
 
Vb.Net
Vb.NetVb.Net
Vb.Net
 
05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione05 2 integrali-conversioni-costanti-preproc-inclusione
05 2 integrali-conversioni-costanti-preproc-inclusione
 
Pycrashcourse
PycrashcoursePycrashcourse
Pycrashcourse
 
Corso Java 2 - AVANZATO
Corso Java 2 - AVANZATOCorso Java 2 - AVANZATO
Corso Java 2 - AVANZATO
 
Design Pattern
Design PatternDesign Pattern
Design Pattern
 
Acadevmy - TypeScript Overview
Acadevmy - TypeScript OverviewAcadevmy - TypeScript Overview
Acadevmy - TypeScript Overview
 
Programming iOS lezione 3
Programming iOS lezione 3Programming iOS lezione 3
Programming iOS lezione 3
 
Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2Lezione 10 (21 marzo 2012)2
Lezione 10 (21 marzo 2012)2
 
Acadevmy - ES6 Modern JS Today
Acadevmy - ES6 Modern JS TodayAcadevmy - ES6 Modern JS Today
Acadevmy - ES6 Modern JS Today
 
Gestione della memoria in C++
Gestione della memoria in C++Gestione della memoria in C++
Gestione della memoria in C++
 
Seminario crittografia-linux-day-2004
Seminario crittografia-linux-day-2004Seminario crittografia-linux-day-2004
Seminario crittografia-linux-day-2004
 
Inferno Limbo Italian
Inferno Limbo ItalianInferno Limbo Italian
Inferno Limbo Italian
 

Similar to Presentazione Oz - Mozart

Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupalDay
 
Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2
Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2
Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2Andrea Pisa
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java BaseK-Tech Formazione
 
Pycrashcourse3.1
Pycrashcourse3.1Pycrashcourse3.1
Pycrashcourse3.1rik0
 
Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)STELITANO
 
Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)STELITANO
 
Multithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaMultithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaSebastiano Merlino (eTr)
 
Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL
Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSLCorso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL
Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSLMassimiliano Masi
 
Pycrashcourse3.0
Pycrashcourse3.0Pycrashcourse3.0
Pycrashcourse3.0rik0
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventPietro Di Bello
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con ScalaFranco Lombardo
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 

Similar to Presentazione Oz - Mozart (20)

Drupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e DrupalDrupal Day 2011 - Node.js e Drupal
Drupal Day 2011 - Node.js e Drupal
 
Ruby in 25 minuti
Ruby in 25 minutiRuby in 25 minuti
Ruby in 25 minuti
 
Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2
Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2
Guida all'utilizzo di OpenFOAM su Windows10 (con Ubuntu LTS) - Capitolo 2
 
Socket python
Socket pythonSocket python
Socket python
 
Corso Programmazione Java Base
Corso Programmazione Java BaseCorso Programmazione Java Base
Corso Programmazione Java Base
 
Modulo 1 - Lezione 1
Modulo 1 - Lezione 1Modulo 1 - Lezione 1
Modulo 1 - Lezione 1
 
Java introduzione
Java introduzioneJava introduzione
Java introduzione
 
Pycrashcourse3.1
Pycrashcourse3.1Pycrashcourse3.1
Pycrashcourse3.1
 
Office & VBA - Giorno 6
Office & VBA - Giorno 6Office & VBA - Giorno 6
Office & VBA - Giorno 6
 
Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)
 
Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)Lezione 1 (27 febbraio 2012)
Lezione 1 (27 febbraio 2012)
 
Multithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e AsincroniaMultithreading, multiprocessing e Asincronia
Multithreading, multiprocessing e Asincronia
 
Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL
Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSLCorso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL
Corso IFTS CyberSecurity Expert - Creazione di una CA con OpenSSL
 
Java Lezione 1
Java Lezione 1Java Lezione 1
Java Lezione 1
 
Pycrashcourse3.0
Pycrashcourse3.0Pycrashcourse3.0
Pycrashcourse3.0
 
A brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA eventA brief intro to TDD for a JUG-TAA event
A brief intro to TDD for a JUG-TAA event
 
Primo Incontro Con Scala
Primo Incontro Con ScalaPrimo Incontro Con Scala
Primo Incontro Con Scala
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
Bash intro
Bash introBash intro
Bash intro
 
Java lezione 9
Java lezione 9Java lezione 9
Java lezione 9
 

Presentazione Oz - Mozart

  • 1. Oz: un moderno linguaggio di programmazione multi-paradigma Federico Scarel Quest'opera è stata rilasciata sotto la licenza Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Italy. Per leggere una copia della licenza visita il sito web http://creativecommons.org/licenses/publicdomain/ o spedisci una lettera a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.
  • 2.
  • 3.
  • 9.
  • 10.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.