Languages grouping

Do you think that the following groups make sense:

  • machine-centric - machines are a target user
  • human-centric - mainly it is to be used by humans

An example of machine-centric language is XML. It is text-based so it is also readable by humans.
An example of human-centric language is UML. It is a graphical-based modeling language.

My concern is how to classify JSON?

Reading my previous question I have got the next question about what the use world actually means. Can we replace it with: consume, understand, process (e.g. compile, interpret, translate, etc.). It means that any language is a foundation to formally describe a conversation between human-human, machine-machine, human-machine. This way we have 3 groups instead of mentioned 2, but always there is a producer publishing something and subscribers listen to the publisher, e.g. software developer writing C# code, and compiler converting it to an executable. Can we say that language is a contract?

You are on the right way :grin:
De Saussure proposed this definition of language:
“It is a social product of the speech faculty and a collection of necessary conventions which they have been adopted by a social body to permit individuals to exercise that faculty”.

In other words, a language is a convention between speakers.

1 Like

@ldesantis, thanks for the feedback. Agree, in the case of humans-humans, but in the case of the machines, I propose to add formal convention. For example, a high-level programming language where we are trying to create a dialect based on a native language (usually English).

It is my point, but formal in this context means a necessity to define directly or indirectly:

  • Alphabet - set of character we used to represent a meaning
  • Syntax - rules we can use to validate the text
  • Semantics - rules we should apply to correct text with a goal to assign a meaning to it

Maybe it is a simplification, but I am creasy to know how it works for you.