Brand
Informatica, Intelligenza artificiale, Interazione uomo-macchina, ICT

Linguaggi per la programmazione di tecnologie innovative

Obiettivo del progetto è ripensare la natura del calcolo in termini di linearità, sia rispetto alle computazioni classiche che a quelle non-convenzionali, come quella quantistica. Questa ricerca promette di superare le prestazioni delle attuali tecnologie

L’impatto della rivoluzione dell'informazione sulla nostra società attuale è tutt'altro che esaurito e prevedibile. Ad esempio la crescente facilità di accesso all’informazione rende possibile svolgere a distanza un numero sempre crescente di attività professionali, ricreative, educative, sociali: questo aspetto potrebbe invertire il flusso centripeto di popolazione e ricchezza verso le città che ha seguito la rivoluzione industriale. Altro esempio è l'accumulo di crescenti quantità di dati digitali e l’implementazione di tecniche efficienti per analizzarli: questo aspetto rende potenzialmente comprensibili fenomeni finora considerati caotici e, prima d'ora, ignorati.
In presenza di una feroce competizione globale, è evidente la necessità di attività di ricerca lungimiranti che superino meri obiettivi tecnologici e che, accettando di collocarsi in posizioni di frontiera rispetto alle conoscenze attuali in ambito scientifico, sviluppino intuizioni rischiose e visionarie sulle quali basare le tecnologie di domani.

In questo contesto, noi intendiamo ripensare la natura del calcolo sia all’interno dei tradizionali canoni della computazione digitale, sia all’interno dei canoni dei paradigmi non-convenzionali delle computazioni biologiche, molecolari, quantistiche e per i loro nuclei (termodinamicamente) reversibili. Questa ricerca promette di guidare lo sviluppo di nuove logiche e componenti che possono superare le prestazioni delle attuali tecnologie. Il nostro approccio si concentra nell’individuazione delle componenti elementari che compongono l'ossatura stessa dei linguaggi di programmazione, dei tipi e delle logiche di specifica del software. La calibrazione delle possibili interazioni di tali componenti permette di progettare linguaggi con un controllo fine sulle risorse utilizzate allo scopo di garantire proprietà di sequenzialità, concorrenza, ottimalità, complessità computazionale e così via.

Tra i risultati del progetto ricordiamo quelli che possono essere sintetizzati senza richiedere eccessivi dettagli tecnici.
(i) Abbiamo definito un linguaggio di programmazione convenzionale, con costrutti di esecuzione parallela e meccanismi di gestione delle eccezioni, basato sulla nozione di linearità denotazionale.
(ii) Abbiamo studiato un linguaggio di programmazione dotato di tipi lineari, atti a garantire la polinomialità dell'esecuzione dei programmi: in particolare abbiamo indagato l'efficienza dell'esecuzione e abbiamo definito una libreria per facilitarne l’uso.
(iii) Abbiamo proposto dei linguaggi non-convenzionali intrinsecamente lineari sia per la computazione reversibile che per quella quantistica, che mostrano come gestire la duplicazione e la cancellazione dell'informazione in maniera flessibile e controllata.

un racconto di
Luca Luigi Paolini
DIPARTIMENTO / STRUTTURA

Pubblicato il

16 gennaio 2017

condividi

potrebbero interessarti anche