Thursday, December 20, 2007

Re: Growing Pains

I guess it started with the .Net guys getting aggressive with new features like annotations, generics, delegates and now Linq. They are becoming more dynamic. Something to watch out for.

I think the fact that .Net is a closed source platform controlled by Microsoft is a huge factor in them being able to be so aggressive. It seems like today, when everything is moving towards getting open sourced, this should be seen as a huge red flag. And in some sense I feel that way, but I mean you really have to marvel at the stuff they're doing. When you read the Evolution of LINQ you see some really neat concepts like Extension Methods and how they've used a previous language feature (Attributes) to actually implement it.

Regarding going the dynamic direction. I'm not sure that's necessarily true in the "core language/platform philosophy" sense. Both .Net and Java were designed from the ground up to be strong typed and will stay that way. I think it's more about abstracting out some tedious typing when it's possible for the compiler to infer the type... i.e. it's just syntactic sugar. It's especially useful when dealing with generics (and the endless <>s). So it's still going to all be the same under the covers, unlike in dynamic languages where there is no type safety at all. (Again it's interesting to see how var in C# came about as a necessity for another feature... Annonymous Types... which were needed for LINQ).

Java had to respond and got annotations and generics. Generics has been a mess with wildcards. Closures seems to be going down that route. If only we get something thats simpler and yet extensible. The memory model is simpler and concurrency API has also been a great addition.

Lets see how long before Java steals LINQ and related features ;) They're still arguing about closures and how the generics implementation was overly complicated (ppt). Wonder how long the insane backward compatibility requirement will continue. Also when Java was open sourced last year there was general optimism that there would be a lot more innovations to the language. But has it just cause a lot more arguments and disagreements about the direction? Java 5 was big release, but since then there hasn't been anything major.

My 2 cents for the year.

No comments: