JUG Milano Meeting #113
Lunedì 17 Giugno 2019
Your Program as a Transpiler (vol.2): Applying Compiler Design to Everyday Programming
La registrazione dell'intervento è su https://youtu.be/gvYPvTSAoHg.
Abstract dell'intervento:
Pur essendo collegato al talk del Voxxed Days Milano 2019 di cui condivide parte del titolo [1], questo intervento è fruibile in modo del tutto indipendente, e ne costituisce un complemento. Mentre al Voxxed abbiamo visto come ottimizzare lo startup time delle applicazioni applicando tecniche legate al mondo dello sviluppo di linguaggi, al JUG vedremo come applicare alcune di queste tecniche anche in un contesto più quotidiano.
Molti dei nostri programmi elaborano dati per produrre un risultato. Il modo con cui avviene tale trasformazione caratterizza il programma stesso. Un 'transpilatore' in tal senso non è diverso: è programma che, dato del codice scritto in un linguaggio di programmazione, genera un programma equivalente scritto in un altro linguaggio. Che cosa caratterizza, però, un transpilatore? Che cosa lo rende diverso da un compilatore? E che lezioni che possiamo imparare da tali programmi? I design pattern utilizzati nell'implementazione di un linguaggio di programmazione sono in realtà alla portata di tutti; non solo possono applicarsi a problemi di programmazione quotidiani, ma sono anche utili per comprendere nuove tecnologie come GraalVM e Quarkus. Lavorando su Drools e jBPM, ho avuto modo di applicare queste tecniche in diverse situazioni. In questo talk, vedremo alcuni esempi.
Pur essendo collegato al talk del Voxxed Days Milano 2019 di cui condivide parte del titolo [1], questo intervento è fruibile in modo del tutto indipendente, e ne costituisce un complemento. Mentre al Voxxed abbiamo visto come ottimizzare lo startup time delle applicazioni applicando tecniche legate al mondo dello sviluppo di linguaggi, al JUG vedremo come applicare alcune di queste tecniche anche in un contesto più quotidiano.
Molti dei nostri programmi elaborano dati per produrre un risultato. Il modo con cui avviene tale trasformazione caratterizza il programma stesso. Un 'transpilatore' in tal senso non è diverso: è programma che, dato del codice scritto in un linguaggio di programmazione, genera un programma equivalente scritto in un altro linguaggio. Che cosa caratterizza, però, un transpilatore? Che cosa lo rende diverso da un compilatore? E che lezioni che possiamo imparare da tali programmi? I design pattern utilizzati nell'implementazione di un linguaggio di programmazione sono in realtà alla portata di tutti; non solo possono applicarsi a problemi di programmazione quotidiani, ma sono anche utili per comprendere nuove tecnologie come GraalVM e Quarkus. Lavorando su Drools e jBPM, ho avuto modo di applicare queste tecniche in diverse situazioni. In questo talk, vedremo alcuni esempi.
[1] https://vxdmilan2019.confinabox.com/talk/NSR-2051/Your_Program_as_a_Transpiler:_Improving_Application_Performance_by_Applying_Compiler_Design
A cura di Edoardo Vacchi:
Durante il mio PhD in UniMi, ho lavorato su un framework per la progettazione e l'implementazione di DSL e linguaggi di programmazione. Dopo tre anni nel dipartimento di R&D di UniCredit, sono entrato a far parte del team Middleware di Red Hat: oggi lavoro principalmente sul rule engine Drools e sulla piattaforma di workflow jBPM.
Durante il mio PhD in UniMi, ho lavorato su un framework per la progettazione e l'implementazione di DSL e linguaggi di programmazione. Dopo tre anni nel dipartimento di R&D di UniCredit, sono entrato a far parte del team Middleware di Red Hat: oggi lavoro principalmente sul rule engine Drools e sulla piattaforma di workflow jBPM.