Para producir cualquier tipo de taxonomía, primero debe hacerse algunas preguntas:
- ¿Los objetos que voy a poner en cualquier relación se definen correctamente?
- Si es así, ¿existen realmente?
- ¿Me estoy limitando solo a un tipo específico de relaciones entre objetos, o hay un requisito establecido para que el sistema use solo relaciones legítimas?
Típicamente, cuando uno escucha una pregunta como la que usted hizo, la respuesta esperada hace varias suposiciones. Por ejemplo, es natural suponer que, dado que todos estos son idiomas, deben formar una jerarquía bajo un concepto más general del lenguaje, o que dividen el espacio de todos los idiomas, o que son subconjuntos entre sí.
Lenguajes de programación
Desafortunadamente, nada de lo anterior parece ser cierto. Quizás solo los lenguajes de programación tienen una definición con la que la mayoría está de acuerdo. Los lenguajes de programación son lenguajes que codifican programas. Codificar significa que una palabra en el lenguaje puede interpretarse como un programa (una secuencia de acciones). Los lenguajes de programación de computadoras son un subconjunto de estos. Ejemplos de lenguajes de programación que no son de computadora: una lista de compras, interpretada como instrucciones para un comprador en un supermercado, ADN interpretado mediante la transcripción de péptidos, un registro musical analógico que sirve como programa para una grabadora.
Por lo tanto, los lenguajes de programación de computadoras son los que programan las computadoras.
Lenguajes de script
No están bien definidos. Está abierto a la interpretación de lo que significa este término. Históricamente, parecería que los lenguajes de programación que no tenían un compilador para producir código de máquina se habían llamado de esta manera. Según los estándares actuales, esto colocaría a todos los lenguajes de programación populares sin ensambladores en esta categoría. Incluso los llamados lenguajes de bajo nivel como C requieren un tiempo de ejecución con procedimientos preexistentes, por lo tanto, los archivos binarios obtenidos al compilar un programa en C no son completamente códigos de máquina, sino que también llaman al tiempo de ejecución de vez en cuando.
Lenguajes de marcado
No están bien definidos. Cada vez que se usa el término, la intención parece ser describir un lenguaje de programación con un léxico muy limitado, utilizado principalmente para generar imágenes visuales o de audio. Puede ser difícil ver XML como algo programado, pero si observa el marcado Man o TexInfo, verá que los caracteres "especiales" son en realidad instrucciones del intérprete.
También es posible dar una interpretación de "programación" para lenguaje XML, algo que podría ser así:
< := 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
...
En pocas palabras: esta división a partir de hoy no parece muy significativa, solo puede darle una cierta intuición sobre el tipo de lenguaje al que se enfrenta, pero no le proporcionará una definición rigurosa.