diff --git a/Makefile b/Makefile
index 69bbbe2..b4a994e 100644
--- a/Makefile
+++ b/Makefile
@@ -3,6 +3,7 @@ FONTSIZE = 8pt
MD = \
bsd \
+ language \
modal-logic \
pandoc \
railsonlisp \
@@ -12,6 +13,7 @@ TEX =
PDF = \
bsd.pdf \
+ language.pdf \
pandoc.pdf \
railsonlisp.pdf \
test.pdf
diff --git a/language.pdf b/language.pdf
new file mode 100644
index 0000000..0629d74
Binary files /dev/null and b/language.pdf differ
diff --git a/language/index.md b/language/index.md
new file mode 100644
index 0000000..54c2b39
--- /dev/null
+++ b/language/index.md
@@ -0,0 +1,65 @@
+Language
+
+Thomas de Grivel <thoxdg@gmail.com>
+
+https://kmx.io/
+
+2020-05-17
+
+# Language
+
+## Structure
+
+### Three components
+
+Any formal language usable with a model is composed of three things :
+
+ - A schema (or grammar)
+ - Semantics
+ - Data
+
+### Schema
+
+In model theory a schema allows you to define an ontology,
+that is a definition of what can and cannot be expressed in your
+language.
+
+It is the shape of your language, the rules which make any pattern
+part of the language or not.
+
+The most used schemas for formal language definition are grammars.
+
+Is there a grammar for each possible schema ?
+
+### Semantics
+
+Semantics tell you the meaning of the language. They describe
+how to translate your language into another one.
+
+This is a relative process : a semantic is from a language to another,
+even if it is the same language acting as source and destination
+language.
+
+Semantics give meaning to your language which otherwise is just another
+data model.
+
+A number of programming languages also export the semantics of
+lower-level constructs such as mathematical operations from the processor
+or disk access from the kernel.
+
+### Data
+
+Data is valid use of the language for reasons pertaining to its
+semantics.
+
+It is a direct application of the language schema.
+
+The data of the language is directed by the semantics of
+the language.
+
+Usually the schema of the language has an entropy of orders
+of magnitude higher than the available storage space for the
+language data.
+
+Data is a choice from the possibilities of the language schema
+driven by the semantics of the language.