The dynamic language runtime (DLR) is
a runtime environment that adds a set of services for dynamic languages
to the common language runtime (CLR). The DLR makes it easier to
develop dynamic languages to run on the .NET Framework and to add
dynamic features to statically typed languages.
Dynamic languages
can identify the type of an object at run time, whereas in statically
typed languages such as C# and Visual Basic (when you use Option Explicit On)
you must specify object types at design time. Examples of dynamic
languages are Lisp, Smalltalk, JavaScript, PHP, Ruby, Python,
ColdFusion, Lua, Cobra, and Groovy.
Most dynamic languages provide the following advantages for developers:
The
ability to use a rapid feedback loop (REPL, or read-evaluate-print
loop). This lets you enter several statements and immediately execute
them to see the results.
Support for both top-down
development and more traditional bottom-up development. For example,
when you use a top-down approach, you can call functions that are not
yet implemented and then add underlying implementations when you need
them.
Easier refactoring and code modifications, because you do not have to change static type declarations throughout the code.
Dynamic
languages make excellent scripting languages. Customers can easily
extend applications created by using dynamic languages with new
commands and functionality. Dynamic languages are also frequently used
for creating Web sites and test harnesses, maintaining server farms,
developing various utilities, and performing data transformations.
The
purpose of the DLR is to enable a system of dynamic languages to run on
the .NET Framework and give them .NET interoperability. The DLR
introduces dynamic objects to C# and Visual Basic in Visual Studio 2010
to support dynamic behavior in these languages and enable their
interoperation with dynamic languages.
The DLR also helps you
create libraries that support dynamic operations. For example, if you
have a library that uses XML or JavaScript Object Notation (JSON)
objects, your objects can appear as dynamic objects to languages that
use the DLR. This lets library users write syntactically simpler and
more natural code for operating with objects and accessing object
members.
Continue reading here...