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

Slides:



Advertisements
Presentazioni simili
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Advertisements

INTRODUZIONE Il framework.NET. Un po di storia Sin dalla prima versione del sistema operativo Windows (1990 circa), nacque la necessità di far comunicare.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Applet Java.
Procedure e funzioni A. Ferrari.
Corrado Cavalli Microsoft .NET MVP
PHP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Sistema di gestione flussi documentali
Linguaggi di programmazione
Metodologie di Programmazione = decomposizione basata su astrazioni
Generalità Linguaggio e Macchina Astratta
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
LIP: 1 Marzo 2005 Classe Object e Vettori. Partiamo da Lesercizio dellultima esercitazione realizzato tramite array Vedremo come si puo fare in modo piu.
WebProfessional Web Content Management System
Fondamenti di Informatica
Distributed Object Computing
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Dott. Nicola Ciraulo CMS Dott. Nicola Ciraulo
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Gestione dei Progetti Software 2 (a.a. 2004/05) - Lezione 3 1 JAVA e Internet: il World Wide Web Internet: milioni di computer collegati fra di loro attraverso.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
Selezione (=scelta) con “if-else”
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Introduzione ad ASP.net
Corso di PHP.
C# LE BASI 2007 Prima lezione - Introduzione.
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Introduzione a C#.
Java Contardi Carlo A.S. 2008/09.
1 Introduzione. 2 Le motivazioni In.net Framework iniziato nel 2000 rappresenta una svolta nella tecnologia Microsoft per andare oltre ai linguaggi esistenti.
Progetto di Reti di Calcolatori L-S Orchestrazione di servizi WEB
Introduzione alla programmazione Object Oriented
Basi di Dati e Sistemi Informativi
Sistemi Informativi sul Web
PORTALE CISCO PROJECT WORK: PORTALE CISCO A cura di: Bellifemine Davide DAlonzo Salvatore Trombino Angelo Zappacosta Luca.
1 Applet ed HTML Fondamenti di Informatica Corso D.
INTRODUZIONE A JAVASCRIPT
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Sintassi: Programma e classi Program::=prog {ClassDeclList {StatList}} ClassDeclList::=ClassDecl ClassDeclList |  ClassDecl::=class Ide c [StaticMetDefList]
la traduzione dei programmi
Introduzione a Javascript
Programmazione Web Presentazione del corso /2015.
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Gestione dei thread in Java
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
LINGUAGGI DI PROGRAMMAZIONE Per comunicare comandi e dati ad un computer occorre un particolare linguaggio detto LINGUAGGIO MACCHINA, che è un insieme.
PiattaformePiattaformePiattaformePiattaforme Antonio Cisternino 11 Marzo 2005 OpenSourceOpenSourceOpenSourceOpenSource e ProprietarieProprietarieProprietarieProprietarie.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Ingegneria del software Modulo 3 - Tecniche di implementazione Unità didattica 1 - Ingegneria dei componenti Ernesto Damiani Università degli Studi di.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
A.a. 2004/05Tecnologie Web1 Corso di Laurea Interfacoltà in Management dell’informazione e della comunicazione aziendale a.a. 2004/05 Tecnologie Web Anna.
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Quinta generazione Quarta generazione Terza generazione Seconda generazione Prima generazione Linguaggio Binario Assembly Cobol Fortran Pascal C C++ Basic.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Architetture software
XVRC2 Emanuele Ruffaldi Giugno Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Programmazione Avanzata Giuseppe Attardi

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

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

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

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

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

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

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

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

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

Scripting Languages Perl Perl Python Python JavaScript JavaScript PHP PHP

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?

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?

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.’; $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

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?

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]);}

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?

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

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#)"); }}

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.

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

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

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