Quali sono le categorie come XML, JSON e YAML classificate? [chiuso]

5

Quali sono le categorie come XML, JSON e YAML classificate come?

Ho già guardato

Ma nessuno dei due è apparso preciso ... Nessuno di questi è veramente pensato per creare query. E JSON non è una lingua, quindi DSL non si applica.

Vedo quelle tecnologie utilizzate molto con i file di configurazione e il passaggio di dati tra servizi Web e client Web. Esiste una categoria generale o un termine per descriverli?

    
posta GlenH7 15.12.2014 - 01:26
fonte

3 risposte

3

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.

    
risposta data 15.12.2014 - 09:21
fonte
8

XML="eXstensible Markup Language "

YAML="YAML non è Markup Language " (Sebbene fosse originariamente "Ancora un altro linguaggio di markup".)

Anche se in verità le persone pensano che siano più simili ai formati di dati (che è JSON) piuttosto che alle lingue in parte perché la gente assume "Language" == "Turing Complete".

    
risposta data 15.12.2014 - 01:41
fonte
2

Pur avendo la parola lingua in loro, non li considererei linguaggi di programmazione, ma piuttosto formati di dati. So che XML è stato usato come formato per alcuni DSL, probabilmente anche per YML.

Una lingua non deve essere Turing completa per essere un linguaggio di programmazione , ma deve essere attiva - senza superare la definizione standard, queste "lingue" non includono significati che agiscono sui dati.

XSLT è un linguaggio che utilizza XML, ma XSLT è più di un semplice XML - attacca i significati oltre la DTD a cui attribuisce il significato che include le azioni da intraprendere sui dati. Anche se non menzionato, l'HTML, come XSLT, è un linguaggio di programmazione. XSLT è completo di Turing mentre HTML non lo è. L'HTML è un linguaggio dichiarativo - dice enfatizzare alcuni contenuti o che alcuni contenuti sono un titolo o essere in grassetto.

L'intero punto dell'XML è che NON includa le azioni, sono i dati. Che cosa significhi questo dato, che si tratti di una lista di cose da fare o di un programma per il calcolo delle sequenze di Fibonacci è irrilevante: l'XML è un dato e la DTD correlata descrive il suo formato, il SIGNIFICATO dei dati è determinato dal consumatore. XML lo fa perché l'HTML ha mescolato i dati e il significato, che si è rivelato un po ', uhm, fragile.

In breve, accettalo come terminologia scadente e prosegui.

    
risposta data 15.12.2014 - 07:18
fonte

Leggi altre domande sui tag