Friday, March 25, 2005 1:41 AM
About dynamic languages, F#, Comega, C# 3.0 and even more
Today I took the time to explore some exciting projects on future language features and alternative languages on the CLR. It's pretty exciting to see where we're going to on a longer term and how new languages features will help developers to write better code faster (yeah, I know this sounds like marketing, but it's just what it is).
- First of all I kicked off by taking a look at dynamic languages due to the recent post of Jason Zander on the availability of Jim Hugunin's IronPython 0.7 release (more on http://blogs.msdn.com/jasonz/archive/2005/03/23/401095.aspx). I was following IronPython for quite a while (messed around with the 0.6 release earlier on). You can find IronPython (which is a pretty fast implementation of Python on the CLR) via the GotDotNet workspace on http://www.gotdotnet.com/workspaces/workspace.aspx?id=ad7acff7-ab1e-4bcb-99c0-57ac5a3a9742. The idea of dynamic languages is to have dynamic compilation. That means - simply stated - that you can write code as you go (e.g. instantiate a certain class and perform actions on it) without having to write the code first and compiling it (therefore it's kind of an interpreter but with compilation aboard). Jim Hugunin (http://blogs.msdn.com/hugunin) is the guy who worked on AspectJ but works now on the CLR team at Microsoft on the field of dynamic languages. I'm expecting more exciting stuff coming up from that side.
- Secondly it's worth to take a look at F# (together with Abstract IL and ILX) on http://research.microsoft.com/projects/ilx/. F# has to be situated on the field of ML and functional programming, but it's an implementation that runs on top of the .NET Framework. The author/inventor of F# is Don Syme (visit his blog on http://blogs.msdn.com/dsyme). One of the cool things about the MS Research sites are the endless links to other projects, such as "Generics for .NET" which has made it in .NET v2.0. F# can be downloaded and will integrate with the Visual Studio .NET environment.
- The next one is my today's favorite: Comega (http://research.microsoft.com/Comega/). This language brings a lot of powerful stuff to the C# language including abstraction of asynchronous concurrency (also for event-based apps over networks) and data-orientation. Where you have on the one hand C# as a general-purpose language today and on the other hand various languages for data querying such as SQL and XQuery, Comega has all these things inside one single (research) language. Nevertheless, C# 3.0 will bring some of this stuff to you as mentioned by Anders Hejlsberg on Channel 9 a couple of months ago (see http://channel9.msdn.com/ShowPost.aspx?PostID=10276). The idea of having query capabilities in C# in such a way is a big one in my opinion. This kind of technology will make the object/relation mapping stuff we have today useless to a big extent and in my private opinion this is one of the reasons why the ObjectSpaces technology might have slipped out of .NET v2.0 (although some of the stuff will appear in the WinFS timeframe in the Longhorn wave).
- C# Blue is a project by Mike Stall that shows you the implementation of a C# compiler in ... C# itself, based on the Reflection APIs in the .NET Framework. Although it's not complete, it's a great sample of reflection-emit stuff. More information on http://blogs.msdn.com/jmstall/archive/2005/02/06/368192.aspx.
- Singularity (http://research.microsoft.com/os/singularity/) is the implementation of an experimental OS prototype for "dependable systems" (which is a system that behaves as expected by the creators, users and owners). In order to create this kind of systems, configuration becomes a central concept in the OS through means of several abstractions in order to create a "self-describing artifact" in the end. One of the cool things about it is the use of MSIL code to build the thing and the presence of garbage collection in the heart of it.
- Spec# is yet another programming language from Microsoft Research to help developing "more cost effective and high-quality software". I haven't played with it yet, but will do soon. It came to my attention since some KU Leuven folks are involved in this project too (see http://research.microsoft.com/SpecSharp/).
- Last but not least, another interesting Microsoft Research project is the Advanced Compiler Technology project on http://research.microsoft.com/act/. As they have a good description of what they are doing, I don't need to copy it over here.
So, if you have ever time to play around with these things... :-) For more .NET language projects, check out http://www.dotnetlanguages.net/DNL/Resources.aspx.Del.icio.us
| Digg It
Filed under: Microsoft, Comega