La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Programmazione Avanzata Giuseppe Attardi. Introduzione Preoccupazioni per il programmatore del 21 secolo Preoccupazioni per il programmatore del 21 secolo.

Presentazioni simili


Presentazione sul tema: "Programmazione Avanzata Giuseppe Attardi. Introduzione Preoccupazioni per il programmatore del 21 secolo Preoccupazioni per il programmatore del 21 secolo."— Transcript della presentazione:

1 Programmazione Avanzata Giuseppe Attardi

2 Introduzione Preoccupazioni per il programmatore del 21 secolo Preoccupazioni per il programmatore del 21 secolo Software complesso come mai Software complesso come mai Command line non basta più Command line non basta più Dati vanno strutturati in DB Dati vanno strutturati in DB Un singolo computer non basta Un singolo computer non basta Sviluppo di software diventa lavoro di gruppo Sviluppo di software diventa lavoro di gruppo

3 Requisiti Non si può partire da zero Non si può partire da zero Necessari componenti riusabili Necessari componenti riusabili OS più librerie non bastano OS più librerie non bastano

4 Controllo sull’esecuzione Evitare danni Evitare danni Installare/disinstallare è un incubo Installare/disinstallare è un incubo Component software? Component software?

5 Ambienti RunTime Java Virtual Machine Java Virtual Machine.NET Common Language Runtime.NET Common Language Runtime Forniscono ambiente virtuale Forniscono ambiente virtuale –Espone una struttura organizzata di elementi –Non semplice astrazione risorse fisiche

6 Vantaggi Programmatori Programmatori –Uso di strumenti e librerie –Minor tempo di integrazione –Maggiore produttività Sviluppatori di tool Sviluppatori di tool –Elimina necessità di occuparsi di infrastruttura e interoperabilità Amministratori e utenti Amministratori e utenti –Vantaggio di soluzioni packaged –Indipendenza da processore o OS

7 Common Language Infrastructure Espone tutti elementi in sistema tipi unificato Espone tutti elementi in sistema tipi unificato Impacchetta elementi in unità self- describing Impacchetta elementi in unità self- describing Carica e risolve interdipendenze a runtime Carica e risolve interdipendenze a runtime Espone informazioni che consentono verifica della type-safety Espone informazioni che consentono verifica della type-safety Execution Engine assicura politiche Execution Engine assicura politiche Metadati disponibili a runtime consentono soluzioni dinamiche e estendibili Metadati disponibili a runtime consentono soluzioni dinamiche e estendibili

8 Scopi del corso Capire le tecnologie dei linguaggi di programmazione: Capire le tecnologie dei linguaggi di programmazione: –Modelli di esecuzione –Runtime Analizzare metafore di programmazione: Analizzare metafore di programmazione: –Oggetti –Componenti –Pattern Conoscere tecniche di programmazione avanzate Conoscere tecniche di programmazione avanzate Capire i limiti e come superarli Capire i limiti e come superarli

9 Tecniche Avanzate Programmazione generica Programmazione generica –C++ templates –C# Generics –Java Generics Programmazione generativa Programmazione generativa –Metaprogrammazione –Reflection –Template –Aspect Oriented –Generators

10 Programmazione Web Web Services, SOA Web Services, SOA Web Frameworks Web Frameworks –J2EE –ASP.Net –AJAX Web 2.0 Web 2.0

11 Scripting Languages Perl Perl Python Python JavaScript JavaScript PHP PHP

12 Domanda È veramente possibile realizzare un runtime comune a tutti i linguaggi di programmazione? È veramente possibile realizzare un runtime comune a tutti i linguaggi di programmazione?

13 Più in dettaglio Prolog Prolog –Come si implementano le variabili logiche? –Si può usare la Warren-Abstract- Machine? PHP 3 PHP 3 –Perché l’assegnamento ha un comportanto insolito? LISP LISP –Come si trattano i multiple-values?

14 Prolog example append(X, Y, Z) :- append(NIL, Y, Y) :- append([A. X], Y, [A. Z] ) :- append(X, Y, Z). :- append([a. b. c], [d. e], R) R = [a. b. c. d. e]

15 Prolog backtrack :- append(X, Y, [a. b]) :- append(X, NIL, [a. b]) X = NIL Y = [a. b] X = [a] Y = [b] X = [a. b] Y = NIL

16 PHP Assignement $str = ‘Ciao.’; $str2 = $str; $str{strlen($str) – 1} = ‘!’; echo $str2; $var = $othervar $var = $othervar –Effettua copia del valore di $othervar $var = &$othervar $var = &$othervar –Assegnamento per reference

17 Controllo Si può implementare la tail-recursion in C? Si può implementare la tail-recursion in C? Come si tratta la sincronizzazione? Come si tratta la sincronizzazione? Puntatori a funzione? Puntatori a funzione? Come chiamare una funzione arbitraria data la lista dei suoi argomenti? Come chiamare una funzione arbitraria data la lista dei suoi argomenti?

18 invoke(fun, argn, arglist) { if (n==0) return f(); return f(); else if (n==1) return f(arg[0]); return f(arg[0]);else return fun(arg[0], arg[1],.., arg[n-1]); return fun(arg[0], arg[1],.., arg[n-1]);}

19 Tipi dato elementari Stringhe C, Pascal e C++ sono diverse Stringhe C, Pascal e C++ sono diverse Array in ordine di riga o di colonna? Array in ordine di riga o di colonna?

20 Language Interoperability C# e Cobol si abbaiano a vicenda C# e Cobol si abbaiano a vicenda

21 C# dog using System; public class Dog { public virtual void RollOver () { Console.WriteLine("Scratch my tummy."); Bark(); } public virtual void Bark () { Console.WriteLine("WOOF WOOF (C#)"); public virtual void Bark () { Console.WriteLine("WOOF WOOF (C#)"); }}

22 Cobol BigDog CLASS-ID. BigDog INHERITS Dog ENVIRONMENT DIVISION CONFIGURATION SECTION REPOSITORY CLASS Dog OBJECT PROCEDURE DIVISION METHOD-ID. Bark OVERRIDE PROCEDURE DIVISION. DISPLAY "WOOF WOOF (COBOL)" END METHOD Bark END OBJECT END CLASS BigDog.

23 Barfing dogs public class Demo { public static void Main() { Dog d = new Dog(); BigDog b = new BigDog(); d.RollOver(); b.RollOver(); } }

24 Final Paper Scopo di mettere alla prova capacità complessive di concezione e realizzazione di soluzioni articolate Scopo di mettere alla prova capacità complessive di concezione e realizzazione di soluzioni articolate Esempi: Esempi: –Generatore di codice ASP e di matching di espressioni regolari –Implementazione di un DSL per manipolare contenitori di oggetti persistenti –Protocollo SOAP e server SOAP –Generatore di codice per SQL di ricerca su oggetti –Intreprete XPath e XSLT –Linguaggio di generazione di protocolli –Framework AJAX

25 Home Work Proporre una semplice implementazione delle primitive: Proporre una semplice implementazione delle primitive: –void* malloc(size_t size) –void free(void*) Discutere i limiti della soluzione Discutere i limiti della soluzione


Scaricare ppt "Programmazione Avanzata Giuseppe Attardi. Introduzione Preoccupazioni per il programmatore del 21 secolo Preoccupazioni per il programmatore del 21 secolo."

Presentazioni simili


Annunci Google