Perché dovrei scrivere un DSL invece di un RIA basato su moduli?

4

Recentemente ho letto alcuni documenti su domini specifici (DSL), ma nessuno di questi sembra affrontare i vantaggi di un DSL su una ricca applicazione Internet (RIA). In una RIA, invece di apprendere la lingua del dominio, l'utente viene fornito con oggetti di dominio come campi modulo, che astrae le definizioni lessicali per la lingua del dominio. Questo sembra più utilizzabile. Cosa mi manca?

    
posta Arseni Mourzenko 04.05.2012 - 17:10
fonte

6 risposte

5

Questo dipende dalla complessità del dominio. Se consiste principalmente di dati strutturati, un editor visuale può essere più intuitivo da utilizzare, ma se il dominio contiene quantità significative di logica, l'esperienza ha dimostrato più e più volte che gli editor visivi sono uno strumento inadeguato per questo.

Inoltre, ci sono alcuni compiti molto comuni e molto utili che sono banali con un linguaggio basato su caratteri (come copia e incolla, ricerca e sostituisci) ma richiedono un sacco di sforzi da implementare in un editor visuale e sono quindi spesso manca.

    
risposta data 04.05.2012 - 17:22
fonte
3

Un modulo restringe le possibili espressioni a un solo tipo. In termini di linguaggio naturale, puoi scrivere qualsiasi cosa tu possa immaginare in inglese. Quello che puoi esprimere con un modulo è molto più limitato: pensa ad esempio a Lib Libs.

    
risposta data 04.05.2012 - 17:23
fonte
1

Sarò il contrarian e sottolineo che i DSL sono spesso raccomandati in modo inappropriato, perché sono un'interfaccia più naturale e flessibile per i programmatori, e ai programmatori piace creare sistemi che siano facili da usare da soli.

Ciò significa che le DSL sono più adatte per funzionalità progettate per programmatori o utenti altamente specializzati e specializzati come i dipartimenti IT. Cose come configurazione / personalizzazione specifica del sito, automazione degli script o logica di business relativamente poco frequente.

Le DSL possono anche essere utili come rappresentazioni intermedie, consentendo al programmatore di scrivere codice agli strati superiori in un linguaggio più compatto e più adatto, anche se gli utenti non lo vedono mai.

    
risposta data 04.05.2012 - 18:53
fonte
0

Poiché il DSL è testo, posso utilizzare strumenti basati su testo. In particolare, posso generare codice per la DSL con uno script di shell tramite metaprogrammazione. Come altri hanno già detto, il DSL non impedisce di avere anche una RIA.

    
risposta data 04.05.2012 - 17:21
fonte
0

Se si incorpora la DSL in un linguaggio di programmazione completo (Python, Ruby, Groovy, ecc.), è possibile utilizzare la DSL per automatizzare le attività.

    
risposta data 04.05.2012 - 17:26
fonte
0

Si scriverebbe un sistema DSL quando si può immaginare la necessità di "script" che esprimano una serie di passaggi più compatti rispetto a un programma convenzionale. Dovresti anche creare una DSL quando vuoi che qualcosa sia configurabile "sul campo" dai non programmatori, ma hai ancora tutta la potenza necessaria per realizzare ciò che gli utenti probabilmente avranno bisogno. Un ovvio esempio è HTML.

In passato avrei spesso creato linguaggi di script per aiutarmi a svolgere attività automatizzate (esempio non aggiornato ora, ma): copia ed eliminazione di file su una WAN in modo che i file di input siano distribuiti e i file di output raccolti e rimossi. Ho creato un linguaggio e un 'corridore' che è stato progettato per copiare i file in una rete. Questo è stato molto meno sforzo e debugging rispetto alla scrittura di programmi simili in C (questo era 25 anni fa).

    
risposta data 22.03.2017 - 19:01
fonte

Leggi altre domande sui tag