Designing a Human Language via Software

As I've studied language, one thing that starts to be appreciated is that languages are, in a sense, like an engineered/designed thing. And in that, there are all sorts of "parameters" of the design.

Let's think of written language as a means to render a semantic structure (which we'll model as a graph of nodes and edges) into a 2D sequence of characters. If you want to do that, you need to come up with a scheme for how you do that "translation"/encoding from the graph to the sequence of characters.

There are all sorts of choices you can make.

Take for example the basic clause, consisting of verb, subject, and object:

    Verb: Throw
      Thrower: Daniel
      ObjectThrown: Ball
    Occurred?: Yes
    OccurredInPast: Yes

Rendering this clause, we could choose the order Subject-Verb-Object, we could choose Verb-Subject-Object, etc, etc. Or, do we not restrict order and use some kind of system of affixes to indicate what is the subject, which is the object, etc.

How might we indicate that the event occurred in the past? Add a suffix to the verb? A prefix? Via a new word that comes before the verb? After the verb?

What letters should we use to denote the actual words? The English correspondences are only one option. If we were to invent our own lexicon, what's the best design there?

What comes to mind is that I wonder if one could design a computer program to invent a language. It would use a variety of scoring criteria to explore the possibility space. For example, we want to avoid ambiguity, so choices that lead to ambiguity are unwanted. We want to keep things compact, since that relates to the cost of producing and consuming language. Etc, etc.

An interesting area...