SlideShare una empresa de Scribd logo
1 de 16
18 Aprile 2012
JUG Torino




        Estendere Java con il Meta
     Programming System di JetBrains



                           Federico Tomassetti
                           f.tomassetti@gmail.com
A cosa serve un linguaggio?



Cos’è il Meta Programming System?



Come si usa?



Per cosa viene usato?
I linguaggi strumenti per
comunicare e
organizzare i pensieri.
We see and hear and otherwise experience
very largely as we do because the language
habits of our community predispose certain
choices of interpretation
                                 Sapir 1929

…the world is presented in a kaleidoscopic
flux of impressions which has to be
organized by our minds - and this means
largely by the linguistic systems in our minds.
                                 Whorf 1940
The tools we are trying to use and the
language or notation we are using to
express or record our thoughts, are the
major factors determining what we can
think or express at all!
                         Dijkstra 1972 (EWD340)
A cosa serve un linguaggio?



Cos’è il Meta Programming System?



Come si usa?



Per cosa viene usato?
MPS è un Language Workbench

Language workbenches support the idea
of Language-Oriented
Programming, which is the notion of
building a sofware system by identifying
the various areas of the system and using
(perhaps building) a Domain Specific
Language for each area.

The workbench both supports the
definition of these languages and also      Martin Fowler
integrating them together into a coherent
whole.
MPS è un Projectional Editor




         Source Editing (quello cui siamo abituati)


          Immagine tratta da http://martinfowler.com/bliki/ProjectionalEditing.html
MPS è un Projectional Editor
                                                            Proiezione
                                                    Forma visualizzata ed editata




   Rappresentazione astratta
     Forma di persistenza
                                                  Rappresentazione eseguibile
                                                       Forma eseguibile




                           Projectional Editing


              Immagine tratta da http://martinfowler.com/bliki/ProjectionalEditing.html
A cosa serve un linguaggio?



Cos’è il Meta Programming System?



Come si usa?



Per cosa viene usato?
A cosa serve un linguaggio?



Cos’è il Meta Programming System?



Come si usa?



Per cosa viene usato?
Syntax sugar           Clojure invece che classi
                       anonime, foreach, switch stringhe


Supporto a tecniche    Event driven programming, MVC, aspect
generali               oriented programming, design by contract


Supporto domain-       Unità di misura per le grandezze fisiche o
specific               valute monetarie.


Wrapping di librerie   Trasformare una libreria in una estensione del
                       linguaggio per poter verificare a compile time
                       che sia utilizzata correttamente.

Sostituzione di XML    Sostituire XML o simili con estensioni che
                       dialoghino con il resto del codice scritto in
                       Java.
Estensioni per C per realizzare sistemi embedded.
Progetto finanziato dal governo tedesco.
Coinvolge Markus Völter, itemis, Lear, Fortiss.

-   Uso di state-machine che si possono verificare
-   Supporto alla tracciature dei requisiti
-   Supporto alle Software Product Lines
-   Notazioni tabulari e grafiche
Grazie!


          Federico Tomassetti
          f.tomassetti@gmail.com
Vantaggi

Definizione precisa della semantica
    Nel definire un’estensione formalizzo un concetto e
    definisco nel dettaglio come funzioni, riducendo lo spazio
    per le interpretazioni.

Base per astrazioni successive
    Dopo aver formalizzato dei costrutti li trasformo in
    mattoncini elementari per riflettere su nuove astrazion (es.
    OOP e Design Pattern).
Supporto da parte del tool
    Se definisco nuovi costrutti il compilatore e l’editor sono in
    grado di effettuare la validazione e proporre refactoring
    opportuni.

Más contenido relacionado

Similar a Estendere Java con il Meta Programming System di JetBrains

Cose un cat_tool
Cose un cat_toolCose un cat_tool
Cose un cat_toolKarenVacca
 
Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...
Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...
Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...Qabiria
 
Un approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page ApplicationUn approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page Applicationextrategy
 
CAT tool a confronto
CAT tool a confrontoCAT tool a confronto
CAT tool a confrontoQabiria
 
Presentazione tesi - Francesca Germani
Presentazione tesi - Francesca GermaniPresentazione tesi - Francesca Germani
Presentazione tesi - Francesca GermaniRubina Beneduce
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in ActionDotNetMarche
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Commit University
 
Introduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionaliIntroduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionaliFederico Bonelli
 
2010.11.19 iniziare con F#
2010.11.19 iniziare con F#2010.11.19 iniziare con F#
2010.11.19 iniziare con F#Marco Parenzan
 
2010.11.19 iniziare con f#
2010.11.19 iniziare con f#2010.11.19 iniziare con f#
2010.11.19 iniziare con f#Marco Parenzan
 
Le parole sono importanti
Le parole sono importantiLe parole sono importanti
Le parole sono importantiLorenzo Fabbri
 
EXELEARNING COME EDITOR DI CONTENUTI PER MOODLE
EXELEARNING COME EDITOR DI CONTENUTI PER MOODLEEXELEARNING COME EDITOR DI CONTENUTI PER MOODLE
EXELEARNING COME EDITOR DI CONTENUTI PER MOODLEWebinarPro srl
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...LucaGre
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object OrientedStefano Fago
 
ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...
ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...
ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...ROSARIO RIZZO, 2000+
 
Creazione di video tutorial in un corso moodle
Creazione di video tutorial in un corso moodleCreazione di video tutorial in un corso moodle
Creazione di video tutorial in un corso moodleTania Bozhova
 

Similar a Estendere Java con il Meta Programming System di JetBrains (20)

Cose un cat_tool
Cose un cat_toolCose un cat_tool
Cose un cat_tool
 
Object Oriented Programming
Object Oriented ProgrammingObject Oriented Programming
Object Oriented Programming
 
Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...
Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...
Less is more? OmegaT: vantaggi e svantaggi di un approccio essenziale e open ...
 
Un approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page ApplicationUn approccio Frameworkless per sviluppare la tua Single Page Application
Un approccio Frameworkless per sviluppare la tua Single Page Application
 
CAT tool a confronto
CAT tool a confrontoCAT tool a confronto
CAT tool a confronto
 
Presentazione tesi - Francesca Germani
Presentazione tesi - Francesca GermaniPresentazione tesi - Francesca Germani
Presentazione tesi - Francesca Germani
 
Open xml
Open xmlOpen xml
Open xml
 
Corso UML
Corso UMLCorso UML
Corso UML
 
Silverlight in Action
Silverlight in ActionSilverlight in Action
Silverlight in Action
 
Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#Programmazione funzionale: un primo approccio attraverso F#
Programmazione funzionale: un primo approccio attraverso F#
 
Introduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionaliIntroduzione alla struttura degli agenti conversazionali
Introduzione alla struttura degli agenti conversazionali
 
2010.11.19 iniziare con F#
2010.11.19 iniziare con F#2010.11.19 iniziare con F#
2010.11.19 iniziare con F#
 
2010.11.19 iniziare con f#
2010.11.19 iniziare con f#2010.11.19 iniziare con f#
2010.11.19 iniziare con f#
 
Le parole sono importanti
Le parole sono importantiLe parole sono importanti
Le parole sono importanti
 
EXELEARNING COME EDITOR DI CONTENUTI PER MOODLE
EXELEARNING COME EDITOR DI CONTENUTI PER MOODLEEXELEARNING COME EDITOR DI CONTENUTI PER MOODLE
EXELEARNING COME EDITOR DI CONTENUTI PER MOODLE
 
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...Progettazione e realizzazione di una piattaforma middleware per la gestione a...
Progettazione e realizzazione di una piattaforma middleware per la gestione a...
 
Riuso Object Oriented
Riuso Object OrientedRiuso Object Oriented
Riuso Object Oriented
 
ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...
ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...
ProjectLibre - Manuale in Italiano dell'alternativa OpenSource a Microsoft Pr...
 
Corso SDL TRADOS STUDIO 2017 Professional
Corso SDL TRADOS STUDIO 2017 ProfessionalCorso SDL TRADOS STUDIO 2017 Professional
Corso SDL TRADOS STUDIO 2017 Professional
 
Creazione di video tutorial in un corso moodle
Creazione di video tutorial in un corso moodleCreazione di video tutorial in un corso moodle
Creazione di video tutorial in un corso moodle
 

Más de Federico Tomassetti

Jariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlinJariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlinFederico Tomassetti
 
JavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeJavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeFederico Tomassetti
 
How do you create a programming language for the JVM?
How do you create a programming language for the JVM?How do you create a programming language for the JVM?
How do you create a programming language for the JVM?Federico Tomassetti
 
Automatically Spotting Cross-language Relations
Automatically Spotting Cross-language RelationsAutomatically Spotting Cross-language Relations
Automatically Spotting Cross-language RelationsFederico Tomassetti
 
Lifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-CLifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-CFederico Tomassetti
 
Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...
Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...
Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...Federico Tomassetti
 
Xtext Un Framework Per La Creazione Di Dsl
Xtext   Un Framework Per La Creazione Di DslXtext   Un Framework Per La Creazione Di Dsl
Xtext Un Framework Per La Creazione Di DslFederico Tomassetti
 

Más de Federico Tomassetti (10)

Jariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlinJariko - A JVM interpreter for RPG written in kotlin
Jariko - A JVM interpreter for RPG written in kotlin
 
JavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java codeJavaParser - A tool to generate, analyze and refactor Java code
JavaParser - A tool to generate, analyze and refactor Java code
 
How do you create a programming language for the JVM?
How do you create a programming language for the JVM?How do you create a programming language for the JVM?
How do you create a programming language for the JVM?
 
Building languages with Kotlin
Building languages with KotlinBuilding languages with Kotlin
Building languages with Kotlin
 
Building languages with Kotlin
Building languages with KotlinBuilding languages with Kotlin
Building languages with Kotlin
 
Automatically Spotting Cross-language Relations
Automatically Spotting Cross-language RelationsAutomatically Spotting Cross-language Relations
Automatically Spotting Cross-language Relations
 
Lifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-CLifting variability from C to mbeddr-C
Lifting variability from C to mbeddr-C
 
Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...
Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...
Maturity of Software Modelling and Model Driven Engineering: a Survey in the ...
 
What is Federico doing?
What is Federico doing?What is Federico doing?
What is Federico doing?
 
Xtext Un Framework Per La Creazione Di Dsl
Xtext   Un Framework Per La Creazione Di DslXtext   Un Framework Per La Creazione Di Dsl
Xtext Un Framework Per La Creazione Di Dsl
 

Estendere Java con il Meta Programming System di JetBrains

  • 1. 18 Aprile 2012 JUG Torino Estendere Java con il Meta Programming System di JetBrains Federico Tomassetti f.tomassetti@gmail.com
  • 2. A cosa serve un linguaggio? Cos’è il Meta Programming System? Come si usa? Per cosa viene usato?
  • 3. I linguaggi strumenti per comunicare e organizzare i pensieri.
  • 4. We see and hear and otherwise experience very largely as we do because the language habits of our community predispose certain choices of interpretation Sapir 1929 …the world is presented in a kaleidoscopic flux of impressions which has to be organized by our minds - and this means largely by the linguistic systems in our minds. Whorf 1940
  • 5. The tools we are trying to use and the language or notation we are using to express or record our thoughts, are the major factors determining what we can think or express at all! Dijkstra 1972 (EWD340)
  • 6. A cosa serve un linguaggio? Cos’è il Meta Programming System? Come si usa? Per cosa viene usato?
  • 7. MPS è un Language Workbench Language workbenches support the idea of Language-Oriented Programming, which is the notion of building a sofware system by identifying the various areas of the system and using (perhaps building) a Domain Specific Language for each area. The workbench both supports the definition of these languages and also Martin Fowler integrating them together into a coherent whole.
  • 8. MPS è un Projectional Editor Source Editing (quello cui siamo abituati) Immagine tratta da http://martinfowler.com/bliki/ProjectionalEditing.html
  • 9. MPS è un Projectional Editor Proiezione Forma visualizzata ed editata Rappresentazione astratta Forma di persistenza Rappresentazione eseguibile Forma eseguibile Projectional Editing Immagine tratta da http://martinfowler.com/bliki/ProjectionalEditing.html
  • 10. A cosa serve un linguaggio? Cos’è il Meta Programming System? Come si usa? Per cosa viene usato?
  • 11. A cosa serve un linguaggio? Cos’è il Meta Programming System? Come si usa? Per cosa viene usato?
  • 12. Syntax sugar Clojure invece che classi anonime, foreach, switch stringhe Supporto a tecniche Event driven programming, MVC, aspect generali oriented programming, design by contract Supporto domain- Unità di misura per le grandezze fisiche o specific valute monetarie. Wrapping di librerie Trasformare una libreria in una estensione del linguaggio per poter verificare a compile time che sia utilizzata correttamente. Sostituzione di XML Sostituire XML o simili con estensioni che dialoghino con il resto del codice scritto in Java.
  • 13. Estensioni per C per realizzare sistemi embedded. Progetto finanziato dal governo tedesco. Coinvolge Markus Völter, itemis, Lear, Fortiss. - Uso di state-machine che si possono verificare - Supporto alla tracciature dei requisiti - Supporto alle Software Product Lines - Notazioni tabulari e grafiche
  • 14.
  • 15. Grazie! Federico Tomassetti f.tomassetti@gmail.com
  • 16. Vantaggi Definizione precisa della semantica Nel definire un’estensione formalizzo un concetto e definisco nel dettaglio come funzioni, riducendo lo spazio per le interpretazioni. Base per astrazioni successive Dopo aver formalizzato dei costrutti li trasformo in mattoncini elementari per riflettere su nuove astrazion (es. OOP e Design Pattern). Supporto da parte del tool Se definisco nuovi costrutti il compilatore e l’editor sono in grado di effettuare la validazione e proporre refactoring opportuni.

Notas del editor

  1. ----- Meeting Notes (4/15/12 12:46) -----Riferimento a supporto OOP in C in tutti e tre i passaggi.