This blog entry at Artima shows some Pain Points in C# from their users:
These are the replies I found most interesting:
I am more concerned that MS keeps stomping over very excellent .NET open source projects. Half of LINQ really should be NHibernate. NDoc died and microsoft failed to replace it. NUnit should have just been adopted by MS, but instead there is MSTest garbage from Team Suite. And the Enterprise Application Library stuff is really just second rate garbage compared to Castle Project.
Not having the possibility to declare a variable as constant inside a method is probably what I miss the most from Java.
Sure you have const, but it does not work on instances and readonly can only be used on member variables. Maybe I'm just missing out on something, but until someone enlights me, I find this annoying.
- Visual Studio...*shudder* Even with Resharper, it's only just bearable.
- No instance-inner classes - sometimes you want more than a single method (anon delegate).
- Looks like enums have to be integer types - I like the way Java enums are property types and implement interfaces.
- no equiv of java.util.Set
List, IList, ICollection, Collection etc... these don't align with their more traditional definitions. It would be nicer if they corresponded to the collection classes in java a little bit more obviously.
With C# (standard style), things are a bit mixed up. Namespaces, types, methods and properties tend to all start with an upper case letter. Accessors/getters may be hidden by a property.
Of course, a good IDE will show you all these in different styles and colours too, but VS2005 (shudder) doesn't. Maybe the new VS, but I haven't tried it.
When interop with Win32 / COM isn't main-road-paved, it's ugly and complex.
- Location:Sub-atomic reality
- Mood:
optimistic - Music:finger at keyboards
LINQ stands for:
"Language INtegrated Query and in a nutshell, it makes query and set operations, like SQL statements first class citizens in .NET languages like C# and VB"
Well, I´ve just watched a 37" movie from channel9 M$ website to check this new project called LINQ developed under the leadership of Anders Hejlsberg.
I must say, I´m really impressed with the C# language level enhancements this guys have donne.
In order to achieve their goal they added to C# type inference (Java should really have that, at least as a optional JVM argument for fast scripting like tasks), which is by itself a huge change in the way you write code. And don´t forget, it is still a strongly typed system. They have added to C# to real lambda functions, what differs from the actual anonymous methods (created by the delegate reserved word), another huge change in the way you can actually code (of course standard API support is must to make this really useful). Another impressive change, they´ve added the concept of Extension Methods which I´ve just heard of on the Nice JVM language (named as Multi-methods) and of course they are naturally supported in Prototyped languages like Javascript, by which you can add (or override) methods in run-time to already existent classes. They´ve add the concept of anonymous types, with a really neat syntax (Java of course has it named as anonymous innerclasses).
Now talking about the goal of the project, it is to unify the SQL data domain model with the OO model of C#. They added a lot of new language keywords like select, from, where, order by, group by, descending, etc. But what is really elegant is that they are all syntax sugar for the compiler to create lambdas and invoke them on object containers (like Collections, Iterable in Java), more precisely objects that implements the C# INumerable<T> interface.
That´s really elegant, they are not adding in a evasive or awkward way SQL syntax in some language, they´ve added old highly expressive concepts and made the compiler aware of it! In the movie you can even see the compiler working a lot with all the *hidden* type information (a lots come from the generics system which Java has now and I like it each day more, even though in the beginning I though they shouldn´t have bothered with it).
In the course of action they´ve added SQL query syntax to any INumrable collection on their API. You could for example make great use of selects/where clauses on some swing components collection, like "update visible=false where type=JButton and ...".
Well, great graceful changes to C# language, a lot of more expressive (lambdas, type inference) and powerful (extension methods) code can be written.
I don´t write C# code, nor actually work with .NET platform, but I´m sure these are equally interesting news for Java developers, and programming language lovers ;-)
"Language INtegrated Query and in a nutshell, it makes query and set operations, like SQL statements first class citizens in .NET languages like C# and VB"
Well, I´ve just watched a 37" movie from channel9 M$ website to check this new project called LINQ developed under the leadership of Anders Hejlsberg.
I must say, I´m really impressed with the C# language level enhancements this guys have donne.
In order to achieve their goal they added to C# type inference (Java should really have that, at least as a optional JVM argument for fast scripting like tasks), which is by itself a huge change in the way you write code. And don´t forget, it is still a strongly typed system. They have added to C# to real lambda functions, what differs from the actual anonymous methods (created by the delegate reserved word), another huge change in the way you can actually code (of course standard API support is must to make this really useful). Another impressive change, they´ve added the concept of Extension Methods which I´ve just heard of on the Nice JVM language (named as Multi-methods) and of course they are naturally supported in Prototyped languages like Javascript, by which you can add (or override) methods in run-time to already existent classes. They´ve add the concept of anonymous types, with a really neat syntax (Java of course has it named as anonymous innerclasses).
Now talking about the goal of the project, it is to unify the SQL data domain model with the OO model of C#. They added a lot of new language keywords like select, from, where, order by, group by, descending, etc. But what is really elegant is that they are all syntax sugar for the compiler to create lambdas and invoke them on object containers (like Collections, Iterable in Java), more precisely objects that implements the C# INumerable<T> interface.
That´s really elegant, they are not adding in a evasive or awkward way SQL syntax in some language, they´ve added old highly expressive concepts and made the compiler aware of it! In the movie you can even see the compiler working a lot with all the *hidden* type information (a lots come from the generics system which Java has now and I like it each day more, even though in the beginning I though they shouldn´t have bothered with it).
In the course of action they´ve added SQL query syntax to any INumrable collection on their API. You could for example make great use of selects/where clauses on some swing components collection, like "update visible=false where type=JButton and ...".
Well, great graceful changes to C# language, a lot of more expressive (lambdas, type inference) and powerful (extension methods) code can be written.
I don´t write C# code, nor actually work with .NET platform, but I´m sure these are equally interesting news for Java developers, and programming language lovers ;-)
- Mood:
impressed
From Miguel de Icaza's:
"The third edition of the ECMA C# language specification and the Common Language Infrastructure (CLI) have been approved by the ECMA General Assembly. Check the press release for the juicy quote from my boss.
The updated specs are here: CLI and C#."
These guys are really working on..

"The third edition of the ECMA C# language specification and the Common Language Infrastructure (CLI) have been approved by the ECMA General Assembly. Check the press release for the juicy quote from my boss.
The updated specs are here: CLI and C#."
These guys are really working on..

