Lingue dichiarative
Declarative programming is often defined as any style of programming that is not imperative. A number of other common definitions exist that attempt to give the term a definition other than simply contrasting it with imperative programming.
For example:
- A program that describes what computation should be performed and not how to compute it
- Any programming language that lacks side effects (or more specifically, is referentially transparent)
- A language with a clear correspondence to mathematical logic.[4]
Fonte: Wikipedia
Le lingue dichiarative hanno lo scopo di esprimere cosa - e non come - un programma dovrebbe realizzare.
Il design basato sul Web (es. HTML / CSS) sono entrambi buoni esempi. Descrivono le istruzioni per il browser su come una pagina web deve essere strutturata e rappresentata visivamente, ma non possiedono alcuna capacità propria di produrre l'output. Il modo in cui browser / client consumano il loro codice può essere molto diverso purché l'output produca il risultato desiderato secondo quanto specificato dal W3C / WHATWG.
Serializzazione / deserializzazione e DSL (Domain Specific Languages) come SQL sono un altro buon esempio. Sono progettati e pensati per seguire uno stretto standard di funzionalità indipendentemente dalla lingua / piattaforma su cui vengono eseguiti.
La chiave per un buon linguaggio dichiarativo è che fa un buon lavoro nel descrivere un dato / processo in termini semplici e finiti con poco spazio per variazioni soggettive.
La chiave per una buona implementazione di un sistema che consuma / produce codice dichiarativo è la coerenza con tutti / tutti gli altri sistemi che la consumano.
Markdown è un buon esempio di un linguaggio dichiarativo utile che soffre di una scarsa specifica iniziale / design. Markdown si è evoluto organicamente in natura per la sua utilità. Sfortunatamente, in assenza di una specifica ben definita, ora ci sono molte diverse varianti quando si tratta di implementazione. Molti sviluppatori importanti hanno preso la standardizzazione di Markdown come una missione personale, ma nel migliore dei casi uno standard ufficiale sarà accettato solo attraverso il lento / doloroso processo di sopravvivenza del più adatto. Anche in questo caso, le variazioni esisteranno sempre in una certa misura.
Tecnicamente, esiste un sistema formale per la classificazione delle lingue chiamato Gerarchia di Chomsky . Descrive in termini matematici i diversi tipi di grammatiche di programmazione in base al modo in cui vengono analizzati.
XML, JSON e YAML generalmente rientrano in lingue context-free o sensibili al contesto a seconda di come vengono utilizzati.
Considerando l'utilizzo, ritengo che Declarative sia un termine migliore per descrivere quello che stai cercando.