Metaprogramming is a set of technics that allow the generation, the analysis of requirements and proof of concept of the code. The main parts of those technics were implemented and thought in the developing process of those language that today are knows to be to most used languages, for instance the template engine for C++ introduced an extremely important way to generate code and is the basis of what is called generative programming, C# and java instead introduced an important feature for object oriented languages, the reflection. Exploring deeply those concepts new ways of thinking software design raises, favoring the implementation of techniques that make code general and flexible, the main requirement in order to design good libraries and frameworks. The application of those knoweledges and concepts brought from time to time at the develop of complex tecnology in the compilers field, tools such as metacompiler are today the most common way for extend and maintain language such as C#, java and C++, also tools like transpiler are common use in development, language such typescript born under the use of a transpiler in order to extend javascript. In the analysis field those techniques brought at the birth of reverse engineering on the software and with that copy protection mechanism that today represent one of the main priorities of an organization in order to prevent code theft.
La metaprogrammazione è un insieme di tecniche che consentono la generazione, l'analisi dei requisiti e della correttezza del codice. I punti cardini di queste tecniche sono stati implementati e pensati nella storia di quelli che oggi sono considerati i linguaggi più utilizzati per la progettazione del software, ad esempio C++ con il template engine ha introdotto alcune tra le più importanti tecniche generative basate sulla programmazione generativa, mentre C# e java hanno nel tempo introdotto un concetto fondamentale nella programmazione odierna, la riflessione. Esplorando a fondo questi due concetti sorgono modi intelligenti e creativi per ripensare il design, favorendo lo sviluppo di tecniche che consentano anche di implementare nel codice particolari tipi di requisiti, come ad esempio la generalità e la flessibilità richiesti da un framework. Le applicazioni di queste conoscenze hanno portato nel tempo anche allo sviluppo di tecnologie complesse nel campo dei compilatori che hanno come campione java,C# e C++ i quali sfruttano ampiamente il concetto di metacompilatore e nel campo dei transpilatori come succede per typescript, famosa estensione del linguaggio typescript. L'evoluzione delle tecnologie nel campo dell'analisi ha portato alla nascita del Reverse Engineering sul software, tecnica che oggi rappresenta una spesa per l'azienda che vuole prevenirla in modo da impedire il furto del codice.
Metaprogrammazione: un'introduzione alla programmazione generativa e riflessiva.
IELACQUA, MATTEO
2020/2021
Abstract
La metaprogrammazione è un insieme di tecniche che consentono la generazione, l'analisi dei requisiti e della correttezza del codice. I punti cardini di queste tecniche sono stati implementati e pensati nella storia di quelli che oggi sono considerati i linguaggi più utilizzati per la progettazione del software, ad esempio C++ con il template engine ha introdotto alcune tra le più importanti tecniche generative basate sulla programmazione generativa, mentre C# e java hanno nel tempo introdotto un concetto fondamentale nella programmazione odierna, la riflessione. Esplorando a fondo questi due concetti sorgono modi intelligenti e creativi per ripensare il design, favorendo lo sviluppo di tecniche che consentano anche di implementare nel codice particolari tipi di requisiti, come ad esempio la generalità e la flessibilità richiesti da un framework. Le applicazioni di queste conoscenze hanno portato nel tempo anche allo sviluppo di tecnologie complesse nel campo dei compilatori che hanno come campione java,C# e C++ i quali sfruttano ampiamente il concetto di metacompilatore e nel campo dei transpilatori come succede per typescript, famosa estensione del linguaggio typescript. L'evoluzione delle tecnologie nel campo dell'analisi ha portato alla nascita del Reverse Engineering sul software, tecnica che oggi rappresenta una spesa per l'azienda che vuole prevenirla in modo da impedire il furto del codice.File | Dimensione | Formato | |
---|---|---|---|
839241_tesi_matteo_ielacqua.pdf
non disponibili
Tipologia:
Altro materiale allegato
Dimensione
407.77 kB
Formato
Adobe PDF
|
407.77 kB | Adobe PDF |
I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.
https://hdl.handle.net/20.500.14240/138404