935 resultados para Modello ad Attori, Programmazione Concorrente, Scambio Asincrono di Messaggi, AXUM, .NET Framework


Relevância:

100.00% 100.00%

Publicador:

Resumo:

La tesi si propone, dopo una panoramica generale sullo stato dell'arte in termini di software e concorrenza, l'obiettivo di studiare il modello ad attori ed analizzarne alcune significative implementazioni. Scelta quindi una specifica implementazione come caso di studio, in particolare il linguaggio AXUM in ambiente .NET, si entrerà nel dettaglio di tale linguaggio, analizzandone tutti gli aspetti e valutandone le potenzialità. Infine, sarà affrontata una breve ma significativa analisi critica sul linguaggio scelto.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Negli ultimi anni le Web application stanno assumendo un ruolo sempre più importante nella vita di ognuno di noi. Se fino a qualche anno fa eravamo abituati ad utilizzare quasi solamente delle applicazioni “native”, che venivano eseguite completamente all’interno del nostro Personal Computer, oggi invece molti utenti utilizzano i loro vari dispositivi quasi esclusivamente per accedere a delle Web application. Grazie alle applicazioni Web si sono potuti creare i cosiddetti social network come Facebook, che sta avendo un enorme successo in tutto il mondo ed ha rivoluzionato il modo di comunicare di molte persone. Inoltre molte applicazioni più tradizionali come le suite per ufficio, sono state trasformate in applicazioni Web come Google Docs, che aggiungono per esempio la possibilità di far lavorare più persone contemporanemente sullo stesso documento. Le Web applications stanno assumendo quindi un ruolo sempre più importante, e di conseguenza sta diventando fondamentale poter creare delle applicazioni Web in grado di poter competere con le applicazioni native, che siano quindi in grado di svolgere tutti i compiti che sono stati sempre tradizionalmente svolti dai computer. In questa Tesi ci proporremo quindi di analizzare le varie possibilità con le quali poter migliorare le applicazioni Web, sia dal punto di vista delle funzioni che esse possono svolgere, sia dal punto di vista della scalabilità. Dato che le applicazioni Web moderne hanno sempre di più la necessità di poter svolgere calcoli in modo concorrente e distribuito, analizzeremo un modello computazionale che si presta particolarmente per progettare questo tipo di software: il modello ad Attori. Vedremo poi, come caso di studio di framework per la realizzazione di applicazioni Web avanzate, il Play framework: esso si basa sulla piattaforma Akka di programmazione ad Attori, e permette di realizzare in modo semplice applicazioni Web estremamente potenti e scalabili. Dato che le Web application moderne devono avere già dalla nascita certi requisiti di scalabilità e fault tolerance, affronteremo il problema di come realizzare applicazioni Web predisposte per essere eseguite su piattaforme di Cloud Computing. In particolare vedremo come pubblicare una applicazione Web basata sul Play framework sulla piattaforma Heroku, un servizio di Cloud Computing PaaS.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Panoramica del contesto storico focalizzato sullo sviluppo del Web e del contesto sociale. Panorama del modello a Threads con analisi delle tecniche di concorrenza applicabili. Panoramica del modello ad Attori focalizzandosi sull'implementazione di Akka e di alcuni patterns di comunicazione. Analisi dell'architettura event-driven e di Node.js. Esposizione di un caso di studio per la programmazione Web comparando modello a Thread e modello ad Attori.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Negli ultimi anni si è assistito ad una radicale rivoluzione nell’ambito dei dispositivi di interazione uomo-macchina. Da dispositivi tradizionali come il mouse o la tastiera si è passati allo sviluppo di nuovi sistemi capaci di riconoscere i movimenti compiuti dall’utente (interfacce basate sulla visione o sull’uso di accelerometri) o rilevare il contatto (interfacce di tipo touch). Questi sistemi sono nati con lo scopo di fornire maggiore naturalezza alla comunicazione uomo-macchina. Le nuove interfacce sono molto più espressive di quelle tradizionali poiché sfruttano le capacità di comunicazione naturali degli utenti, su tutte il linguaggio gestuale. Essere in grado di riconoscere gli esseri umani, in termini delle azioni che stanno svolgendo o delle posture che stanno assumendo, apre le porte a una serie vastissima di interessanti applicazioni. Ad oggi sistemi di riconoscimento delle parti del corpo umano e dei gesti sono ampiamente utilizzati in diversi ambiti, come l’interpretazione del linguaggio dei segni, in robotica per l’assistenza sociale, per indica- re direzioni attraverso il puntamento, nel riconoscimento di gesti facciali [1], interfacce naturali per computer (valida alternativa a mouse e tastiera), ampliare e rendere unica l’esperienza dei videogiochi (ad esempio Microsoft 1 Introduzione Kinect© e Nintendo Wii©), nell’affective computing1 . Mostre pubbliche e musei non fanno eccezione, assumendo un ruolo cen- trale nel coadiuvare una tecnologia prettamente volta all’intrattenimento con la cultura (e l’istruzione). In questo scenario, un sistema HCI deve cercare di coinvolgere un pubblico molto eterogeneo, composto, anche, da chi non ha a che fare ogni giorno con interfacce di questo tipo (o semplicemente con un computer), ma curioso e desideroso di beneficiare del sistema. Inoltre, si deve tenere conto che un ambiente museale presenta dei requisiti e alcune caratteristiche distintive che non possono essere ignorati. La tecnologia immersa in un contesto tale deve rispettare determinati vincoli, come: - non può essere invasiva; - deve essere coinvolgente, senza mettere in secondo piano gli artefatti; - deve essere flessibile; - richiedere il minor uso (o meglio, la totale assenza) di dispositivi hardware. In questa tesi, considerando le premesse sopracitate, si presenta una sistema che può essere utilizzato efficacemente in un contesto museale, o in un ambiente che richieda soluzioni non invasive. Il metodo proposto, utilizzando solo una webcam e nessun altro dispositivo personalizzato o specifico, permette di implementare i servizi di: (a) rilevamento e (b) monitoraggio dei visitatori, (c) riconoscimento delle azioni.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Studio dei limiti della programmazione ad oggetti concorrente e introduzione dei modelli di concorrenza alternativi forniti in letteratura, prendendo gli attori come caso studio. Analisi delle performance della libreria ad attori Akka e confronto con i meccanismi forniti da Java 7.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

La presente dissertazione illustra lo studio, svolto in ambito di Tesi di Laurea Specialistica, della difesa delle aree di pianura prospicienti il tratto medio inferiore del Fiume Po dalle cosiddette piene al limite della prevedibilità, ovvero quelle aventi intensità al di sopra della quale le procedure di stima statistica perdono di significato a causa della mancanza di eventi osservati confrontabili (Majone, Tomirotti, 2006). In questo contesto si è definito come evento di piena al limite della prevedibiltà un evento con tempo di ritorno pari a cinquecento anni. Lo studio ha necessariamente preso in considerazione e riprodotto attraverso una schematizzazione concettuale le esondazioni all'esterno delle arginature maestre che si verificherebbero in conseguenza ad un evento estremo, quale quello preso in esame, nei comparti idraulici prospicienti l'asta fluviale. Detti comparti sono costituiti dalle zone di pianura latistanti l’asta fluviale, classificate dall'Autorità di Bacino come Fascia C e suddivise in base alla presenza degli affluenti principali del fiume Po e delle principali infrastrutture viarie e ferroviarie situate in tale fascia. Il presente studio persegue l’obiettivo di analizzare alcune politiche di intervento per la mitigazione del rischio alluvionale alternative al sovralzo e ringrosso arginale e ricade all'interno delle linee strategiche individuate dall' AdB-Po per la mitigazione del rischio residuale, ossia quello che permane anche in presenza di opere di difesa progettate e verificate con riferimento ad un ben preciso tempo di ritorno (nel caso in esame Trit = 200 anni). Questa linea di intervento si traduce praticamente individuando sul territorio aree meno "sensibili", in virtù del minor valore o dell'inferiore vulnerabilità dei beni in esse presenti, e dunque adatte ad accogliere i volumi di piena esondabili in occasione di quegli eventi di piena incompatibili con i presidi idraulici preesistenti, le sopra richiamate piene al limite della prevedibilità. L'esondazione controllata dei volumi di piena in tali aree avrebbe infatti il fine di tutelare le aree di maggior pregio, interessate da centri abitati, infrastrutture e beni di vario tipo; tale controllo è da considerarsi auspicabile in quanto sedici milioni di persone abitano la zona del bacino del Po e qui sono concentrati il 55% del patrimonio zootecnico italiano, il 35% della produzione agricola e il 37% delle industrie le quali però sostengono il 46% dei posti di lavoro (fonte AdB-Po). Per questi motivi il Po e il suo bacino sono da considerare come zone nevralgiche per l’intera economia italiana e una delle aree europee con la più alta concentrazione di popolazione, industrie e attività commerciali. Dal punto di vista economico, l’area è strategica per il Paese garantendo un PIL che copre il 40% di quello nazionale, grazie alla presenza di grandi industrie e di una quota rilevante di piccole e medie imprese, nonché d’attività agricole e zootecniche diffuse. Il punto di partenza è stato il modello numerico quasi-bidimensionale precedentemente sviluppato dal DISTART nel 2008 con il software HEC-RAS, la cui schematizzazione geometrica copriva unicamente l'alveo del Fiume (Fasce A e B secondo la denominazione adottata dall'AdB-Po) e le cui condizioni iniziali e al contorno rispecchiavano un evento con tempo di ritorno pari a duecento anni. Si è proceduto dunque alla definizione di nuove sollecitazioni di progetto, volte a riprodurre nelle sezioni strumentate del Po gli idrogrammi sintetici con tempo di ritorno di cinquecento anni messi a punto dal D.I.I.A.R. (Dipartimento di Ingegneria Idraulica, Ambientale e del Rilevamento, DIIAR, 2001) del Politecnico di Milano. Il modello stesso è stato poi aggiornato e considerevolmente modificato. Il risultato consiste in un nuovo modello matematico idraulico di tipo quasi-bidimensionale che, attraverso una schematizzazione concettuale, riproduce il comportamento idraulico in occasione di eventi di piena al limite della prevedibilità per tutte e tre le Fasce Fluviali considerate nel Piano stralcio per l’Assetto Idrogeologico redatto dall'AdB-Po (Fasce A, B C, v. PAI, 1999). I diversi comparti idraulici in cui può essere suddivisa la Fascia C sono stati inseriti nel modello e geometricamente descritti in termini di curve di riempimento, ricavate a partire dal DTM del Bacino del Po attraverso opportune elaborazioni in ambiente GIS (Geographic Information System). Una volta predisposto il modello sono state condotte due tipologie di simulazioni. Una prima serie è stata volta alla definizione in maniera iterativa dei punti critici degli argini maestri, ovvero quelli nei quali si prevedeva avvenisse la tracimazione, e alla modellazione in essi della formazione di brecce, decisive per una corretta riproduzione del fenomeno di esondazione all'esterno delle arginature maestre nell'attuale configurazione; bisogna infatti considerare che le arginature maestre vengono comunemente progettate con il solo fine di contenere le portate di piena in alveo, e che dunque un’eventuale tracimazione induce fenomeni erosivi che solitamente portano all'apertura di una breccia nel manufatto (rotta arginale). Un'ulteriore simulazione ha permesso di valutare l'evoluzione del fenomeno sotto l'ipotesi di un intervento di consolidamento degli argini maestri nei tratti critici (interessati dai sormonti) e quindi di rotta arginale impedita. Il confronto dei risultati ottenuti ha evidenziato i benefici associati ad una laminazione controllata dell'evento di piena all'esterno delle arginature. In questo contesto il termine "controllata" è esclusivamente associato al fenomeno di rotta arginale, come detto inibita per lo scenario ipotetico. I benefici di tale controllo si hanno in termini di volumi, di portate esondate e di tiranti attesi nei comparti idraulici. Lo strumento modellistico predisposto nell’ambito della Tesi di Laurea Specialistica si presta ad essere utilizzato a supporto dell’identificazione su ampia scala delle zone della Fascia C meno “sensibili”, in quanto meno vulnerabili ai fenomeni di allagamento. Questo ulteriore passaggio costituisce il punto di partenza per delineare le strategie ottimali di laminazione controllata in Fascia C degli eventi al limite della prevedibilità al fine della riduzione del rischio idraulico nelle aree di pianura prospicienti il Po, aspetto che verrà affrontato in sviluppi successivi del presente lavoro.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Uno dei temi più discussi ed interessanti nel mondo dell’informatica al giorno d’oggi è sicuramente il Cloud Computing. Nuove organizzazioni che offrono servizi di questo tipo stanno nascendo ovunque e molte aziende oggi desiderano imparare ad utilizzarli, migrando i loro centri di dati e le loro applicazioni nel Cloud. Ciò sta avvenendo anche grazie alla spinta sempre più forte che stanno imprimendo le grandi compagnie nella comunità informatica: Google, Amazon, Microsoft, Apple e tante altre ancora parlano sempre più frequentemente di Cloud Computing e si stanno a loro volta ristrutturando profondamente per poter offrire servizi Cloud adeguandosi così a questo grande cambiamento che sta avvenendo nel settore dell’informatica. Tuttavia il grande movimento di energie, capitali, investimenti ed interesse che l’avvento del Cloud Computing sta causando non aiuta a comprendere in realtà che cosa esso sia, al punto tale che oggi non ne esiste ancora una definizione univoca e condivisa. La grande pressione inoltre che esso subisce da parte del mondo del mercato fa sì che molte delle sue più peculiari caratteristiche, dal punto di vista dell’ingegneria del software, vengano nascoste e soverchiate da altre sue proprietà, architetturalmente meno importanti, ma con un più grande impatto sul pubblico di potenziali clienti. L’obbiettivo che ci poniamo con questa tesi è quindi quello di esplorare il nascente mondo del Cloud Computing, cercando di comprenderne a fondo le principali caratteristiche architetturali e focalizzando l’attenzione in particolare sullo sviluppo di applicazioni in ambiente Cloud, processo che sotto alcuni aspetti si differenzia molto dallo sviluppo orientato ad ambienti più classici. La tesi è così strutturata: nel primo capitolo verrà fornita una panoramica sul Cloud Computing nella quale saranno date anche le prime definizioni e verranno esposti tutti i temi fondamentali sviluppati nei capitoli successivi. Il secondo capitolo costituisce un approfondimento su un argomento specifico, quello dei Cloud Operating System, componenti fondamentali che permettono di trasformare una qualunque infrastruttura informatica in un’infrastruttura Cloud. Essi verranno presentati anche per mezzo di molte analogie con i classici sistemi operativi desktop. Con il terzo capitolo ci si addentra più a fondo nel cuore del Cloud Computing, studiandone il livello chiamato Infrastructure as a Service tramite un esempio concreto di Cloud provider: Amazon, che fornisce i suoi servizi nel progetto Amazon Web Services. A questo punto, più volte nel corso della trattazione di vari temi saremo stati costretti ad affrontare le problematiche relative alla gestione di enormi moli di dati, che spesso sono il punto centrale di molte applicazioni Cloud. Ci è parso quindi importante approfondire questo argomento in un capitolo appositamente dedicato, il quarto, supportando anche in questo caso la trattazione teorica con un esempio concreto: BigTable, il sistema di Google per la gestione della memorizzazione di grandi quantità di dati. Dopo questo intermezzo, la trattazione procede risalendo lungo i livelli dell’architettura Cloud, ricalcando anche quella che è stata l’evoluzione temporale del Cloud Computing: nel quinto capitolo, dal livello Infrastructure as a Service si passa quindi a quello Platform as a Service, tramite lo studio dei servizi offerti da Google Cloud Platform. Il sesto capitolo costituisce invece il punto centrale della tesi, quello che ne soddisfa l’obbiettivo principale: esso contiene infatti uno studio approfondito sullo sviluppo di applicazioni orientate all’ambiente Cloud. Infine, il settimo capitolo si pone come un ponte verso possibili sviluppi futuri, analizzando quali sono i limiti principali delle tecnologie, dei modelli e dei linguaggi che oggi supportano il Cloud Computing. In esso viene proposto come possibile soluzione il modello ad attori; inoltre viene anche presentato il framework Orleans, che Microsoft sta sviluppando negli ultimi anni con lo scopo appunto di supportare lo sviluppo di applicazioni in ambiente Cloud.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

La presente tesi è dedicata al riuso nel software. Eccettuata un'introduzione organica al tema, l'analisi è a livello dei meccanismi offerti dai linguaggi di programmazione e delle tecniche di sviluppo, con speciale attenzione rivolta al tema della concorrenza. Il primo capitolo fornisce un quadro generale nel quale il riuso del software è descritto, assieme alle ragioni che ne determinano l'importanza e ai punti cruciali relativi alla sua attuazione. Si individuano diversi livelli di riuso sulla base dell'astrazione e degli artefatti in gioco, e si sottolinea come i linguaggi contribuiscano alla riusabilità e alla realizzazione del riuso. In seguito, viene esplorato, con esempi di codice, il supporto al riuso da parte del paradigma ad oggetti, in termini di incapsulamento, ereditarietà, polimorfismo, composizione. La trattazione prosegue analizzando differenti feature – tipizzazione, interfacce, mixin, generics – offerte da vari linguaggi di programmazione, mostrando come esse intervengano sulla riusabilità dei componenti software. A chiudere il capitolo, qualche parola contestualizzata sull'inversione di controllo, la programmazione orientata agli aspetti, e il meccanismo della delega. Il secondo capitolo abbraccia il tema della concorrenza. Dopo aver introdotto l'argomento, vengono approfonditi alcuni significativi modelli di concorrenza: programmazione multi-threaded, task nel linguaggio Ada, SCOOP, modello ad Attori. Essi vengono descritti negli elementi fondamentali e ne vengono evidenziati gli aspetti cruciali in termini di contributo al riuso, con esempi di codice. Relativamente al modello ad Attori, viene presentata la sua implementazione in Scala/Akka come caso studio. Infine, viene esaminato il problema dell'inheritance anomaly, sulla base di esempi e delle tre classi principali di anomalia, e si analizza la suscettibilità del supporto di concorrenza di Scala/Akka a riscontrare tali problemi. Inoltre, in questo capitolo si nota come alcuni aspetti relativi al binomio riuso/concorrenza, tra cui il significato profondo dello stesso, non siano ancora stati adeguatamente affrontati dalla comunità informatica. Il terzo e ultimo capitolo esordisce con una panoramica dell'agent-oriented programming, prendendo il linguaggio simpAL come riferimento. In seguito, si prova ad estendere al caso degli agenti la nozione di riuso approfondita nei capitoli precedenti.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Il Web nel corso della sua esistenza ha subito un mutamento dovuto in parte dalle richieste del mercato, ma soprattutto dall’evoluzione e la nascita costante delle numerose tecnologie coinvolte in esso. Si è passati da un’iniziale semplice diffusione di contenuti statici, ad una successiva collezione di siti web, dapprima con limitate presenze di dinamicità e interattività (a causa dei limiti tecnologici), ma successivamente poi evoluti alle attuali applicazioni web moderne che hanno colmato il gap con le applicazioni desktop, sia a livello tecnologico, che a livello di diffusione effettiva sul mercato. Tali applicazioni web moderne possono presentare un grado di complessità paragonabile in tutto e per tutto ai sistemi software desktop tradizionali; le tecnologie web hanno subito nel tempo un evoluzione legata ai cambiamenti del web stesso e tra le tecnologie più diffuse troviamo JavaScript, un linguaggio di scripting nato per dare dinamicità ai siti web che si ritrova tutt’ora ad essere utilizzato come linguaggio di programmazione di applicazioni altamente strutturate. Nel corso degli anni la comunità di sviluppo che ruota intorno a JavaScript ha prodotto numerose librerie al supporto del linguaggio dotando così gli sviluppatori di un linguaggio completo in grado di far realizzare applicazioni web avanzate. Le recenti evoluzioni dei motori javascript presenti nei browser hanno inoltre incrementato le prestazioni del linguaggio consacrandone la sua leadership nei confronti dei linguaggi concorrenti. Negli ultimi anni a causa della crescita della complessità delle applicazioni web, javascript è stato messo molto in discussione in quanto come linguaggio non offre le classiche astrazioni consolidate nel tempo per la programmazione altamente strutturata; per questo motivo sono nati linguaggi orientati alla programmazione ad oggetti per il web che si pongono come obiettivo la risoluzione di questo problema: tra questi si trovano linguaggi che hanno l’ambizione di soppiantare JavaScript come ad esempio Dart creato da Google, oppure altri che invece sfruttano JavaScript come linguaggio base al quale aggiungono le caratteristiche mancanti e, mediante il processo di compilazione, producono codice JavaScript puro compatibile con i motori JavaScript presenti nei browser. JavaScript storicamente fu introdotto come linguaggio sia per la programmazione client-side, che per la controparte server-side, ma per vari motivi (la forte concorrenza, basse performance, etc.) ebbe successo solo come linguaggio per la programmazione client; le recenti evoluzioni del linguaggio lo hanno però riportato in auge anche per la programmazione server-side, soprattutto per i miglioramenti delle performance, ma anche per la sua naturale predisposizione per la programmazione event-driven, paradigma alternativo al multi-threading per la programmazione concorrente. Un’applicazione web di elevata complessità al giorno d’oggi può quindi essere interamente sviluppata utilizzando il linguaggio JavaScript, acquisendone sia i suoi vantaggi che gli svantaggi; le nuove tecnologie introdotte ambiscono quindi a diventare la soluzione per i problemi presenti in JavaScript e di conseguenza si propongono come potenziali nuovi linguaggi completi per la programmazione web del futuro, anticipando anche le prossime evoluzioni delle tecnologie già esistenti preannunciate dagli enti standard della programmazione web, il W3C ed ECMAScript. In questa tesi saranno affrontate le tematiche appena introdotte confrontando tra loro le tecnologie in gioco con lo scopo di ottenere un’ampia panoramica delle soluzioni che uno sviluppatore web dovrà prendere in considerazione per realizzare un sistema di importanti dimensioni; in particolare sarà approfondito il linguaggio TypeScript proposto da Microsoft, il quale è nato in successione a Dart apparentemente con lo stesso scopo, ma grazie alla compatibilità con JavaScript e soprattutto con il vasto mondo di librerie legate ad esso nate in questi ultimi anni, si presenta nel mercato come tecnologia facile da apprendere per tutti gli sviluppatori che già da tempo hanno sviluppato abilità nella programmazione JavaScript.

Relevância:

100.00% 100.00%

Publicador:

Resumo:

Nell'ambito dello sviluppo software, la concorrenza è sempre stata vista come la strada del futuro. Tuttavia, questa è stata spesso ignorata a causa del continuo sviluppo dell'hardware che ha permesso agli sviluppatori di continuare a scrivere software sequenziale senza doversi preoccupare delle performance. In un'era in cui le nuove architetture hardware presentano processori multi-core, tutto questo non è più possibile. L'obiettivo di questa tesi è stato quello di considerare il Modello ad Attori come valida alternativa allo sviluppo di applicazioni in ambito mobile e quindi di progettare, sviluppare e distribuire un nuovo framework sulla base di tale modello. Il lavoro parte quindi da una panoramica di Swift, il nuovo linguaggio di programmazione presentato da Apple al WWDC 2014, in cui vengono analizzati nel dettaglio i meccanismi che abilitano alla concorrenza. Successivamente viene descritto il modello ad attori in termini di: attori, proprietà, comunicazione e sincronizzazione. Segue poi un'analisi delle principali implementazioni di questo modello, tra cui: Scala, Erlang ed Akka; quest'ultimo rappresenta la base su cui è stato ispirato il lavoro di progettazione e sviluppo del framework Actor Kit. Il quarto capitolo descrive tutti i concetti, le idee e i principi su cui il framework Actor Kit è stato progettato e sviluppato. Infine, l'ultimo capitolo presenta l'utilizzo del framework in due casi comuni della programmazione mobile: 1) Acquisizione dati da Web API e visualizzazione sull'interfaccia utente. 2) Acquisizione dati dai sensori del dispositivo. In conclusione Actor Kit abilita la progettazione e lo sviluppo di applicazioni secondo un approccio del tutto nuovo nell'ambito mobile. Un possibile sviluppo futuro potrebbe essere l'estensione del framework con attori che mappino i framework standard di Apple; proprio per questo sarà reso pubblico con la speranza che altri sviluppatori possano evolverlo e renderlo ancora più completo e performante.