# Formal human languages

Natural languages are a mess and a major source of awkwardness in human-computer interaction: text rendering and speech recognition/synthesis are unnecessarily complicated, markup languages have to be used to add (and/or reflect) some semantics, languages such as RDF are mixed with natural ones in order to structure data for querying and other processing, programming languages are similarly used and mixed with natural ones to instruct computers what to do, and multiple special notations and languages are used for mathematics and formal reasoning. The following is a speculation on how it can be better.

Markup languages are perhaps the easiest to eliminate by extending written languages with useful parts of those, similarly to how they were extended with punctuation. Lojban already does it, as well as using a formal grammar and maintaining an audio-visual isomorphism, and even basic SPARQL-like querying can be done with the language itself. Writing system and glyphs designed for efficiency and without historical baggage may require a bit of research, but perhaps it is one of those cases where it is hard to do worse than what is commonly used now.

With the "worse is better" approach of hacking everything quickly together, the next step can be to take the Lojban vocabulary and define most of the words as uninhabited types in a language suitable for both programming and reasoning (such as Agda or Idris), only defining properly a subset that makes sense for computations: numbers, logical connectives, some structures, and so on. Then certain sentences can be treated as proofs, programs, and/or commands by computer programs. But even if it will be polished enough to be usable in speech, a major remaining downside would be basing the language on a certain logic (and possibly its particular flavour), making it rather rigid (and somewhat arbitrary; foundations of mathematics are tricky and controversial). While flexibility often leads to a mess, it seems to be desirable for a human language, and even formal reasoning benefits from different kinds of logic.

Natural languages usually include metalanguages, and a language such as Metamath can be used to employ different kinds of logic. I'm not aware of any program extraction efforts from it, but it seems doable with an approach similar to the one described above: while not any proof in it would correspond to a program, constructive ones would, and those can be extracted and executed.

This is initial speculation I had on my mind for a while, and though not getting to try it out, I find it exciting and writing it down with a hope to expand on it later.