FACTOID # 185: Russia produces more natural gas than the next six countries combined, and has over a quarter of the world's proven gas reserves.
 
 Home   Encyclopedia   Statistics   Countries A-Z   Flags   Maps   Education   Forum   FAQ   About 
 
WHAT'S NEW
RECENT ARTICLES
More Recent Articles »
 

Encyclopedia > Dynamic programming language

Dynamic programming language is a term used broadly in computer science to describe a class of high level programming languages that execute at runtime many common behaviors that other languages might perform during compilation, if at all. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system, all during program execution. These behaviors can be emulated in nearly any language of sufficient complexity, but dynamic languages provide direct tools to make use of them. Computer science, or computing science, is the study of the theoretical foundations of information and computation and their implementation and application in computer systems. ... A high-level programming language is a programming language that is more user-friendly, to some extent platform-independent, and abstract from low-level computer processor operations such as memory accesses. ... A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ... In computer science, runtime or run time describes the operation of a computer program, the duration of its execution, from beginning to termination (compare compile time). ... A diagram of the operation of a typical multi-language, multi-target compiler. ... In computer programming, the word code refers to instructions to a computer in a programming language. ... In strictly mathematical branches of computer science the term object is used in a purely mathematical sense to refer to any thing. While this interpretation is useful in the discussion of abstract theory, it is not concrete enough to serve as a primitive datatype in the discussion of more concrete... In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...


Dynamic languages and dynamic typing are not identical concepts, and a dynamic language need not be dynamically typed, though many dynamic languages are dynamically typed. In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...

Contents

Limitations and ambiguity in the definition

The definition of a dynamic language is ambiguous because it attempts to make distinctions between code and data as well as between compilation and runtime which are not universal. Virtual machines, just-in-time compilation, and the ability of many programming languages on some systems to directly modify machine code make the distinction abstract. In general, the assertion that a language is dynamic is more an assertion about the ease of use of dynamic features than it is a clear statement of the capabilities of the language. In computer science, a virtual machine is software that creates a virtualized environment between the computer platform and its operating system, so that the end user can operate software on an abstract machine. ... For other uses, see Just In Time. ... Machine code or machine language is a system of instructions and data directly understandable by a computers central processing unit. ...


Implementation

There are several mechanisms closely associated with the concept of dynamic programming. None are essential to the classification of a language as dynamic, but most can be found in a wide variety of such languages.


Eval

Eval is a term which was introduced in Lisp, and refers to the process of executing instructions which are represented by data structures called S-expressions. In its modern sense, eval or evalling refers to the mechanism or process of executing any sort of instructions that are available to the program as text or non-machine code data. The evaluation of new program text is a common aspect of many languages that, unlike Lisp, do not make a distinction between reading text and transforming it into an internal form and further transforming that internal form into actions to be taken. These languages are often called interpreted languages when the process of normal program execution is an eval. In some programming languages, eval is a function which evaluates a string as though it were an expression and returns a result; in others, it executes multiple lines of code as though they had been included instead of the line including the eval. ... “LISP” redirects here. ... An S-expression (S stands for symbolic) is a convention for representing data or an expression in a computer program in a text form. ... In computer programming, an interpreted language is a programming language whose programs may be executed from source form, by an interpreter. ...


Higher-order functions

However, Erik Meijer and Peter Drayton caution that any language capable of loading executable code at runtime is capable of eval in some respect, even when that code is in the form of dynamically linked shared libraries of machine code. They suggest that higher-order functions are the true measure of dynamic programming, and some languages "use eval as a poor man's substitute for higher-order functions."[1] In mathematics and computer science, higher-order functions are functions which can take other functions as arguments, and may also return functions as results. ...


Object runtime alteration

A type or object system can typically be modified during runtime in a dynamic language. This can mean generating new objects from a runtime definition or based on mixins of existing types or objects. This can also refer to changing the inheritance or type tree, and thus altering the way that existing types behave (especially with respect to the invocation of methods). In object-oriented programming languages, a mixin is an approach to implementing classes that differs from the most widely-used approach coming from the programming language Simula. ... This article or section does not cite any references or sources. ... In object-oriented programming, the term method refers to a subroutine that is exclusively associated either with a class (called class methods, static methods, or factory methods) or with an object (called instance methods). ...


Functional programming

Functional programming concepts are a feature of many dynamic languages, and also derive from Lisp. Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. ...


Closures

One of the most widely used aspects of functional programming in dynamic languages is the closure, which allows creating a new instance of a function which retains access to the context in which it was created. A simple example of this is generating a function for scanning text for a word: In computer science, a closure is a function that is evaluated in an environment containing one or more bound variables. ...

 function new_scanner (word) temp_function = function (input) scan_for_text (input, word) end function return temp_function end function 

Note that the inner function has no name, and is instead stored in the variable temp_function. Each time new_scanner is executed, it will return a new function which remembers the value of the word parameter that was passed in when it was defined.


Closures[2] are one of the core tools of functional programming, and many languages support at least this degree of functional programming.


Continuations

Another feature of some dynamic languages is the continuation. Continuations represent execution state that can be re-invoked. For example, a parser might return an intermediate result and a continuation that, when invoked, will continue to parse the input. Continuations interact in very complex ways with scoping, especially with respect to closures. For this reason, many dynamic languages do not provide continuations. In computing, a continuation is a representation of some of the execution state of a program (often the call stack and the current Instruction pointer) at a certain point. ...


Introspection

Introspection is common in many dynamic languages, and typically involves a program analyzing its own structure, code, types or data. This can be as simple as being able to determine the type of a generic or polymorphic value. It can also include full analysis of a program's code as data, such as the features that Lisp provides in analyzing S-expressions. In computing, type introspection is a capability of some object-oriented programming languages to determine the type of an object at runtime. ... The Greek meaning of the words poly and morph together imply that a single entity can take on multiple forms. In the field of computer science, there are two fundamentally different types of polymorphism; subtype polymorphism, and parametric polymorphism. ...


Macros

A limited number of dynamic programming languages provide features which combine code introspection and eval in a feature called macros. Most programmers today who are aware of macros have encountered them in C or C++, where they are a static feature which are built in a small subset of the language, and are capable only of string substitutions on the text of the program. In dynamic languages, however, they provide access to the inner workings of the compiler, and full access to the interpreter, virtual machine, or runtime, allowing the definition of language-like constructs which can optimize code or modify the syntax or grammar of the language. For other uses, see Macro (disambiguation) A macro in computer science is a rule or pattern that specifies how a certain input sequence (often a sequence of characters) should be mapped to an output sequence (also often a sequence of characters) according to a defined procedure. ... C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... C++ (pronounced see plus plus, IPA: ) is a general-purpose programming language with high-level and low-level capabilities. ...


Languages

Assembly, C, C++, early Java, and FORTRAN do not generally fit into this category. APL (for A Programming Language) is an array programming language based on a notation invented in 1957 by Kenneth E. Iverson while at Harvard University. ... Befunge is a stack-based, reflective, esoteric fungeoid programming language. ... ChucK is a concurrent, strongly-timed audio programming language for real-time synthesis, composition, and performance, which runs on Mac OS X, Linux, and Windows. ... Wikibooks has more about this subject: Curl The Curl programming language (unrelated to cURL) is a reflective programming language designed to create interactive web content. ... ECMAScript is a scripting programming language, standardized by Ecma International in the ECMA-262 specification. ... ActionScript is a scripting language based on ECMAScript, used primarily for the development of websites and software using the Adobe Flash Player platform (in the form of SWF files embedded into Web pages). ... The DMDScript programming language is Digital Mars implementation of the ECMAScript engine, and thus, scripting language. ... ECMAScript for XML (E4X) is a programming language extension that adds native XML support to ECMAScript (which include ActionScript, DMDScript, JavaScript, JScript). ... Look up Io, io in Wiktionary, the free dictionary. ... It has been suggested that Client-side JavaScript be merged into this article or section. ... JScript is the Microsoft implementation of the ECMAScript scripting programming language specification. ... Eiffel is an ISO-standardized object-oriented programming language designed for extensibility, reusability, reliability and programmer productivity. ... Erlang is a general-purpose concurrent programming language and runtime system. ... Forth is a programming language and programming environment, initially developed by Charles H. Moore at the US National Radio Astronomy Observatory in the early 1970s. ... Groovy is an object-oriented programming language for the Java Platform as an alternative to the Java programming language. ... HyperTalk is a high-level programming language created in 1987 by Dan Winkler and used in conjunction with Apple Computers HyperCard hypermedia program by Bill Atkinson. ... Lisp is a family of computer programming languages with a long history and a distinctive fully-parenthesized syntax. ... Dylan is a dynamic programming language created by a group led by Apple Computer. ... Logo turtle graphic The Logo programming language is a functional programming language. ... Scheme is a multi-paradigm programming language. ... The Lua (pronounced LOO-ah, or in IPA) programming language is a lightweight, reflective, imperative and procedural language, designed as a scripting language with extensible semantics as a primary goal. ... The Maude system is an implementation of rewriting logic developed at SRI International. ... Oberon is a reflective programming language created in the late 1980s by Professor Niklaus Wirth (creator of the Pascal, Modula, and Modula-2 programming languages) and his associates at ETHZ in Switzerland. ... Objective Modula-2 (or ObjM2) is an extension to Modula-2 which follows the Objective-C object model and retains the bracketed Smalltalk message passing syntax introduced in Objective-C. Like Objective-C, Objective Modula-2 is a reflective, object oriented programming language with both static and dynamic typing. ... Objective-C, often referred to as ObjC or more seldomly as Objective C or Obj-C, is an object oriented programming language implemented as an extension to C. It is used primarily on Mac OS X and GNUstep, two environments based on the OpenStep standard, and is the primary language... Wikibooks has a book on the topic of Perl Programming Perl is a dynamic programming language created by Larry Wall and first released in 1987. ... For other uses, see PHP (disambiguation). ... The Pliant programming language is based on a dynamic compiler, which makes it act like it is interpreted. ... POP-11 is a powerful reflective programming language developed as part of the Poplog programming environment by the Universities of Birmingham and Sussex. ... Poplog is a powerful multi-language reflective programming environment, originally created in the UK for use at the Universities of Birmingham and Sussex. ... Windows PowerShell, previously Microsoft Shell or MSH (codenamed Monad) is an extensible command line interface (CLI) shell and scripting language product developed by Microsoft. ... Pike is a general-purpose, high-level, dynamic programming language, with a syntax similar to that of C. Unlike many other dynamic languages, pike is statically typed, and requires explicit type definitions. ... Prolog is a logic programming language. ... Python is a high-level programming language first released by Guido van Rossum in 1991. ... REBOL, the Relative Expression Based Object Language (pronounced [rebl]), is a data exchange and programming language designed specifically for network communications and distributed computing. ... Revolution is a development environment/multimedia authoring software in the tradition of Hypercard. ... Ruby is a reflective, object-oriented programming language. ... For other uses, see Small talk. ... The Bistro programming language is object oriented, dynamically typed, and reflective. ... This article or section does not cite its references or sources. ... Slate is a prototype based object-oriented programming language with multiple dispatch. ... Screenshot of the Squeak VM running under X11 on Kubuntu Linux. ... SNOBOL (StriNg Oriented symBOlic Language) is a computer programming language developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky. ... SuperCard is a high-level development environment that runs on Macintosh computers, under OS 8 and 9, and OS X. It is inspired by HyperCard, but includes a richer language, a full GUI toolkit, and native colour. ... For the particle accelerator, see Superconducting Supercollider. ... Tcl (originally from Tool Command Language, but nonetheless conventionally rendered as Tcl rather than TCL; and pronounced tickle) is a scripting language created by John Ousterhout. ... XOTcl is an object-oriented extension for the reflective Tool Command Language, Tcl. ... TeX (IPA: as in Greek, often in English; written with a lowercase e in imitation of the logo) is a typesetting system created by Donald Knuth. ... VBScript (short for Visual Basic Scripting Edition) is an Active Scripting language developed by Microsoft. ... VFP redirects here. ... Windows PowerShell is an administration focused extensible command line interface (CLI) shell and scripting language product developed by Microsoft. ... xHarbour is a free (GPL + exception supporting commercial applications) multi-platform (DOS, Microsoft Windows, Linux (32,64), Unix (32,64), OS/X) extended Clipper compiler, offering multiple GT (Graphic Terminals), including console drivers, GUIs (free such as HWGui, MiniGUI and commercial, such as Visual xHarbour, FiveWin, Xailer), and Hybrid Console... See the terminology section, below, regarding inconsistent use of the terms assembly and assembler. ... C is a general-purpose, block structured, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system. ... C++ (pronounced see plus plus, IPA: ) is a general-purpose programming language with high-level and low-level capabilities. ... “Java language” redirects here. ... Fortran (previously FORTRAN[1]) is a general-purpose[2], procedural,[3] imperative programming language that is especially suited to numeric computation and scientific computing. ...


See also

Programming languages are used for controlling the behavior of a machine (often a computer). ... In programming languages, name binding refers to the association of values with identifiers. ...

References

  1. ^ Meijer, Erik and Peter Drayton (2005). Static Typing Where Possible, Dynamic Typing When Needed: The End of the Cold War Between Programming Languages. Microsoft Corporation.
  2. ^ See example of use on p.330 of Larry Wall's Programming Perl ISBN 0-596-00027-8

Erik Meijer is a Dutch computer scientist who is currently a software architect at Microsoft Research. ... Microsoft Corporation, (NASDAQ: MSFT, HKSE: 4338) is a multinational computer technology corporation with global annual revenue of US$44. ... Larry Wall Larry Wall (born September 27, 1954) is a programmer, linguist, and author, most widely known for his creation of the Perl programming language in 1987. ... Programming Perl book cover Programming Perl, best known as the camel book among hackers, is a book about writing programs or scripts using the Perl programming language. ...

External links


  Results from FactBites:
 
Systems and methods for employing tagged types in a dynamic runtime environment - Patent 7168063 (7445 words)
The system of claim 1, the dynamic programming language is provide to a compiler that generates intermediate language instructions that are execute by a virtual machine.
Dynamically typed languages such as Perl, Scheme, Ruby, Python, Smalltalk, and so forth, traditionally utilize various tagging schemes to overcome the overhead of allocating small (usually word-sized) objects on the heap, but still keeping the benefits of a uniform representation of values for parametric operations.
Languages provide their users the greatest ability to access frameworks by implementing at least those parts of the CTS that are part of the CLS.
Dynamic programming language - definition of Dynamic programming language in Encyclopedia (495 words)
In computer science, a dynamic programming language is a kind of programming language in which programs can change their structure as they run: functions may be introduced or removed, new classes of objects may be created, new modules may appear.
As a side effect of this dynamism, most dynamic programming languages are dynamically typed, which static typing advocates consider a drawback (see also static typing).
In most programming languages function calls in the source code are replaced with instructions to run the code at that physical location (the exact location being defined by the linker).
  More results at FactBites »

 

COMMENTARY     


Share your thoughts, questions and commentary here
Your name
Your location
Your comments
Please enter the 5-letter protection code


Lesson Plans | Student Area | Student FAQ | Reviews | Press Releases |  Feeds | Contact
The Wikipedia article included on this page is licensed under the GFDL.
Images may be subject to relevant owners' copyright.
All other elements are (c) copyright NationMaster.com 2003-5. All Rights Reserved.
Usage implies agreement with terms.