InfoQ

News

LINQ and Dynamic Typing

Posted by Jonathan Allen on Nov 30, 2008

Community
.NET
Topics
Language Design
Tags
DLR ,
C# ,
LINQ

The biggest feature of C# 3 was LINQ technology. With C# 4, it looks like dynamic typing is going to steal the show. But can you use them together?

On the of core features to LINQ is extension methods. Extension methods allow common functional to be added to interfaces such as IEnumerable. Extension methods are essentially a compiler trick that uses all the locally imported namespaces combined with the variable's static type to determine the appropriate function to call. With dynamic variables, the variables type is not know until runtime. But by that time, information about which namespaces were imported are long gone.

Anonymous functions are also important for LINQ. Anonymous functions are statically compiled in C# to real functions using the context to determine what parameter types to emit. Without a known type, the compiler would have to emit parameters of type object only, something that it normally doesn't do.

Neither of these limitations are insurmountable. There is no reason why the compiler couldn't capture the compile-time context needed for determining which extension method to bind to. Likewise, it could emit anonymous functions of type object and resort to dynamic calls for method and property invocation. But languages evolve slowly, and according to Mads Torgersen there are no plans to address these limitations in C# 4.

You can find out more on the C# Future site.

No big deal by Francois Ward Posted Nov 30, 2008 3:14 PM
Re: No big deal by Jonathan Allen Posted Dec 1, 2008 3:48 AM
  1. Back to top

    No big deal

    Nov 30, 2008 3:14 PM by Francois Ward

    This is really no big deal. The dynamic typing features of C# 4.0 or mostly for compatibility with other dynamic languages (working with objects that were not created in C#), and for COM interop.

    Basically, if the C# 4.0's dynamic typing features don't play too well with C# 4.0's OWN other features, it is really irrelevent: thats not even why dynamic typing is there in the first place. Besides, if you're playing with dynamic typing, you can just add the new method to the object to begin with, extension methods are almost redundant.

    This is like the var keyword: lets not forget why these features are added in the first place. It isn't to make C# the new Ruby.

  2. Back to top

    Re: No big deal

    Dec 1, 2008 3:48 AM by Jonathan Allen

    I tend to agree with you, but we can't really know how people are going to use this stuff until it actually happens.

    Personally, I shy away from most dynamic features and am looking forward to as much "bondage and discipline" as I can get from the new code contracts. But that doesn't mean there won't be a significant group of C# developers that embrace dynamic tying with open arms and leverage it to the hilt.

Educational Content

Brian Marick on 4 Challenges and 5 Guiding Values of Agile Software Development

Brian Marick takes us through a quick tour of the most important values and challenges to adopting Agile successfully (they aren't the typical challenges and values we hear in the community).

Are You a Software Architect?

The line between development and architecture is tricky. Does it exist at all? Is an ivory tower actually needed? There's a balance in the middle, but how do you move from developer to architect?

Agile – A Way of Life and Pragmatic Use of Authority

The word 'authority' sometimes produces an allergic response in hard-line agilists. Freedom and authority – both are bad if misused and both are good if used in right spirit for a noble cause.

Getting Started with Grails, Second Edition

"Getting Started with Grails" brings you up to speed on this modern web framework. Companies as varied as LinkedIn, Wired, and Taco Bell are all using Grails. Are you ready to get started as well?

Using ITIL V3 as a Foundation for SOA Governance

Those familiar with only ITIL V2 often scoff at the thought that ITIL could serve as a governance framework for SOA. With ITIL V3, the focus of the framework shifted towards service-orientation.

Adrian Colyer on AspectJ, tc Server and dm Server

SpringSource CTO Adrian Colyer discusses AspectJ, SpringSource's dm Server and tc Server products, OSGi and Scrum.

Adam Wiggins on Heroku

Heroku's Adam Wiggins talks about Rails, Background Jobs, Add-Ons, Ruby, and how Heroku manages to work around Ruby's inefficiencies using Erlang and other languages.

SOA as an Architectural Pattern: Best Practices in Software Architecture

For Grady Booch the foundation of a good architecture is patterns, SOA being just one of many patterns. In this Second Life presentation, Booch attempts to bring more clarity on what architecture is.