Linq and the cost of additional language complexity

Uwe Keim posted a thought provoking comment in response to my entry about Linq.  Here is an excerpt: I do see the benefits, but I also have a big déjà vû: The C#-language seems to go the C++-way, where I, even after 10 years of programming, don’t know all of the features and sometimes still wonder…

8

Comparison of a simple select statement in DLinq (C# 3.0) vs. ADO.Net

Six months ago I posted a comparison of a simple select statement in C-omega vs. ADO.Net which some people found very exciting.  Now that Linq has been officially unveiled, I figured I should update my comparison using C# 3.0 and DLinq.  Although Linq and C-omega have some significant differences, everything I said in that post about…

11

Interested in C-omega? LINQ finally announced!

Ever since I started planning for my users-group talk (and wrote this blog entry) about data access with C-omega, I’ve been dying to tell everyone about the plans to add similar functionality to C#.  For those of you at my talk, you’ll remember this video of Anders which alluded to the work that was being…

0

DebuggingModes.IgnoreSymbolStoreSequencePoints

In my last post I gave an overview of the DebuggableAttribute, what values the C# compiler gives it, and how the CLR uses those values.  I mentioned that with /debug+, the C# compiler sets the IgnoreSymbolStoreSequencePoints DebuggingModes bit, but I didn’t describe what this bit does.  Understanding sequence points and ths IgnoreSymbolStoreSequencePoints bit is important for…

3

DebuggableAttribute and dynamic assemblies

Mike Stall has a great little sample showing how to make your dynamically generated code debuggable.  However, there is one more detail you should be aware of.  By default the JIT compiler will enable optimizations for the module, making debugging difficult or (in the case of JMC-mode in VS) impossible.  If you run your program…

7

Run-time exception checking

One of our partners asked us how a .NET program can tell what the currently active “try” blocks are on the stack.  This seemed like a dubious thing to want to do, but regardless a colleague of mine whipped up some sample code that uses the StackTrace class and reflection to do this.  We were…

4

Comega talk

On Thursday I gave a .NET users group talk on Comega to somewhere around 100 .NET developers.  Overall I think it went pretty well.  I was nervous at first, but once I got into talking about the cool stuff I like I forgot about the pressure and had a good time.  If you were there, please…

8

Comparison of a simple select statement in C-omega vs. ADO.Net

In a couple weeks, I’m doing a talk at a .NET users group in Ontario about Cω. Cω is a cool research language from Microsoft Research that extends C# with direct support for data access (SQL and XML) and concurrency abstractions.  I’ve been planning on writing a number of blog entries about Cω, but I haven’t yet…

20

Generic type parameter variance in the CLR

When people start using C# generics for the first time, they are sometimes surprised that they can’t convert between related generic instances.  For example, since you can convert a string to an object, shouldn’t you also be able to convert a List<string> to a List<object>?  After all, you can convert a string[] to an object[],…

19

“Hello world” quiz answers

Matthew Cosier was the first person to post correct answers to all my Hello, World quiz questions, good work Matthew!  Here are the answers with some details and links: System.Console.WriteLine(“Hello World!”)Visual Basic .NET – note the lack of a semi-colon <grin>  write(‘Hello world’),nl. Prolog – an older (but cool) logic programming language.  Prolog makes it incredibly easy…

10