Dynamic programming language
Dynamic programming referred to in the software engineering a class of high-level languages , which the runtime perform activities, not the other programming languages or compile-time run. These activities include, for example, expanding the program during the runtime. These activities can also be simulated in other programming languages, but in dynamic programming languages they are directly supported by the language.
Limits to the definition of dynamic programming languages
The demarcation of dynamic programming languages from others is not exact. Terms such as compilation time and runtime are blurred when using virtual machines or just-in-time compilation , for example . Furthermore, many programming languages offer the possibility of manipulating bytecode or machine language in one way or another . On the other hand, dynamic programming languages are mostly, but not always, dynamically typed .
In general, the assignment of a programming language to the dynamic programming languages is less based on its ability to implement dynamic concepts, but rather on the basis of the simple use of dynamic techniques in this programming language.
Examples
The following programming languages are commonly considered dynamic programming languages:
- ActionScript
- BeanShell
- Common Lisp and other Lisp dialects
- Groovy
- JavaScript
- Julia (programming language)
- Matlab
- Lua
- Objective-C
- Pearl
- PHP
- python
- Ruby
- Small talk
- Tcl
- VBScript
Implementation of dynamic concepts
- Eval
- Some dynamic programming languages offer an eval function. This function executes code that is passed to it in a string.
- Object changes at runtime
- Types or object systems can be changed in dynamic programming languages at runtime. For example, new objects can be created using mixins based on existing objects . Or the inheritance tree is changed at runtime.
- Functional programming
- Functional concepts are often supported by dynamic programming languages. For example, closures are usually part of dynamic programming languages, while continuations are often not supported.
- reflection
- Reflection (engl. Reflection ) and introspection (engl. Introspection ) is usually supported by dynamic programming languages. For example, in Lisp's S-Expressions, the code is evaluated and modified like a data structure.
- Macros
- Some dynamic programming languages combine introspection and evals in macros . In dynamic programming languages, macros make it possible to access information from the compiler and enable "full" access to the program's runtime environment, with which, for example, code optimizations, syntax changes or similar elements of metaprogramming can be implemented.
Web links
- Introduction to dynamic programming languages on lesscode.de , initiative to promote agile technologies
Individual evidence
- ↑ Sun: Using JavaScript as a Real Programming Language ( Memento of the original from August 10, 2017 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. . Therein: "The term dynamic programming language describes a class of programming languages that share a number of common runtime characteristics that are available in static languages only during compilation, if at all."
- ^ Eclipse: Dynamic Languages Toolkit .
- ↑ ActiveState: Solutions for Dynamic Language Support, Management, and Compliance ( Memento of the original from June 12, 2010 in the Internet Archive ) Info: The archive link was automatically inserted and not yet checked. Please check the original and archive link according to the instructions and then remove this notice. .
- ↑ Spring Framework: Dynamic language support .
- ↑ Groovy - official website ( memento of the original from March 2, 2014 in the Internet Archive ) Info: The archive link was inserted automatically and has not yet been checked. Please check the original and archive link according to the instructions and then remove this notice. .