18 Aprile 2012JUG Torino        Estendere Java con il Meta     Programming System di JetBrains                           F...
A cosa serve un linguaggio?Cos’è il Meta Programming System?Come si usa?Per cosa viene usato?
I linguaggi strumenti percomunicare eorganizzare i pensieri.
We see and hear and otherwise experiencevery largely as we do because the languagehabits of our community predispose certa...
The tools we are trying to use and thelanguage or notation we are using toexpress or record our thoughts, are themajor fac...
A cosa serve un linguaggio?Cos’è il Meta Programming System?Come si usa?Per cosa viene usato?
MPS è un Language WorkbenchLanguage workbenches support the ideaof Language-OrientedProgramming, which is the notion ofbui...
MPS è un Projectional Editor         Source Editing (quello cui siamo abituati)          Immagine tratta da http://martinf...
MPS è un Projectional Editor                                                            Proiezione                        ...
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 stringheSupporto a tecnich...
Estensioni per C per realizzare sistemi embedded.Progetto finanziato dal governo tedesco.Coinvolge Markus Völter, itemis, ...
Grazie!          Federico Tomassetti          f.tomassetti@gmail.com
VantaggiDefinizione precisa della semantica    Nel definire un’estensione formalizzo un concetto e    definisco nel dettag...
Estendere Java con il Meta Programming System di JetBrains
Upcoming SlideShare
Loading in …5
×

Estendere Java con il Meta Programming System di JetBrains

2,228 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,228
On SlideShare
0
From Embeds
0
Number of Embeds
1,464
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • ----- Meeting Notes (4/15/12 12:46) -----Riferimento a supporto OOP in C in tutti e tre i passaggi.
  • Estendere Java con il Meta Programming System di JetBrains

    1. 1. 18 Aprile 2012JUG Torino Estendere Java con il Meta Programming System di JetBrains Federico Tomassetti f.tomassetti@gmail.com
    2. 2. A cosa serve un linguaggio?Cos’è il Meta Programming System?Come si usa?Per cosa viene usato?
    3. 3. I linguaggi strumenti percomunicare eorganizzare i pensieri.
    4. 4. We see and hear and otherwise experiencevery largely as we do because the languagehabits of our community predispose certainchoices of interpretation Sapir 1929…the world is presented in a kaleidoscopicflux of impressions which has to beorganized by our minds - and this meanslargely by the linguistic systems in our minds. Whorf 1940
    5. 5. The tools we are trying to use and thelanguage or notation we are using toexpress or record our thoughts, are themajor factors determining what we canthink or express at all! Dijkstra 1972 (EWD340)
    6. 6. A cosa serve un linguaggio?Cos’è il Meta Programming System?Come si usa?Per cosa viene usato?
    7. 7. MPS è un Language WorkbenchLanguage workbenches support the ideaof Language-OrientedProgramming, which is the notion ofbuilding a sofware system by identifyingthe various areas of the system and using(perhaps building) a Domain SpecificLanguage for each area.The workbench both supports thedefinition of these languages and also Martin Fowlerintegrating them together into a coherentwhole.
    8. 8. MPS è un Projectional Editor Source Editing (quello cui siamo abituati) Immagine tratta da http://martinfowler.com/bliki/ProjectionalEditing.html
    9. 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. 10. A cosa serve un linguaggio?Cos’è il Meta Programming System?Come si usa?Per cosa viene usato?
    11. 11. A cosa serve un linguaggio?Cos’è il Meta Programming System?Come si usa?Per cosa viene usato?
    12. 12. Syntax sugar Clojure invece che classi anonime, foreach, switch stringheSupporto a tecniche Event driven programming, MVC, aspectgenerali oriented programming, design by contractSupporto domain- Unità di misura per le grandezze fisiche ospecific 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. 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. 14. Grazie! Federico Tomassetti f.tomassetti@gmail.com
    15. 15. VantaggiDefinizione 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.

    ×