Thursday, January 22, 2009

Another Selection

Another selection of blog entries and articles about IronPython and the Dynamic Language Runtime that have appeared over the last month or so.
A blogger called mithrandir explains the problems he has with the source code for the DLR. It basically boils down to two things:
  • There seems to be a lot of hard coded references to the main DLR languages IronPython & IronRuby, potentially making it hard to implement other languages.
  • There are a lot of compiler directives (#ifdefs) for the Silverlight version
Bill Chiles (DLR PM) responds to this (particularly the first point) in the comments, so it really boils down to mithrandrir not liking compiler directives...
What looks like a great article on hosting IronPython 2.0 from C#, explaining the core classes and replete with diagrams and code examples. Unfortunately (for me) the article is in Chinese - although as usual the code examples are easy to follow. For those who only speak English (shame on us) there are other sources of useful information.
In December I linked to the November update of the Cobra programming language, so it is only fitting that in January I link to the December update. Cobra is a Python inspired .NET language with first class support for unit tests and contracts. The December update includes bug fixes along with improvements to the language, libraries and documentation.
A short InfoQ article on the final release of the Microsoft Robotics Studio 2008.
RDS includes a .NET-based RESTful runtime consisting of two components: Concurrency and Coordination Runtime (CCR) and Decentralized Software Services (DSS). With RDS, robotics applications can be developed in Microsoft Visual Studio and Microsoft Visual Studio Express using C# or VB.NET, as well as scripting languages such as Microsoft Iron Python.
One interesting feature of the robotics studio is that it works just as well with simulated robots as it does with real robots, including simulated environments. This looks like an interesting presentation: Controlling Simulated Robots Using Iron Python.
Another DevHawk blog entry (Harry Pierson), this one on creating PowerShell aliases for searching sets of folders for a given executable. PowerShell is a Microsoft shell scripting environment / language that allows you to pipe objects between commands. This entry deserves a mention on IronPython-URLs purely because Harry includes aliases for working with IronPython and Chiron (the Silverlight development tool for dynamic languages).
A short blog entry from a .NET developer extolling the virtues of the Dynamic Language Runtime. The announcement that the DLR will be part of Common Language Runtime in .NET 4.0, along with the changes to C# 4.0 and Visual Basic 10 (particularly the dynamic keyword and IDynamicObject interface), has made a lot of waves in the .NET community. Jim Hugunin believes this is part of blurring the distinction between statically and dynamically typed languages. This blogger (Kevin Hazzard) also welcomes it:
On the other end of the spectrum is IronPython 2.0, Microsoft's first DLR-based implementation of the Python programming language. I just love Python. It's so clean and simple that almost anyone can learn and use it effectively after studying it for an hour or two. If I could send a note to myself in the past to change one thing about my career (besides the winning lottery numbers for the past decade) it would be to encourage my younger self to learn Python back in the mid-1990s. [...]

Learning Python made me fall in love with Ruby and LISP and F#, too. I'm a real polyglot now and being able to understand how these other languages solve problems helps me design better in the language I use every day: C#. By the way, the term polyglot from its Greek roots literally means many tongues. I'm excited about the DLR because it's enabling Python and Ruby on my favorite platform. But the DLR is so much more important than that. It's the Language of Languages. The DLR defines the primitives that must exist on the boundaries of our languages to make them interoperate. In the same way that COM unified the dispatch model in the 1990s through IUnknown and IDispatch, the DLR will define the call semantics and dispatch models for the .NET Framework for the 2010s through IDynamicObject and DynamicMetaObject.

Pretty soon, we'll see a flurry of languages appear on top of the DLR. A bunch of them are already in development. But we'll also see a wave of DLR object binders appear that have no significant language support on the platform, too. The effects will be profound. Imagine a Java RMI bridge written as a DLR object binder. Using the dynamic type in C# 4.0, you could make calls to remote Java objects from .NET as if they were just part of the framework. Or imagine a type binder that exposes RESTful services as a dynamic object model. There's really no end to the possibilities here. The key to all of these scenarios is the enablement of dynamic services and that sounds a lot like what Web 2.0 was supposed to be.

No comments:

Post a Comment

Note: only a member of this blog may post a comment.