posts - 644, comments - 2003, trackbacks - 137

My Links

News

Raffaele Rialdi website

Su questo sito si trovano i miei articoli, esempi, snippet, tools, etc.

Archives

Post Categories

Image Galleries

Blogs

Links

Textual DSLs with "M"

IMG_0783 IMG_0784

Chris Anderson e Giovanni Della Libera sono gli speaker della sessione che è certamente una delle più interessanti della PDC 2008.

I concetti di Oslo, come ho già detto nel post precedente, non sono stati capiti dalla maggior parte degli attendees. Io ho potuto risolvere i miei dubbi iniziali andando al booth Oslo come fossi un Samurai... ero deciso a metterci le tende pur di avere risposte chiare che mi sono state date.

Il punto è che il messaggio di poca chiarezza è arrivato forte e chiaro al team e infatti in prima fila era presente Don box, Martin Gaudgin e molte altre persone del team.

 

Ma veniamo al dunque. La sessione parla specificamente di MGrammar, quella parte di M che serve a creare la grammatica di un DSL testuale. Niente di meglio di un esempio per fare chiarezza sull'uso di MGrammar.

Intellipad suddivide la schermata in tre porzioni verticali:

  • Sinistra: il comando testuale di cui fare il parsing ... in pratica il nostro nuovo linguaggio
  • Centro: il linguaggio che definisce le regole grammaticali
  • Destra: il grafo che è il risultato del parsing. È suddiviso in nodi e 'successors' che possono essere iterati recuperando i dati parsati

Il linguaggio è molto versatile e consente di definire semplicemente:

  • quali siano i caratteri da ignorare (per esempio spazi e 'a capo')
  • la sintassi per riconoscere i vari pezzi da parsare che fa uso di lambda function
  • i token che, in modo simile alle regular expression, definiscono come sono costituiti gli elementi cghe rappresentano i dati
  • ricorsività che serve ad eseguire un parsing efficiente dei dati che possono ripetersi

Una volta definita la grammatica uso mg.exe per creare i file mx (l'integrazione di Visual Studio arriverà presto ed è comunque già possibile con pochi passi manuali in questa prima CTP).

Il risultato della compilazione è un file mgx che è un package OPC, quindi uno zip con dei contenuti XML al suo interno.

Fatto questo, creo un normale progetto .NET, referenzio un paio di assembly (Microsoft.M.Grammar e System.DataFlow) e scrivo il codice per caricare e parsare la grammatica, ottenendo così il grafo.

IMG_0790 IMG_0791 IMG_0792

Questo è l'inizio e non sembra poi così complesso. Personalmente credo che il successo di questo strumento sia strettamente legato ai tool visuali che Microsoft o terze parti integreranno in Visual Studio per rendere più semplice (visuale) la creazione del file che definisce la grammatica. Se questo avverrà, credo che vedremo finalmente nascere l'epoca dell'industrializzazione del software.

Oggi tutti i software sono opere di artigianato in quanto ogni singolo sviluppatore può fare la differenza tra un software di successo o un clamoroso flop. I DSL danno la possibilità alla software house di costruire una serie di piccoli mattoncini verticali al dominio dell'applicazione che possono essere usati da un power user per eseguire delle customizzazioni.

Facendo un parallelo tra l'industria automobilistica e il software, in una catena di montaggio di una specifica automobile si può costruire solo quel modello ma sono ammesse una serie di varianti come il colore, gli spoiler, etc.. L'operaio non solo non è determinante sulla perdità totale di qualità del prodotto, ma ha dei constraint, cioè possiede solo gli strumenti che servono a quella specifica attività (montare il finestrino piuttosto che il paraurti).

La strada di Oslo è lunga ma promette certamente molto bene.

Print | posted on domenica 2 novembre 2008 01:12 |

Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET