(Battery dying, this might be incomplete)

December is the 10th anniversary of the inception of C#

Some history:

1.0: Managed Code

2.0 Generics

3.0 Language Integrated Query

 

Trends that shaped the thinking of C#:

Dynamic

Declarative

Concurrent

 

Languages now borrow from each other, nothing is purely dynamic or functional or OO, etc anymore.

 

Declarative Programming: More that What less of the How.  When you state the "What" the framework can take care of the how.

Dynamic Languages: You want attributes of both static and dynamic.  Dynamic languages can be faster to write, simpler to understand.

Concurrency: Moore's Law let us stick our heads in the sand.  Time to worry about going parallel.  There will be no "/concurrent" switch that can do it.  It's hard and you have to think about it.

 

Anders mentioned the Parallel Extensions Framework for .NET.  Need to look into this.

 

VB versus C#: Co-Evolution. When features are introduced into one language they will work to introduce that into the other.  There are no guarantee but they will make sure that the feature isn't "impossible".

 

C# 4.0:

Dynamic: Dynamically Typed Objects, Optional and Named Parameters, Improved COM interop, Co and Contra variance. (Yay!)

C# and VB will both get support to use the DLR (Dynamic Language Runtime)

Binders: Object, Javascript, Python, Ruby and COM. Binders enable C# to talk to Dynamic Languages.

 

Dynamically Typed Objects: "Statically typed to be dynamic" (LOL)

Anders: Things should be able to be "dotted into"

New psuedo keyword: "dynamic" dynamic i = 42;

When operands aare dynamic: Member selection deferred to run-time, at run time actual type(s) substituted for dynamic.