Programmazione Avanzata Giuseppe Attardi Introduzione l Preoccupazioni per
- Slides: 25
Programmazione Avanzata Giuseppe Attardi
Introduzione l Preoccupazioni per il programmatore del 21 secolo l Software complesso come mai l Command line non basta più l Dati vanno strutturati in DB l Un singolo computer non basta l Sviluppo di software diventa lavoro di gruppo
Requisiti l Non si può partire da zero l Necessari componenti riusabili l OS più librerie non bastano
Controllo sull’esecuzione l Evitare danni l Installare/disinstallare l Component software? è un incubo
Ambienti Run. Time l Java Virtual Machine l. NET Common Language Runtime l Forniscono ambiente virtuale – Espone una struttura organizzata di elementi – Non semplice astrazione risorse fisiche
Vantaggi l Programmatori – Uso di strumenti e librerie – Minor tempo di integrazione – Maggiore produttività l Sviluppatori di tool – Elimina necessità di occuparsi di infrastruttura e interoperabilità l Amministratori e utenti – Vantaggio di soluzioni packaged – Indipendenza da processore o OS
Common Language Infrastructure l l l Espone tutti elementi in sistema tipi unificato Impacchetta elementi in unità selfdescribing Carica e risolve interdipendenze a runtime Espone informazioni che consentono verifica della type-safety Execution Engine assicura politiche Metadati disponibili a runtime consentono soluzioni dinamiche e estendibili
Scopi del corso l Capire le tecnologie dei linguaggi di programmazione: – Modelli di esecuzione – Runtime l Analizzare metafore di programmazione: – Oggetti – Componenti – Pattern Conoscere tecniche di programmazione avanzate l Capire i limiti e come superarli l
Tecniche Avanzate l Programmazione generica – C++ templates – C# Generics – Java Generics l Programmazione generativa – Metaprogrammazione – Reflection – Template – Aspect Oriented – Generators
Programmazione Web l Web Services, SOA l Web Frameworks – J 2 EE – ASP. Net – AJAX l Web 2. 0
Scripting Languages l Perl l Python l Java. Script l PHP
Domanda l È veramente possibile realizzare un runtime comune a tutti i linguaggi di programmazione?
Più in dettaglio l Prolog – Come si implementano le variabili logiche? – Si può usare la Warren-Abstract. Machine? l PHP 3 – Perché l’assegnamento ha un comportanto insolito? l LISP – Come si trattano i multiple-values?
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]
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
PHP Assignement $str = ‘Ciao. ’; $str 2 = $str; $str{strlen($str) – 1} = ‘!’; echo $str 2; l $var = $othervar – Effettua copia del valore di $othervar l $var = &$othervar – Assegnamento per reference
Controllo l Si può implementare la tail-recursion in C? l Come si tratta la sincronizzazione? l Puntatori a funzione? l Come chiamare una funzione arbitraria data la lista dei suoi argomenti?
invoke(fun, arglist) { if (n==0) return f(); else if (n==1) return f(arg[0]); else return fun(arg[0], arg[1], . . , arg[n-1]); }
Tipi dato elementari l Stringhe C, Pascal e C++ sono diverse l Array in ordine di riga o di colonna?
Language Interoperability l C# e Cobol si abbaiano a vicenda
C# dog using System; public class Dog { public virtual void Roll. Over () { Console. Write. Line("Scratch my tummy. "); Bark(); } public virtual void Bark () { Console. Write. Line("WOOF (C#)"); } }
Cobol Big. Dog 000010 CLASS-ID. Big. Dog INHERITS Dog. 000020 ENVIRONMENT DIVISION. 000040 CONFIGURATION SECTION. 000050 REPOSITORY. 000060 CLASS Dog. 000070 OBJECT. 000080 PROCEDURE DIVISION. 000090 METHOD-ID. Bark OVERRIDE. 000160 PROCEDURE DIVISION. DISPLAY "WOOF (COBOL)". 000210 END METHOD Bark. 000220 END OBJECT. 000230 END CLASS Big. Dog.
Barfing dogs public class Demo { public static void Main() { Dog d = new Dog(); Big. Dog b = new Big. Dog(); d. Roll. Over(); b. Roll. Over(); } }
Final Paper Scopo di mettere alla prova capacità complessive di concezione e realizzazione di soluzioni articolate l Esempi: l – 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
Home Work l Proporre una semplice implementazione delle primitive: – void* malloc(size_t size) – void free(void*) l Discutere i limiti della soluzione
- Microeconomia avanzata
- Avanzata
- Gerardo attardi
- Ambienti di programmazione per il software di base
- Ambienti di programmazione per il software di base
- Ambienti di programmazione per il software di base
- Tesina sulle donne introduzione
- Introduzione alle funzioni
- Manuale pedagogia generale
- Esempi di introduzione tesina terza media
- Introduzione alla psicologia della comunicazione
- Introduzione alla sociologia ritzer
- Enti primitivi della geometria euclidea
- Testo informativo esempio
- Introduzione cap
- Introduzione al pensiero complesso
- Introduzione alle basi di dati
- Lettera aperta struttura
- Introduzione alle criptovalute
- Introduzione alla finanza
- Alla sera foscolo
- Introduzione agli algoritmi e strutture dati
- Tesina sulle derivate
- Introduzione alla psicometria
- Credo negli esseri umani tesina
- Grado totale di un monomio