523 resultados para GPGPU, CUDA, OpenCL, Programmazione Parallela
Resumo:
Lo scopo di questa tesi di dottorato di ricerca consiste nel fornire la giusta collocazione della manutenzione fra le discipline dell'ingegneria, raccogliendo e formalizzando le metodologie di analisi di affidabilità e di pianificazione degli interventi all'interno di un unico processo di progettazione e di controllo. In linea di principio, un processo di analisi dei guasti e di programmazione della manutenzione deve essere in grado di fornire chiare e sicure risposte ai seguenti interrogativi: Quali sono le funzioni richieste e con quali criteri di prestazioni il sistema è chiamato ad assolverle? Qual'è l'andamento della disponibilità del sistema in funzione del tempo? Quanti guasti e di quale tipo si possono verificare durante la vita del sistema? Quali possono essere le conseguenze che ledono la sicurezza e la protezione ambientale? Quanti pezzi di ricambio sono necessari? Che tipo di interventi di manutenzione preventiva risultano tecnicamente fattibili? A quali scadenze devono essere programmati? A quanto ammonta la previsione del costo di esercizio del sistema? Quante squadre di manutenzione devono essere assegnate al sistema? Come deve essere organizzata la logistica di manutenzione? Con quali tecniche si prevede di riconoscere i guasti e quali procedure devono essere attivate per farvi fronte? E' possibile implementare tecniche di `condition monitoring' delle macchine? Su quali tempi di preavviso sui guasti si può contare? In tal senso, la manutenzione necessita delle tecniche e degli opportuni strumenti che siano in grado di misurarne l'efficacia e l'efficienza. L'efficacia in primo luogo, in quanto l'obiettivo principe consiste nel garantire che il sistema oggetto di studio continui a svolgere le proprie funzioni nei limiti di prestazioni accettabili, secondo le specifiche richieste degli utilizzatori. L'efficienza in secondo luogo, ma non per questo di minore importanza, in quanto perseguendo l'obiettivo di cui sopra, occorre impegnare il minimo di risorse possibili, organizzando con razionalità il supporto logistico del sistema al fine di raggiungere i massimi livelli di rendimento di gestione. La migliore strategia di manutenzione può essere pianificata, a priori, solo se si è in grado di prevedere con la necessaria precisione l'evoluzione del sistema nel suo contesto operativo futuro. E' allora possibile formulare un modello matematico del sistema, studiarne la dinamica ed osservare le reazioni alla simulazione di eventuali stimoli esterni. I metodi ed i modelli noti dell'ingegneria dei sistemi possono essere molto utili per la risoluzione di casi semplici, ma sovente richiedono la formulazione di ipotesi troppo restrittive che aumentano in modo inaccettabile la distanza del modello dalla realtà. Una strada alternativa ed affascinante, che ho percorso con entusiasmo durante questi tre anni di studi e ricerca, consiste nella simulazione numerica della vita del sistema, utilizzando il metodo Monte Carlo per la gestione dei processi stocastici di guasto e per l'esecuzione degli interventi di manutenzione. Ho quindi messo a punto il codice di simulazione RAMSES, perseguendo l'idea di costruire uno strumento di misura dell'efficacia e dell'efficienza di una politica di manutenzione simulata al calcolatore. Nella tesi si presentano i concetti di base dell'ingegneria dei sistemi applicata al caso della manutenzione e si introduce il formalismo della Reliability Centred Maintenance come miglior guida nella pianificazione delle schede di manutenzione. Si introducono le nozioni di base per fornire una struttura solida e corretta alla simulazione numerica dei sistemi riparabili e si presenta il codice RAMSES corredando le informazioni tecniche con i dovuti esempi ed applicazioni pratiche. Si conclude il lavoro, infine, con la presentazione di un modello di massima verosimiglianza particolarmente utile per le analisi dei dati sperimentali di guasto dei componenti.
Resumo:
La tesi si propone di studiare il rapporto tra i due linguaggi di programmazione più diffusi per dispositivi portatili, e si concentra in particolare sul porting dal diffusissimo linguaggio Java all'emergente Objective-C. Strumenti come J2ObjC e Codename One saranno studiati e comparati.
Resumo:
L’obbiettivo di questa tesi consiste in un analisi dello sviluppo di applicazioni mobile, rivolgendo particolare attenzione riguardo a quelle soluzioni che consentono di astrarre dall’ambiente su cui effettivamente queste verranno eseguite, per poi prendere in esame la piattaforma e il linguaggio Mobl. Sarà quindi necessario effettuare una panoramica sullo stato attuale del mercato, introducendo i diversi sistemi presenti e le metodologie proposte per la costruzione del software. Da questo studio sarà possibile ricavare i pregi e i difetti di una programmazione nativa. Volendo, in seguito, ricercare un processo di produzione software che favorisca un’indipendenza dai sistemi precedentemente descritti, verranno illustrati alcuni tra i più importanti Mobile Frameworks e tra questi si prenderà in esame Mobl, che si contraddistingue grazie a caratteristiche peculiari.
Resumo:
Web is constantly evolving, thanks to the 2.0 transition, HTML5 new features and the coming of cloud-computing, the gap between Web and traditional desktop applications is tailing off. Web-apps are more and more widespread and bring several benefits compared to traditional ones. On the other hand reference technologies, JavaScript primarly, are not keeping pace, so a paradim shift is taking place in Web programming, and so many new languages and technologies are coming out. First objective of this thesis is to survey the reference and state-of-art technologies for client-side Web programming focusing in particular on what concerns concurrency and asynchronous programming. Taking into account the problems that affect existing technologies, we finally design simpAL-web, an innovative approach to tackle Web-apps development, based on the Agent-oriented programming abstraction and the simpAL language. == Versione in italiano: Il Web è in continua evoluzione, grazie alla transizione verso il 2.0, alle nuove funzionalità introdotte con HTML5 ed all’avvento del cloud-computing, il divario tra le applicazioni Web e quelle desktop tradizionali va assottigliandosi. Le Web-apps sono sempre più diffuse e presentano diversi vantaggi rispetto a quelle tradizionali. D’altra parte le tecnologie di riferimento, JavaScript in primis, non stanno tenendo il passo, motivo per cui la programmazione Web sta andando incontro ad un cambio di paradigma e nuovi linguaggi e tecnologie stanno spuntando sempre più numerosi. Primo obiettivo di questa tesi è di passare al vaglio le tecnologie di riferimento ed allo stato dell’arte per quel che riguarda la programmmazione Web client-side, porgendo particolare attenzione agli aspetti inerenti la concorrenza e la programmazione asincrona. Considerando i principali problemi di cui soffrono le attuali tecnologie passeremo infine alla progettazione di simpAL-web, un approccio innovativo con cui affrontare lo sviluppo di Web-apps basato sulla programmazione orientata agli Agenti e sul linguaggio simpAL.
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.
Resumo:
La crescente disponibilità di dispositivi meccanici e -soprattutto - elettronici le cui performance aumentano mentre il loro costo diminuisce, ha permesso al campo della robotica di compiere notevoli progressi. Tali progressi non sono stati fatti unicamente per ciò che riguarda la robotica per uso industriale, nelle catene di montaggio per esempio, ma anche per quella branca della robotica che comprende i robot autonomi domestici. Questi sistemi autonomi stanno diventando, per i suddetti motivi, sempre più pervasivi, ovvero sono immersi nello stesso ambiente nel quale vivono gli essere umani, e interagiscono con questi in maniera proattiva. Essi stanno compiendo quindi lo stesso percorso che hanno attraversato i personal computer all'incirca 30 anni fa, passando dall'essere costosi ed ingombranti mainframe a disposizione unicamente di enti di ricerca ed università, ad essere presenti all'interno di ogni abitazione, per un utilizzo non solo professionale ma anche di assistenza alle attività quotidiane o anche di intrattenimento. Per questi motivi la robotica è un campo dell'Information Technology che interessa sempre più tutti i tipi di programmatori software. Questa tesi analizza per prima cosa gli aspetti salienti della programmazione di controllori per robot autonomi (ovvero senza essere guidati da un utente), quindi, come l'approccio basato su agenti sia appropriato per la programmazione di questi sistemi. In particolare si mostrerà come un approccio ad agenti, utilizzando il linguaggio di programmazione Jason e quindi l'architettura BDI, sia una scelta significativa, dal momento che il modello sottostante a questo tipo di linguaggio è basato sul ragionamento pratico degli esseri umani (Human Practical Reasoning) e quindi è adatto alla implementazione di sistemi che agiscono in maniera autonoma. Dato che le possibilità di utilizzare un vero e proprio sistema autonomo per poter testare i controllori sono ridotte, per motivi pratici, economici e temporali, mostreremo come è facile e performante arrivare in maniera rapida ad un primo prototipo del robot tramite l'utilizzo del simulatore commerciale Webots. Il contributo portato da questa tesi include la possibilità di poter programmare un robot in maniera modulare e rapida per mezzo di poche linee di codice, in modo tale che l'aumento delle funzionalità di questo risulti un collo di bottiglia, come si verifica nella programmazione di questi sistemi tramite i classici linguaggi di programmazione imperativi. L'organizzazione di questa tesi prevede un capitolo di background nel quale vengono riportare le basi della robotica, della sua programmazione e degli strumenti atti allo scopo, un capitolo che riporta le nozioni di programmazione ad agenti, tramite il linguaggio Jason -quindi l'architettura BDI - e perché tale approccio è adatto alla programmazione di sistemi di controllo per la robotica. Successivamente viene presentata quella che è la struttura completa del nostro ambiente di lavoro software che comprende l'ambiente ad agenti e il simulatore, quindi nel successivo capitolo vengono mostrate quelle che sono le esplorazioni effettuate utilizzando Jason e un approccio classico (per mezzo di linguaggi classici), attraverso diversi casi di studio di crescente complessità; dopodiché, verrà effettuata una valutazione tra i due approcci analizzando i problemi e i vantaggi che comportano questi. Infine, la tesi terminerà con un capitolo di conclusioni e di riflessioni sulle possibili estensioni e lavori futuri.
Resumo:
La tesi ha per oggetto lo studio delle politiche pubbliche locali ed in particolare delle politiche sociali che dal 2011 sono diventate politiche esclusivamente territoriali. L’obiettivo è quello di verificare se il differente orientamento politico delle amministrazioni genera politiche differenti. Per verificare le ipotesi si sono scelti 2 Comuni simili sul piano delle variabili socio-economiche, ma guidati da giunte con orientamento politico differente: il Comune di Modena a guida Partito Democratico e il Comune di Verona con un sindaco leghista a capo di una giunta di centro-destra. Nella prima parte vengono esposti ed analizzati i principali paradigmi di studio delle politiche (rational choice, paradigma marxista, economia del benessere, corporativismo e pluralismo, neo-istituzionalismo e paradigma relazionale) e viene presentato il paradigma che verrà utilizzato per l’analisi delle politiche (paradigma relazionale). Per la parte empirica si è proceduto attraverso interviste in profondità effettuate ai due Assessori alle Politiche sociali e ai due Dirigenti comunali dei Comuni e a 18 organizzazioni di Terzo settore impegnate nella costruzione delle politiche e selezionate attraverso la metodologia “a palla di neve”. Sono analizzate le disposizioni normative in materia di politica sociale, sia per la legislazione regionale che per quella comunale. L’analisi dei dati ha verificato l’ipotesi di ricerca nel senso che l’orientamento politico produce politiche differenti per quanto riguarda il rapporto tra Pubblica Amministrazione e Terzo settore. Per Modena si può parlare di una scelta di esternalizzazione dei servizi che si accompagna ad un processo di internalizzazione dei servizi tramite le ASP; a Verona almeno per alcuni settori delle politiche (disabilità e anziani) sono stati realizzati processi di sussidiarietà e di governance. Per la fase di programmazione l’orientamento politico ha meno influenza e la programmazione mostra caratteristiche di tipo “top-down”.
Resumo:
"I computer del nuovo millennio saranno sempre più invisibili, o meglio embedded, incorporati agli oggetti, ai mobili, anche al nostro corpo. L'intelligenza elettronica sviluppata su silicio diventerà sempre più diffusa e ubiqua. Sarà come un'orchestra di oggetti interattivi, non invasivi e dalla presenza discreta, ovunque". [Mark Weiser, 1991] La visione dell'ubiquitous computing, prevista da Weiser, è ormai molto vicina alla realtà e anticipa una rivoluzione tecnologica nella quale l'elaborazione di dati ha assunto un ruolo sempre più dominante nella nostra vita quotidiana. La rivoluzione porta non solo a vedere l'elaborazione di dati come un'operazione che si può compiere attraverso un computer desktop, legato quindi ad una postazione fissa, ma soprattutto a considerare l'uso della tecnologia come qualcosa di necessario in ogni occasione, in ogni luogo e la diffusione della miniaturizzazione dei dispositivi elettronici e delle tecnologie di comunicazione wireless ha contribuito notevolmente alla realizzazione di questo scenario. La possibilità di avere a disposizione nei luoghi più impensabili sistemi elettronici di piccole dimensioni e autoalimentati ha contribuito allo sviluppo di nuove applicazioni, tra le quali troviamo le WSN (Wireless Sensor Network), ovvero reti formate da dispositivi in grado di monitorare qualsiasi grandezza naturale misurabile e inviare i dati verso sistemi in grado di elaborare e immagazzinare le informazioni raccolte. La novità introdotta dalle reti WSN è rappresentata dalla possibilità di effettuare monitoraggi con continuità delle più diverse grandezze fisiche, il che ha consentito a questa nuova tecnologia l'accesso ad un mercato che prevede una vastità di scenari indefinita. Osservazioni estese sia nello spazio che nel tempo possono essere inoltre utili per poter ricavare informazioni sull'andamento di fenomeni naturali che, se monitorati saltuariamente, non fornirebbero alcuna informazione interessante. Tra i casi d'interesse più rilevanti si possono evidenziare: - segnalazione di emergenze (terremoti, inondazioni) - monitoraggio di parametri difficilmente accessibili all'uomo (frane, ghiacciai) - smart cities (analisi e controllo di illuminazione pubblica, traffico, inquinamento, contatori gas e luce) - monitoraggio di parametri utili al miglioramento di attività produttive (agricoltura intelligente, monitoraggio consumi) - sorveglianza (controllo accessi ad aree riservate, rilevamento della presenza dell'uomo) Il vantaggio rappresentato da un basso consumo energetico, e di conseguenza un tempo di vita della rete elevato, ha come controparte il non elevato range di copertura wireless, valutato nell'ordine delle decine di metri secondo lo standard IEEE 802.15.4. Il monitoraggio di un'area di grandi dimensioni richiede quindi la disposizione di nodi intermedi aventi le funzioni di un router, il cui compito sarà quello di inoltrare i dati ricevuti verso il coordinatore della rete. Il tempo di vita dei nodi intermedi è di notevole importanza perché, in caso di spegnimento, parte delle informazioni raccolte non raggiungerebbero il coordinatore e quindi non verrebbero immagazzinate e analizzate dall'uomo o dai sistemi di controllo. Lo scopo di questa trattazione è la creazione di un protocollo di comunicazione che preveda meccanismi di routing orientati alla ricerca del massimo tempo di vita della rete. Nel capitolo 1 vengono introdotte le WSN descrivendo caratteristiche generali, applicazioni, struttura della rete e architettura hardware richiesta. Nel capitolo 2 viene illustrato l'ambiente di sviluppo del progetto, analizzando le piattaforme hardware, firmware e software sulle quali ci appoggeremo per realizzare il progetto. Verranno descritti anche alcuni strumenti utili per effettuare la programmazione e il debug della rete. Nel capitolo 3 si descrivono i requisiti di progetto e si realizza una mappatura dell'architettura finale. Nel capitolo 4 si sviluppa il protocollo di routing, analizzando i consumi e motivando le scelte progettuali. Nel capitolo 5 vengono presentate le interfacce grafiche utilizzate utili per l'analisi dei dati. Nel capitolo 6 vengono esposti i risultati sperimentali dell'implementazione fissando come obiettivo il massimo lifetime della rete.
Resumo:
Il problema dell'antibiotico-resistenza è un problema di sanità pubblica per affrontare il quale è necessario un sistema di sorveglianza basato sulla raccolta e l'analisi dei dati epidemiologici di laboratorio. Il progetto di dottorato è consistito nello sviluppo di una applicazione web per la gestione di tali dati di antibiotico sensibilità di isolati clinici utilizzabile a livello di ospedale. Si è creata una piattaforma web associata a un database relazionale per avere un’applicazione dinamica che potesse essere aggiornata facilmente inserendo nuovi dati senza dover manualmente modificare le pagine HTML che compongono l’applicazione stessa. E’ stato utilizzato il database open-source MySQL in quanto presenta numerosi vantaggi: estremamente stabile, elevate prestazioni, supportato da una grande comunità online ed inoltre gratuito. Il contenuto dinamico dell’applicazione web deve essere generato da un linguaggio di programmazione tipo “scripting” che automatizzi operazioni di inserimento, modifica, cancellazione, visualizzazione di larghe quantità di dati. E’ stato scelto il PHP, linguaggio open-source sviluppato appositamente per la realizzazione di pagine web dinamiche, perfettamente utilizzabile con il database MySQL. E’ stata definita l’architettura del database creando le tabelle contenenti i dati e le relazioni tra di esse: le anagrafiche, i dati relativi ai campioni, microrganismi isolati e agli antibiogrammi con le categorie interpretative relative al dato antibiotico. Definite tabelle e relazioni del database è stato scritto il codice associato alle funzioni principali: inserimento manuale di antibiogrammi, importazione di antibiogrammi multipli provenienti da file esportati da strumenti automatizzati, modifica/eliminazione degli antibiogrammi precedenti inseriti nel sistema, analisi dei dati presenti nel database con tendenze e andamenti relativi alla prevalenza di specie microbiche e alla chemioresistenza degli stessi, corredate da grafici. Lo sviluppo ha incluso continui test delle funzioni via via implementate usando reali dati clinici e sono stati introdotti appositi controlli e l’introduzione di una semplice e pulita veste grafica.
Resumo:
L’approccio innovativo di questa tesi alla pianificazione ciclabile consiste nell’integrare le linee guida per la redazione di un biciplan con aspetti, metodologie e strumenti nuovi, per rendere più efficace la programmazione di interventi. I limiti del biciplan risiedono nella fase di pianificazione e di monitoraggio, quindi, nel 1° capitolo, vengono esaminate le differenze esistenti tra la normativa americana (AASHTO) e quella italiana (D.P.R. 557/99). Nel 2° capitolo vengono analizzati gli indicatori usati nella fase di monitoraggio e la loro evoluzione fino alla definizione degli attuali indici per la determinazione del LOS delle infrastrutture ciclabili: BLOS e BCI. L’analisi è integrata con le nuove applicazioni di questi indici e con lo studio del LOS de HCM 2010. BCI e BISI sono stati applicati alla rete di Bologna per risolvere problemi di pianificazione e per capire se esistessero problemi di trasferibilità. Gli indici analizzati prendono in considerazione solo il lato offerta del sistema di trasporto ciclabile; manca un giudizio sui flussi, per verificare l’efficacia delle policy. Perciò il 3° capitolo è dedicato alla metodologia sul monitoraggio dei flussi, mediante l’utilizzo di comuni traffic counter per le rilevazioni dei flussi veicolari. Dal monitoraggio è possibile ricavare informazioni sul numero di passaggi, periodi di punta, esistenza di percorsi preferiti, influenza delle condizioni climatiche, utili ai progettisti; si possono creare serie storiche di dati per controllare l’evoluzione della mobilità ciclabile e determinare l’esistenza di criticità dell’infrastruttura. L’efficacia della pianificazione ciclabile è legata al grado di soddisfazione dell’utente e all’appetibilità delle infrastrutture, perciò il progettista deve conoscere degli elementi che influenzano le scelte del ciclista. Nel 4° capitolo sono analizzate le tecniche e gli studi sulle scelte dell’itinerario dei ciclisti, e lo studio pilota fatto a Bologna per definire le variabili che influenzano le scelte dei ciclisti e il loro peso.
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.
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.
Resumo:
L'approvvigionamento di risorse minerali e la tutela dell'ambiente sono spesso considerate attività contrapposte ed inconciliabili, ma in realtà rappresentano due necessità imprescindibili per le società moderne. Le georisorse, in quanto non rinnovabili, devono essere valorizzate in maniera efficiente, adoperando strumenti che garantiscano la sostenibilità ambientale, sociale ed economica degli interventi estrattivi. La necessità di tutelare il territorio e migliorare la qualità della vita delle comunità locali impone alla Pubblica Amministrazione di implementare misure per la riqualificazione di aree degradate, ma fino ai primi anni '90 la normativa di settore non prevedeva strumenti a tal proposito, e ciò ha portato alla proliferazione di siti estrattivi dismessi e abbandonati senza interventi di recupero ambientale. Il presente lavoro di ricerca fornisce contributi innovativi alla pianificazione e progettazione sostenibile delle attività estrattive, attraverso l'adozione di un approccio multidisciplinare alla trattazione del tema e l'utilizzo esperto dei Sistemi Informativi Geografici, in particolare GRASS GIS. A seguito di una approfondita analisi in merito agli strumenti e le procedure adottate nella pianificazione delle Attività Estrattive in Italia, sono stati sviluppati un metodo di indagine ed un sistema esperto per la previsione ed il controllo delle vibrazioni indotte nel terreno da volate in cava a cielo aperto, che consentono di ottimizzare la progettazione della volata e del sistema di monitoraggio delle vibrazioni grazie a specifici strumenti operativi implementati in GRASS GIS. A supporto di una più efficace programmazione di interventi di riqualificazione territoriale, è stata messa a punto una procedura per la selezione di siti dismessi e di potenziali interventi di riqualificazione, che ottimizza le attività di pianificazione individuando interventi caratterizzati da elevata sostenibilità ambientale, economica e sociale. I risultati ottenuti dimostrano la necessità di un approccio esperto alla pianificazione ed alla progettazione delle attività estrattive, incrementandone la sostenibilità attraverso l'adozione di strumenti operativi più efficienti.