Matteo Rosani
Abilitare nuove e future applicazioni tramite QR code eseguibili = Enable new and future applications through executables QR codes.
Rel. Stefano Scanzio, Gianluca Cena. Politecnico di Torino, Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering), 2023
|
PDF (Tesi_di_laurea)
- Tesi
Licenza: Creative Commons Attribution Non-commercial No Derivatives. Download (1MB) | Preview |
Abstract: |
I codici QR sono codici a barre a matrice solitamente utilizzati per memorizzare informazioni come URL, testi, numeri di telefono e altro che verranno poi letti con appositi lettori ottici o addirittura uno smartphone. Possono contenere una quantità limitata di dati e, per questo motivo, richiedono spesso una connessione a Internet per fornire un servizio più complesso visualizzato su un sito Web accessibile tramite un URL. A volte, tuttavia, non è disponibile una connessione Internet. Si pensi, ad esempio, a luoghi come l'alta montagna, o addirittura luoghi dove la connessione Internet è volutamente limitata, come in un impianto industriale. In questi casi, come fornire un servizio? In questa tesi è stata progettata e sviluppata una tecnica per inserire la logica di elaborazione all'interno del codice QR. In particolare sono stati formalizzati due linguaggi di programmazione di facile utilizzo, che possono essere compilati, memorizzati all'interno del crittogramma e successivamente interpretati su un dispositivo dotato di macchina virtuale. Il primo linguaggio di programmazione che abbiamo formalizzato si chiama QRtree. Ci permette di descrivere alberi decisionali con una sintassi semplice che ricorda il linguaggio di programmazione Python. Gli alberi decisionali sono utili quando è necessario guidare l'utente nel processo decisionale. Con questa tecnologia, possiamo integrare un semplice albero decisionale all'interno di un codice QR per aiutare gli utenti nella decisione di cosa fare in situazioni in cui non è disponibile una connessione Internet. Il secondo linguaggio di programmazione che abbiamo formalizzato si chiama QRprog. Ci permette di descrivere un programma più generale con una sintassi che ricorda il linguaggio di programmazione C. Questo linguaggio è stato sviluppato per dare la possibilità di esprimere algoritmi più complessi che un albero decisionale non può rappresentare. Introduce la possibilità di loop, di creare funzioni e, soprattutto, di suddividere il codice su più codici QR senza la necessità di scansionarli tutti prima di iniziare l'esecuzione. Il codice memorizzato interagisce con l'utente senza richiedere una connessione e può fornire un aiuto in situazioni in cui non è possibile accedere alle informazioni sulla rete. Il lavoro di tesi è stato sviluppato da me e Mattia Scamuzzi. Ci siamo concentrati su diversi aspetti durante lo sviluppo. Si tenga presente che il design dei linguaggi assembly di basso livello, che è il vero focus di questo progetto di tesi, è stato fatto insieme per avere una base comune per lo sviluppo. In particolare, per il primo linguaggio proposto, QRtree, ho lavorato principalmente sul linguaggio ad alto livello sviluppando la toolchain di compilazione per trasformare il codice di alto livello in codice di tipo assembly di basso livello e l'interprete per l'esecuzione dell'assembly. Mattia Scamuzzi si è concentrato sullo sviluppo della toolchain di compilazione per trasformare il codice di basso livello in binario e viceversa. Per il secondo linguaggio, QRprog, ho lavorato principalmente sul linguaggio di basso livello sviluppando la toolchain di compilazione per trasformarlo in binario, gestendo riferimenti e simboli definiti su più file, e anche la trasformazione inversa. Mattia si è concentrato sullo sviluppo della toolchain di compilazione per trasformare il codice di alto livello in codice assembly e un interprete per eseguirlo. |
---|---|
Relatori: | Stefano Scanzio, Gianluca Cena |
Anno accademico: | 2022/23 |
Tipo di pubblicazione: | Elettronica |
Numero di pagine: | 85 |
Soggetti: | |
Corso di laurea: | Corso di laurea magistrale in Ingegneria Informatica (Computer Engineering) |
Classe di laurea: | Nuovo ordinamento > Laurea magistrale > LM-32 - INGEGNERIA INFORMATICA |
Aziende collaboratrici: | NON SPECIFICATO |
URI: | http://webthesis.biblio.polito.it/id/eprint/27712 |
Modifica (riservato agli operatori) |