16 comments

[ 3.1 ms ] story [ 49.7 ms ] thread
Yeah! Finally an excuse to do something interesting at work instead of at home.
Cool.

Now, if only ASP.NET was "cleaner" and didn't have all that "event-driven" ugliness.

More widespread usage on Linux would help too. Mono just hasn't taken off in terms of mainstream production use.

+1. I quite like C#, but it's not enough incentive for me to switch to Windows.
The article is covering features in C# 3.0. Mono is perpetually playing catch up to Microsoft's implementation and according to the Mono site the "Mono API today is somewhere in between .NET 2.0 and .NET 3.5". Besides the fact that the language implementation is behind, developers also have to deal with the fact that the standard library isn't 100% compatible either. It seems pretty clear that C# developers that are not on Microsoft's implementation are basically second class citizens. I don't think Mono can be taken seriously if we're talking about being compatibility with Microsoft's implementation. It's not all bad, though. Mono seems to be a perfectly good platform when evaluated on its own.

That said, I have little experience with Microsoft .NET and Mono so these are the observations of someone only casually acquainted with either project. Can anyone here share any experiences with Mono?

Agreed. I personally think it's not the risk to put yet another layer in your stack that has the potential to royally fuck things up.
Congratulations to the .Net team. C# - which started as a Java look-alike - has come a long way.
As far as I can tell, the majority of C# programmers are either not aware of these features or don't know how to use it.

What stops me from praising C# is its ridiculous verbosity. A language in which the shortest possible form of a character array literal is

  new char[] {'a', 'b'}
is doomed to be low-end, low entry-level, low-respect language, despite all efforts to bring some high-end features into it.
It's actually possible to write slightly less verbose code with C# 3.0. For example:

  //...

  char[] someChars = {'A', 'B', 'C'};

  var moreChars = new [] {'D', 'E', 'F'};

  SomeMethod(new[] { 'G', 'H', 'I' });

  //...
I do, however, agree with your sentiment. The language still has some aspects that are quite verbose when compared with dynamically typed languages. You are also right in pointing out that these new features are irrelevant if programmers are not taking advantage of them.

  new [] {'D', 'E', 'F'}
I thought it was impossible at least in 2.x, is this something added in 3.0?
You're right - it has been there since at least 2.0. I threw that in there as an example. I apologize for not clarifying that.
This is great for some C# developers, but I wonder how well it will be adopted. C# is mostly used for "enterprise" development. In my work I'm still using 2.0. Worse yet, some of my former coworkers are still using .NET 1.1 at their jobs.

Why must corporate development be so cumbersome? And more importantly, why doesn't this hinder C# where it seems to keep Java so far behind?