The J programming language combines an ASCII encoding of APL as embodied by SHARP APL with functional techniques developed by John Backus for the FP and FL languages. J is characterized by its use of leading axis theory as a foundational design principle and its tacit programming capabilities. Function trains are a key J feature and were later adopted by Dyalog APL. J's primitives consist of a single ASCII character possibly followed by one or two periods (<source lang=apl inline>.) or colons (<source lang=apl inline>:). It is also notable for its use of terms from English grammar to describe the language. For example, functions are called "verbs" while arrays are called "nouns".