Mort on C#

time to read 5 min | 811 words

Rockford Lhotka has a post about developers with Mort's persona conquering C#.

From Nikhil's post:

  • Mort, the opportunistic developer, likes to create quick-working solutions for immediate problems and focuses on productivity and learn as needed.
  • Elvis, the pragmatic programmer, likes to create long-lasting solutions addressing the problem domain, and learn while working on the solution.
  • Einstein, the paranoid programmer, likes to create the most efficient solution to a given problem, and typically learn in advance before working on the solution.

Rockford warns that as many developers moved from VB 6 to C#, there is going to be pressure on C# to become a Mort friendly language, and that the Elvis & Einstein types will have to move to C++ again. I don't think that this is going to happen. Or rather, I agree that C# will get more rapid productivity features, but that is not a bad thing.

Here is a pet peeves about C#:

SomeLongVariableTypeNameThatIHaveToDeclareTwice variable = new SomeLongVariableTypeNameThatIHaveToDeclareTwice();

The above can (and should, in my opinion) be written like this:

var variable = new SomeLongVariableTypeNameThatIHaveToDeclareOne();

You lose no type safety and the code doesn't repeat itself. You should still be able to use the previous version if you want to do something like:

IList list = new ArrayList(); 

(Anders Hejlsberg talked about something similar in a talk about C# 2.0, but apperantly it is something planned for later.)

Or things that we have today (okay, tomorrow, but you know what I mean), like Edit & Continue, anonymous delegates, generics, etc... They are going to help the Mort persona, sure. But they also allows for very powerful conecpts that most Morts will never find interesting or at all (functional programming, or the nearest thing to that, for instance).  I think that it is good to have a language that will cover anything from the very basic to the very sophisticated natively and easily. I don't think that there is a danger of dumbing down C# to make it easier (nor do I think that it's needed).

C++ certainly has its place, and I find it great that the C++/CLI team decided to make it the language that will allow you to use all features of the CLR from the language, without needing to drop to IL; but that is not the reason that I rather program in C#. Put simply, C# doesn't surprise me {it sometimes frustrate me, but that is another thing} as much as C++ does. Then there is the Oh, So Wonderful ReSharper*, which should be enough of a reason by itself.

Beyond that, I don't neccecarily agree with the devide between those personas, I want easier ways to do stuff. Becuase if it's easier, I can often use it to do things that were simply impractical to do before. I often work in different modes during the same project, and I find that most often, I'll use the productivity tools no matter what mode I'm working at.

The funniest quote from his post is (paraphrased):

The way to get respect as a developer is to use semi - colons;

* I understand that the C++ sytnax make it much harder to write a similar tool to ReSharper.