Dynamic programming language

Static programming languages (possibly indirectly) require developers to define the size of utilized memory before compilation (unless working around with pointer logic).

Consistent with object runtime alteration, dynamic languages implicitly need to (re-)allocate memory based on program individual operations.

Reflection is common in many dynamic languages, and typically involves analysis of the types and metadata of generic or polymorphic data.

It can, however, also include full evaluation and modification of a program's code as data, such as the features that Lisp provides in analyzing S-expressions.

Most programmers today who are aware of the term macro have encountered them in C or C++, where they are a static feature which is built in a small subset of the language, and are capable only of string substitutions on the text of the program.

Popular dynamic programming languages include JavaScript, Python, Ruby, PHP, Lua and Perl.