Buone risorse per il design della lingua [chiuso]

4

Ci sono molti libri sul buon web design, sul design dell'interfaccia utente, ecc. Con l'avvento di Xtext, è molto semplice scrivere la tua lingua. Quali sono i buoni libri e le risorse sulla progettazione della lingua?

Non sto cercando un libro sulla compilazione del compilatore (come il libro dei draghi ) ma qualcosa che risponde:

  • Come creare una grammatica che è indulgente (come aggiungere le virgole finali facoltative)?
  • Quali modelli di grammatica causano problemi agli utenti di una lingua?
  • Come creare una grammatica compatta senza introdurre ambiguità. Qui, pensate "clean language", non "parser builder warnings". Forse "come faccio a evitare di confondere lo sviluppatore usando la mia lingua?"
posta Aaron Digulla 20.03.2012 - 10:30
fonte

2 risposte

4

Nel progettare la sintassi del linguaggio, hai una vasta gamma di scelte che è davvero una questione di gusti, non di ingegneria. Se vuoi una sintassi collaudata, testata e familiare, riempi una lingua o tre di tua scelta. Se vuoi esplorare e inventare qualcosa di nuovo, la gamma di potenziali insidie è anche così ampia che gli esempi esistenti potrebbero non essere di aiuto.

C'è una lunga tradizione di libri di design di lingua comparativa, che presentano una selezione di linguaggi contemporanei - con commenti, ma generalmente non molto in termini di conclusioni. Ciò nonostante, potresti fare peggio di trovare una biblioteca di ingegneria universitaria e analizzarne alcune.

Inoltre, tieni presente che la grammatica è probabilmente l'aspetto importante minimo della lingua. Aspetti più importanti includono: il sistema dei tipi, il sistema dei moduli, il supporto dei grandi sistemi, i problemi di portata del nome, l'astrazione, la semantica, la gestione delle risorse, la concorrenza, eccetera.

Aggiunta: Principi di design ed evoluzione linguistica è un articolo disponibile sul web sul design del linguaggio di programmazione (circa 1999) di Bertrand Meyer, il designer di Eiffel.

Si concentra sulla semplicità e coerenza, ma con un vantaggio pragmatico. È interessante notare che la sintassi di Meyer sulla sintassi è che in realtà conta un bel po '. Oltre all'aspetto pratico del supporto degli utenti effettivi, osserva che la sintassi insoddisfacente è spesso un puntatore a problemi semantici più profondi.

    
risposta data 20.03.2012 - 17:58
fonte
2

Non sono a conoscenza di un libro canonico. Ciò potrebbe essere dovuto al fatto che le best practice di progettazione possono essere specifiche del dominio. Un linguaggio per matematici dovrebbe sembrare molto matematico, un linguaggio per i chimici dovrebbe apparire molto simile alla chimica, ecc. Alcune cose che non hanno senso in un dominio sono essenziali in un altro.

Ad esempio, scrivo software per apparecchiature di rete, che ha una propria lingua per la configurazione. Il comando per arrestare una porta è, in modo abbastanza intuitivo, shutdown . Tuttavia, il comando per abilitare una porta è no shutdown . Per me, questo è il design più stupido di sempre, ma è molto naturale per i nostri utenti da una prospettiva storica.

Ricorda che, a meno che tu non sia esattamente nella fascia demografica target, probabilmente sei la persona peggiore per progettare la lingua. Tenderai a volere qualcosa con una grammatica efficiente, o un'implementazione semplice o coerenza con i linguaggi di programmazione che conosci, ma l'utente non si preoccupa di queste cose. Inizia leggendo qualcosa che un utente finale ha scritto e considera il tuo lavoro come un perfezionamento basato su criteri quali parsimonia, coerenza e rimozione dell'ambiguità.

Ad esempio, sto attualmente lavorando su una lingua per tenere traccia di tutti i numeri associati ai giochi di ruolo di penna e carta. Piuttosto che iniziare con la grammatica, o guardando altri linguaggi di programmazione che potevo adattare, ho iniziato osservando come quei numeri sono descritti nei libri di regole pubblicati esistenti. Hanno molte frasi come "penalità di -2 per armatura quando si accuccia", così è come appare la mia sintassi, con parole come penalty , to e when parole chiave. Ci sono ovviamente alcune restrizioni necessarie per renderlo leggibile dal computer, ma la maggior parte delle volte un utente sarà in grado di copiare direttamente da un libro delle regole con solo piccole modifiche.

    
risposta data 20.03.2012 - 17:56
fonte

Leggi altre domande sui tag