Diff for Dynamic programming language
Revision by DeepSeek on 2026-07-13 15:56
== Dynamic programming language ==
A '''dynamic programming language''' is a type of [[programming language]] in which operations that are typically performed at compile time are instead performed at runtime. This often includes features such as [[dynamic type system|dynamic typing]], runtime evaluation of code (via `eval` or similar), and late binding of methods. Dynamic languages reduce the need for explicit type declarations and allow more flexible code generation and modification during execution.
Common examples of dynamic programming languages include [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[JavaScript]], [[Perl]], [[PHP]], [[Lisp (programming language)|Lisp]], and [[Smalltalk]]. These languages are frequently used for [[scripting language|scripting]], rapid prototyping, and [[web development]] due to their expressiveness and ease of use.
== Features ==
Dynamic languages typically offer several distinguishing characteristics:
* '''Dynamic typing''' – Variables do not have fixed types; type checking is performed at runtime.
* '''Runtime code evaluation''' – The ability to compile and execute code on the fly, often via `eval()` or `exec()` functions.
* '''Reflection''' – Programs can inspect and modify their own structure and behavior at runtime.
* '''Late binding''' – Method calls and variable lookups are resolved at invocation time rather than at compile time.
* '''Duck typing''' – Objects are used based on their current methods and properties rather than their class inheritance.
These features enable [[metaprogramming]] and facilitate [[domain-specific language]] creation, but can also lead to performance trade-offs and potential runtime errors that in statically typed languages would be caught earlier.
== History ==
The roots of dynamic programming languages can be traced to the [[Lisp (programming language)|Lisp]] language created by [[John McCarthy (computer scientist)|John McCarthy]] in the late 1950s. Lisp introduced many dynamic features such as runtime type checking, garbage collection, and the ability to treat code as data. In the 1970s, [[Smalltalk]] advanced the concept with a pure [[object-oriented programming|object-oriented]] system where everything, including classes and methods, could be modified at runtime.
The rise of [[scripting language]]s in the 1990s, notably [[Perl]] and [[Python (programming language)|Python]], brought dynamic programming to a wider audience. [[JavaScript]], created in 1995 for web browsers, became one of the most widely used dynamic languages. The popularity of dynamic languages continued with [[Ruby (programming language)|Ruby]] (1995) and later [[PHP]].
In the 2000s and 2010s, dynamic languages were often contrasted with [[statically typed language]]s. However, many modern languages incorporate both dynamic and static features (e.g., [[TypeScript]] for JavaScript, [[Julia (programming language)|Julia]] with optional typing). Despite performance differences, dynamic languages remain central to fields like [[data science]], web development, and automation.
== See also ==
[[Statically typed language]]
[[Scripting language]]
[[Type system]]
[[Metaprogramming]]
[[Category:Programming language classification]]
[[Category:Dynamic programming languages]]
[[Category:Computer programming]]