Non penso che tu possa programmare senza creare una nuova lingua, quindi è bene rendersi conto che è quello che stai facendo e capire i problemi.
- Che cos'è una lingua?
Vocabolario, sintassi e semantica.
Un linguaggio standard come VB, Java, C #, ecc. È solo un linguaggio di base . Non appena aggiungi classi, metodi, ecc., Hai aggiunto il vocabolario e la semantica. Esistono molti modi per implementare le lingue: analisi e traduzione, analisi e interpretazione, macro su una lingua esistente, aggiunta di classi e metodi a una lingua esistente.
- Cosa vuoi che faccia una lingua?
Sii buono per esprimere i problemi in modo conciso.
Come fai a sapere se l'hai fatto? La misura che utilizzo è il conteggio delle modifiche . Se arriva il requisito A di una frase, procedo all'attuazione del requisito nel codice. Quando ho finito e ho eliminato tutti i bug, controllo il codice e il repository del codice mi dà un elenco delle modifiche che ho fatto, B. Più piccola è B, migliore è la lingua. Mediata nello spazio di requisiti reali e possibili, questa misura mi dice quanto sia "specifica la lingua" della lingua.
- Perché la concisione è buona?
Perché minimizza i bug.
Se sono necessarie modifiche al codice N per implementare il requisito 1 e talvolta si commettono errori, il numero di bug introdotti è approssimativamente proporzionale a N. Nel limite in cui N = 1, è quasi impossibile introdurre un bug senza provare.
Si noti che questa è una sfida diretta al "bloat di codice" che vediamo al giorno d'oggi.
AGGIUNTO: in risposta alla richiesta di un esempio, vedere esecuzione differenziale . Non dirò che può essere compreso rapidamente, ma riduce significativamente il codice dell'interfaccia utente.