Ho usato Eclipse Xtext in diversi progetti. Mi è piaciuta la facilità di definire una grammatica su un modello di Ecore (meta) e di lasciare tutto generato per te incluso l'editor di plugin Eclipse, ma ero piuttosto a disagio con il sottostante EMF framework con tutto cablato nei campi statici.Quali sono le principali differenze tra MPS e Eclipse Xtext di Jetbrains?
Ultimamente mi sono imbattuto in MPS (Meta Programming System) di Jetbrains. È basato su una filosofia completamente diversa. Mentre Xtext è per creare DSL basati su testo che generano un parser per te (e per istanziare quegli EObject), nella lingua creata da MPS si modifica direttamente la struttura del modello sottostante. Finora ho capito.
Qualcuno ha esperienza con entrambi questi strumenti DSL per evidenziare le principali differenze in termini di lavoro con loro, casi d'uso previsti e pubblico, complessità, curva di apprendimento (per essere onesti, per iniziare a usare Xtext si dovrebbe sapere molto sull'intestino di EMF), generazione di codice ecc.?
Grazie, Heiko, ho una visione migliore ora :) Ho ottenuto la roba basata su testo basata sulla proiezione e le sue conseguenze sul controllo di versione, diff ecc. Quello che vorrei sapere ulteriormente è le differenze in "uso tipico" degli strumenti e nelle loro toolchain. Con Xtext, ottengo un sacco di codice Java generato dal modello Ecore sottostante che posso usare immediatamente in qualsiasi programma Java. Ciò che mi ha spaventato durante la lettura del tutorial ufficiale di MPS è stato il materiale di generazione del codice che ha preso un bel pezzo di esso. Posso attraversare il modello creato da ciò che scrivo nella mia lingua in qualche modo ... facilmente come con EMF? –
In realtà, le persone dietro Xtext stanno facendo un sacco di sforzi per rendere possibile l'uso dei linguaggi Xtext in altri ambienti oltre a Eclipse, ad esempio gli editor Web tramite il progetto Orion e il supporto per IntelliJ IDEA. Puoi leggere ulteriori informazioni al riguardo in https://eclipse.org/Xtext/news.html –
Tutto ciò è vero, tuttavia MPS supporta l'archiviazione personalizzata. Mentre per impostazione predefinita salva il file nel proprio formato (basato su XML), è possibile fornire serializzazione/unserializzazione personalizzate. –