Non penso che tu possa programmare senza creare un nuovo linguaggio, quindi è bene rendersi conto di quello che stai facendo e capire i problemi.
- Che cos'è un linguaggio?
Vocabolario, sintassi e semantica.
Un linguaggio comune come VB, Java, C #, ecc. è solo una lingua di base . Non appena aggiungi classi, metodi, ecc., Hai aggiunto vocabolario e semantica.
Esistono molti modi per implementare le lingue: parsing & traduzione, parsing & interpretazione, macro su una lingua esistente, aggiunta di classi e metodi a una lingua esistente.
- Che cosa vuoi che faccia un linguaggio?
Sii bravo a esprimere i problemi in modo conciso.
Come fai a sapere se l'hai fatto? La misura che uso è modifica numero . Se arriva il requisito di una frase A, procedo a implementare il requisito nel codice. Quando ho finito & ho eliminato tutti i bug, controllo il codice e il repository del codice mi fornisce un elenco delle modifiche apportate, B. La B più piccola è, migliore è la lingua. Mediata nello spazio di reale e amp; requisiti possibili, quella misura mi dice quanto sia "specifica di dominio" la lingua.
- Perché la concisione è buona?
Perché riduce al minimo i bug.
Se occorrono modifiche al codice N per implementare 1 requisito e qualche volta si commettono errori, il numero di bug introdotti è approssimativamente proporzionale a N. Nel limite dove N = 1, è quasi impossibile da introdurre un bug senza provare.
Si noti che questa è una sfida diretta al "code bloat" che vediamo oggigiorno.
AGGIUNTO: in risposta alla tua richiesta di un esempio, vedi esecuzione differenziale . Non dirò che può essere compreso rapidamente, ma riduce in modo significativo il codice UI.