In computer science, the prefix "meta" is commonly used to mean "about (its own category)". For example, metadata are data that describe other data. A language that is used to describe other languages is a metalanguage. Meta may also mean "on a higher level of abstraction". A metalanguage operates on a higher level of abstraction in order to describe properties of a language. Backus–Naur form (BNF) is a formal metalanguage originally used to define ALGOL 60. BNF is a weak metalanguage, for it describes only the syntax and says nothing about the semantics or meaning. Metaprogramming is the writing of computer programs with the ability to treat programs as their data. A metacompiler takes as input a metaprogram written in a specialized metalanguages (a higher level abstraction) specifically designed for the purpose of metaprogramming. The output is an executable object program.