I know the definition of a Turing machine but I am trying to find a practical way to characterize a Turing-complete language.
For example, an imperative language is Turing complete if it has conditional branching (e.g., "if" and "goto" statements, or a "branch if zero" instruction) and the ability to change an arbitrary amount of memory (e.g., the ability to maintain an arbitrary number of variables). That gives an easy way to say if a language is Turing complete, as soon as we've found out that it is imperative.
Hence my question is there any similar, characterization of Turing completeness which would work for any language?