Per produrre qualsiasi tipo di tassonomia, è necessario innanzitutto porsi alcune domande:
- Gli oggetti che inserirò in qualsiasi relazione saranno definiti correttamente?
- In tal caso, esistono davvero?
- Mi sto limitando solo a un tipo specifico di relazioni tra oggetti, oppure esiste un requisito prestabilito affinché il sistema usi solo relazioni legittime?
In genere, quando si sente una domanda come quella che si è posta, la risposta prevista fa diverse ipotesi. Ad esempio, è naturale presumere che, poiché tutte queste sono lingue, devono formare una gerarchia sotto un concetto più generale di lingua, o che suddividono lo spazio di tutte le lingue o che sono sottoinsiemi l'uno dell'altro.
Linguaggi di programmazione
Sfortunatamente, nessuna delle precedenti sembra essere vera. Forse solo i linguaggi di programmazione hanno una definizione su cui concordare. I linguaggi di programmazione sono linguaggi che codificano i programmi. La codifica significa che una parola nella lingua può essere interpretata come un programma (una sequenza di azioni). I linguaggi di programmazione per computer sono un sottoinsieme di questi. Esempi di linguaggi di programmazione non informatici: una lista della spesa, interpretata come le indicazioni per un acquirente in un supermercato, il DNA interpretato trascrivendo i peptidi, un disco musicale analogico che funge da programma per un registratore.
I linguaggi di programmazione per computer sono quindi quelli che programmano i computer.
Linguaggi di scripting
Non sono ben definiti. È aperto all'interpretazione del significato di questo termine. Storicamente, sembrerebbe che i linguaggi di programmazione che non avevano un compilatore per produrre codice macchina fossero stati chiamati in questo modo. Secondo gli standard odierni, tutti i linguaggi di programmazione più diffusi senza gli assemblatori rientrano in questa categoria. Anche i cosiddetti linguaggi di basso livello come C richiedono un runtime con procedure preesistenti, quindi i binari ottenuti compilando un programma C non sono interamente codice macchina, ma chiamano ogni tanto il runtime.
Linguaggi 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 un lessico molto limitato, usato principalmente per generare immagini visive o audio. Può essere difficile vedere XML come qualcosa di programmabile, ma se guardi il markup Man o TexInfo, vedrai che i caratteri "speciali" sono in realtà 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
...
In conclusione: questa divisione ad oggi, non sembra molto significativa, può solo darti un'idea del tipo di linguaggio che stai affrontando, ma non ti fornirà una definizione rigorosa.