Per produrre qualsiasi tipo di tassonomia, devi prima pormi alcune domande:
- Gli oggetti che inserirò in qualsiasi relazione verranno definiti correttamente?
- In tal caso, esistono realmente?
- Mi sto limitando a un tipo specifico di relazioni tra oggetti, oppure esiste un requisito per il sistema di utilizzare solo relazioni legittime?
Tipicamente, quando si sente una domanda come quella che hai chiesto, la risposta attesa fa diverse ipotesi. Ad esempio, è naturale assumere che dal momento che tutte queste sono lingue, devono formare una gerarchia sotto un concetto più generale di linguaggio, o che suddividano lo spazio di tutte le lingue, o che siano sottogruppi l'uno dell'altro.
Linguaggi di programmazione
Sfortunatamente, nessuna delle precedenti sembra essere vera. Forse solo i linguaggi di programmazione hanno una definizione più d'accordo. I linguaggi di programmazione sono le lingue che codificano i programmi. Codifica significa che una parola nella lingua può essere interpretata come un programma (una sequenza di azioni). I linguaggi di programmazione informatica sono un sottoinsieme di questi. Esempi di linguaggi di programmazione diversi dal computer: una lista della spesa, interpretata come indicazioni per un acquirente in un supermercato, DNA interpretato trascrivendo peptidi, un record musicale analogico che serve come programma per un registratore.
I linguaggi di programmazione per computer sono quindi quelli che programmano i computer.
Lingue di scripting
Non sono ben definiti. È aperto all'interpretazione che cosa significa questo termine. Storicamente, sembrerebbe che i linguaggi di programmazione che non avevano un compilatore per produrre codice macchina fossero stati chiamati in questo modo. Con gli standard odierni, questo metterebbe tutti i linguaggi di programmazione più popolari in Assembler in questa categoria. Anche i cosiddetti linguaggi di basso livello come C richiedono un runtime con procedure preesistenti, quindi i file binari ottenuti compilando un programma C non sono interamente codice macchina, ma richiamano anche il runtime di tanto in tanto.
Lingue di markup
Non sono ben definiti. Ogni volta che viene usato il termine, l'intenzione sembra essere quella di descrivere un linguaggio di programmazione con lessico molto limitato, utilizzato principalmente per generare immagini visive o audio. Potrebbe essere difficile vedere l'XML come qualcosa da programmare, ma se guardi il markup Man o TexInfo, vedrai che i caratteri "speciali" sono in realtà le istruzioni dell'interprete.
È anche possibile dare un'interpretazione "di programmazione" per il linguaggio XML, qualcosa che potrebbe andare così:
< := put interpreter in the reading node mode
! := if reading node, start CData/Comment mode
else if not in read text mode, signal error
-- := if in start CData/Comment mode, start comment
else if in comment, put in end comment mode
else if in end comment mode, signal error
...
Conclusione: questa divisione, ad oggi, non sembra molto significativa, può solo darvi qualche intuizione sul tipo di linguaggio con cui vi trovate, ma non vi fornirà una definizione rigorosa.