Here’s a very interesting article dealing with his findings on .NET after many years of working with it. It isn’t pretty. It goes into detail as to what his perception of its problems, weaknesses are. In addition to his opinion that Microsoft let marketing take over what developers should have done.
Richard Grimes’ farewell to .NET
About The Author
Eugenia Loli
Ex-programmer, ex-editor in chief at OSNews.com, now a visual artist/filmmaker.
Follow me on Twitter @EugeniaLoli
50 Comments
You havent read it i think, i claim same – or better performance can be achieven with primitive collections frameworks, or of course arrays… And how do you use generics when it is not out .. by factor 10 to 20 claim is just plain stupid too. if you make a mikro benchmark with a for loop maybe you see an improvement, but the impact to the general application is usually not noticable at all. Get over it, this is just fud. JVM has already improved in over all performance ( note that Java VM is much faster than Mono, and faster than .Net in windows in several areas..) So, generics is just introduced last year, give them some time dude.
“You havent read it i think, i claim same – or better performance can be achieven with primitive collections frameworks, or of course arrays…”
So you seriously suggest to have a separate collection class for each primitive type, like the Trove collection classes? Or even use arrays? If you have to take such extreme measures to get decent performance, you might as well have no generics at all.
By the way: the fact that such an atrocity as the Trove Collection Classes <http://trove4j.sourceforge.net/> even exist shows that this is not a non-issue.
“if you make a mikro benchmark with a for loop maybe you see an improvement, but the impact to the general application is usually not noticable at all.”
Funny, every time you point out a performance problem with java, all java zealots scream “microbenchmark”. But in applications that do some actual calculations and not just pull some stuff out of a database and stuff it in a web page, there are all kinds of “microbenchmarks”. A fast fourier transform for example is a very small piece of code and yet can take a long time to execute. Many programs spend 90% of their time in a fft loop. So they are irrelevant because it is a “microbenchmark”?
“JVM has already improved in over all performance”
That is true. However in the very important aspect of handling value types or at least giving decent performance on reference types that should be value types, there has been no improvement at all.
THe people of JavaGrande have lobbied for an improvement in this area from 1998. But I guess now they have given up on java. And so have I.
With Firefox, Opera and KHTML/WebCore browsers having the marketshare they have, avalon will be stillborn, no developer with common sense will rely on it like the ActiveX+IE only code fiasco that they are currently cleaning everywhere, because having 10% and probably more by the time Avalon comes out using incompatible software is harmfull to business, so it makes no sense to use, and Microsoft will loose the client side stronghold.
The vendor lock-in business model for microsoft is vanishing, and they better get used to it. They have to compete on open standards and protocols, instead of painting themselves into a corner. Can an old dog learn new tricks?
Read the post at
http://cyberjessy.blogspot.com/2005/02/rebuttal-to-sir-richard-grim…
for a complete line-by-line analysis of Mr.Grimes article.
still, if you are really in need of using collections for primitive types and do not want to implement or use array wrappers for that, .Net generics will give you a performance advantage there. There is no discussion.
However, i believe in scientific operations , for things like FFT the input and output data sizes are defined and an array does the job perfectly. Do you use a collection for definig a matrix? i highly doubt that too. and i still do not see a problem using collections for different primary types , actually for scientific calculation only binary, integer and double types are more than enough.
And if you still think this is a reason for you to change your development platfom, go ahead. i would chose real platform portability and library advantages over a stupid performance gain in rare cases..
And still. there is no generics yet in .Net..
Facts:-
1. I am an MCSD (C# .Net) and I’ve been working with COM/VB for 8 years and .Net for 3 years now. I am the technical architect for one of the *most used* bits of .Net kit in the UK which a few thousand businesses rely on on a day to day basis.
2. It is a devil to work with. Slinging out web apps – oh yes it’s fine. Developing something a bit hardcore (i.e. distributed COM apps) forget it. Half if it is poorly documented, has unexpected behaviour, is an integration nightmare. I have to dig around in the C header files to find cryptic definitions for errors occasionally. This is just WRONG.
3. VB.Net is a joke. It really is a crock – there’s too much compatibility for the sake of compatibility, leading to impossibly crap code. This attracts the old “idiot VB6 programmers” who have crammed an exam and never even heard of a queue or socket consequentially turning your application into a nightmare.
4. Don’t even get me started on vendor lock in.
5. It doesn’t work on my Mac (sod Mono – it’s too risky).
I’m tempted to write my own unencumbered and nicely licensed VM/JIT based system (GPL). It isn’t *that* hard.
I have been doing software development for over 20 years now (holy crap did not realize I was that old, but I digress), I have writen systems in Ada to no C#.
I have never recomended rewriting a system just to rewrite it. Even if the company I was working for/with just produced something that could be used in the rewrite.
When you rewrite you loose lots of tested code, possibly code that handles odd behaviours people have forgotten about etc.
<sarcasm>
Sure Microsoft should drop all the legacy code they have and rewrite everything in .NET seems like a good business plan.
</sarcasm>
I am glad no one I have worked with lives in this guys dream land………….
When you rewrite you loose lots of tested code, possibly code that handles odd behaviours people have forgotten about etc.
<sarcasm>
Sure Microsoft should drop all the legacy code they have and rewrite everything in .NET seems like a good business plan.
</sarcasm>
I am glad no one I have worked with lives in this guys dream land………….
You haven’t read the article at all – that’s not what he’s written about at all. Go and read it before embarrassing yourself with silly comments. Did you ever listen or read in your in your twenty years of software development?
author:
“The framework has a lot of promise, but I think Microsoft was far too ambitious releasing far too many assemblies much too quickly. As a result design suffered, but to provide backward compatibility, Microsoft could not simply redesign the whole library and deprecate the old one. So we are stuck with the library we have”
I have used the .NET API for 4 years and the Java API for 7 years. I like most of the .NET API quite a lot…I do not think the design ‘suffered’ from over ambition. In my experience the API is balanced and pragmatic. I think it is just a style thing – I like the .NET API style more than the Java API style. I’m not saying .NET is better, just that there are some design style differences. I know many people like the style of Java better.
For example, Swing is pretty much a text-book design of MVC – the style is strictly implemented and feels academic. .NET on the other hand is a little loose and not so academic – for example the XML API has many extensions over the standard DOM, like InnerText. InnerText is not necessary, but it is quick and dirty and something I use.
I’m disappointed in the author. He should just admit that .NET was not his thing. Instead he rehashed very dead topics like VB.NET – those who paid any attention to .NET design could see that C# was the language of chioce and that VB.NET was next to useless. And instead he tried to raise ‘warnings’ about .NET – that perhaps MS was losing faith in it. The ‘issue’ that MS is not programming its OS in .NET is really missing the point of .NET. .NET is specifically designed to be able to easily leverage existing native code. Mono, for example, uses this same functionality. That way we don’t have to write new XML parsers or new 2D graphics libraries – just use the ones that are out there by wrapping them. As those existing (native) libraries are patched and improved – so will the .NET ones. Very practical and intentional. C# is not C++ (thank goodness) and the author should not have been showing concern about this ‘issue’.
I’m afraid that this blog responds to nothing, and is full of the usual MS bumff. If these are the sort of people they have working on .Net then I can see where the problems have come from.
DF: With the exception of the Visual Basic comments, which someone from the VB team is responding to, I felt like I did respond to the majority of what Richard said. If there’s something else you would like me to respond to, email me at [email protected].
I’m sorry if the .Net fanboys have bought into the hype of .Net and been put down, but there is absolutely nothing in the article that is a rant in any why…
…Calling it a rant isn’t going to make any of this go away.
DF: “.Net fanboy”? I tried to keep the conversation civilized and objectively respond to his criticisms. If it came off as religious, I apologize. When did *I* say his article was a rant? I certainly never did in my blog post.
He looks at VB.Net and looks at the framework and some of the actual ways in which it works and describes why it’s a problem.
DF:You said that Richard looks at the framework and “describes why it’s a problem”. He only did that for one class, EventLog, and he didn’t even discuss what the design issue was. He also even commented how it’s now fixed in the .NET Framework 2.0. The majority of his article wasn’t on poorly designed classes in the .NET Framework. Instead he listed his opinion on everything from releasing betas to customers, to the download size of the Framework, to Microsoft not using the .NET Framework, to Visual Basic design flaws, to Longhorn not using managed code. If the piece was constructive about what things are broken in the .NET Framework (ex: “Top 10 broken things in .NET and what to do about it”), then frankly it would have been a better article and a more interesting read.
What purpose did it serve to say that we’re not using managed code in Longhorn when he was easily proven wrong? He probably didn’t ask anyone at Microsoft.
He also has hit the nail on the head with the way many of the .Net classes have been designed. A lot of them are rather poor, and they’re simply poor Java-like wrappers around Win32 that haven’t been thought through (which answers one of the silly questions in the blog above).
DF: If we designed an API or classes poorly, let us know. You can make a suggestion directly to Microsoft using our Product Feedback page – http://lab.msdn.microsoft.com/productfeedback/ and you can track your suggestion and even the community can vote and comment on the suggestion. If you believe there’s a problem, let us know and we’ll do our best to address it.
Considering that Microsoft have stated that they’ve only implemented a small fraction of the classes and packages (assemblies) so far that they want to, the situation will get even worse. They’ve bought into the hype of .Neting everything without asking any of their good technical people whether it’s actually feasible or practical.
DF: I don’t understand what you mean by “.Neting” everything. Does it mean exposing a managed API to Win32 code? Is that by your definition a bad thing? We have a diverse customer set that ranges from the absolute beginning developer to enterprise C++ developers writing commercial software products. These constituencies have different needs. For example we get feedback from some that want us to take care of the complexity, while others want full control of the underlying framework. For example, it’s great to be able to declaratively bind a data control to a Web page without having to write code. It’s also valuable to have access to the underlying raw HTTP request stream and to be able to setup your own HTTP module listeners. With .NET our goal is to give you both. I also don’t think that moving to .NET is *more* complex then writing the same code in COM/DCOM or ATL. As far as what customers prefer, in the Septemer 2004 InfoWorld poll on “What are your organizations preferred frameworks or APIs”, .NET was the #1 choice by customers.
http://www.infoworld.com/article/04/09/24/39FErrdev_1.html
They’ve bought into the hype of .Neting everything without asking any of their good technical people whether it’s actually feasible or practical.
DF: We ask our customers what they want and try to design a product that meets their diverse needs. As far as customer feedback goes we have customer design reviews, early adopter programs, large public betas, product support, newsgroup requests, the blogosphere, and of course our new MSDN Product Feedback site that together take in comments, bugs, and suggestions. If you can suggest other mechanisms to get customer feedback, please feel free to email me directly.
Thanks,
Dan Fernandez
Visual C# Product Manager
Microsoft
quote: “What I found ineresting it this article is to learn that Microsoft is not eating it own dog foot! C# and .NET are good for others but not good enough for their own applications and OS!”
Microsoft is using alot of c# (check channel9.msdn.com for that) like some parts of hotmail. And almost every person on channel 9 prefers c#. (I like it alot as well ).
In terms of Microsoft eating it’s own dog food, I just want to add that the BizTalk Server 2004 product released last year has over 6 million lines of C# code.
I do think it’s a little unrealistic and inadvisable to rewrite code just for the sake of rewriting working code in a new language/framework.
Microsoft has allowed marketing to take precedence over technology: They created and promoted VB.NET simply as an attempt to get the bulk of Windows developers to use .NET, and not because there was any need for the language. The framework has become Visual Basic—it’s intended for users to develop applications, but not for Microsoft to create operating systems or the revenue generating products that they base their profits on.
C# is the real language for .NET, not VB.NET. If this guy is such an insider then how come he doesn’t understand the not so subtle hints that Microsoft has been giving VB developers for years now to learn C#.
And what’s this drivel about creating operating systems in .NET? What he thinks .NET should be used to write kernels or something?
Where’s he going to now? Javaland? As if its any better over there.
The article is written very much from the Microsoft perspective. Did we forget the vibrant and thriving Mono community ? Wether or not Microsoft is interested in making progress, the Mono community is.
For .NET or Java to really take off as a development platform for desktop applications, it is my personal opinion that a proper baseline framework should be preinstalled on the operation system you are using. Having to redistribute the framework has always put me off of writing any desktop application in it. Note I’m not talking about application servers here, in that space Java and .Net rock.
Well if you actually paid attention to the world outside of MSFT software most people are confused as to what .NET is.
.NET is now a marketing term for MSFT and not describing any one property. Sort of like what Sun is doing with Java, Java Desktop.
Remember .NET is c# but it’s also MSFT API’s
There is ASP.NET (why would anyone create javascript java)
Longhorn is supposed to replace WIN32 API with the Win.NET API
MSFT marketing has been using .NET to describe just about everything MSFT is currently producing. Wait WMP11 will have .NET extensions. This has been going on for years though recently it has been getting clearer.
Yes real programmers know the truth that it’s C# And if the author goes to Java, I hope he starts by cleaning up some of Sun’s code.
>C# is the real language for .NET, not VB.NET. If this guy is such an insider then how come he doesn’t understand the not so subtle hints that Microsoft has been giving VB developers for years now to learn C#.
In the words of the author:
C# is the natural language to use for .NET and there was no need for VB.NET.
So I do not see what you are complaining about, the author is imho complaining that to create VB.net was not the right descision since C# is the right language for net, and that marketing reasons lead to VB.net…so What’s your problem?
>And what’s this drivel about creating operating systems in .NET? What he thinks .NET should be used to write kernels or something?
I think the author likes to see a creator put faith in its creation. He not only complains that microsoft doesn’t “create operating systems in .net” but also that Visual Studio.net is not ported to net in larger fractions and that Microsoft rolled back its announcement on the net integration in the next version of its operating system.
So again imho the author does not want microsoft to write windows in .net but to see microsoft use .net code more (and for example as a Service as mentioned in the artical) as a sign of faith.
.NET isn’t that old.
MS touted the .Net framework (note: not used in the blanket marketing MS since) as the new way to do things. Suddenly we can write managed code that easily integrates from various languages, and it would run fast.
He’s saying that MS’s own apps show that isnt’ the way it is. Sure, it’s fine for web apps, etc. But VS.Net, Office, IE, SQL Server, and many others are still MFC apps. This is obvious.
The opinion he puts forth, that you can agree or disagree with is that it isn’t just the amount of work involved stopping MS from porting those apps. It’s issues with the framework.
I happen to think he’s right. We’ll see.
-b
Well if you actually paid attention to the world outside of MSFT software most people are confused as to what .NET is.
No, it’s just you that is confused. 4 years ago, there were a couple people that were confused with all the Passport business.
>>He’s saying that MS’s own apps show that isnt’ the way it >>is. Sure, it’s fine for web apps, etc. But VS.Net, Office, >>IE, SQL Server, and many others are still MFC apps. This is >>obvious.
This is one of the many points of .NET! Visual C# 2005 for instance has large chunks of it written in C#. Yet it coexists gracefully with legacy C++ code. That’s the beauty of it: it can work together seamlessly with unmanaged code. There’s no tsunami of spaghetti code from a month-long hacking session to port your entire application over to C#, VB.NET, http://boo.codehaus.org“>Boo Nemerle,” rel=”nofollow”>http://www.nemerle.org”>Nemerle, etc. Evolution for existing products, revolution for people starting from scratch.
So I do not see what you are complaining about, the author is imho complaining that to create VB.net was not the right descision since C# is the right language for net, and that marketing reasons lead to VB.net…so What’s your problem?
Right now C# and VB.NET are about the same, but Microsoft has made it clear that will change in the future. It’s not about marketing, it’s about giving VB6 developers a transition path. Microsoft did the right thing and this guy is wrong.
I think the author likes to see a creator put faith in its creation. He not only complains that microsoft doesn’t “create operating systems in .net” but also that Visual Studio.net is not ported to net in larger fractions and that Microsoft rolled back its announcement on the net integration in the next version of its operating system.
More of Visual Studio 2005 is written in C#. It’s just that in C# it’s drop-dead easy to hook into native code for reuse. It’s stupid to rewrite everything just for the sake of rewriting it. And .NET is still in Longhorn so you’re wrong there too.
Yes.. everything is nice and better in JavaLand
Yeah, office suites written in Java. The horror.
What I found ineresting it this article is to learn that Microsoft is not eating it own dog foot! C# and .NET are good for others but not good enough for their own applications and OS!
This doesn’t build trust.
One difference I noted with the Java Framework is that .NET seems to have grown too quickly and is not well thought out. On the contrary, Java has evolved rather slowly but I have not read critiques like that about the framework so I think it is better thought out.
Quote:”Yeah, office suites written in Java. The horror.”
Check this out:
http://www.evermoresw.com/weben/product/productOverview.jsp
pure java.
And get this.. X independent Open Office for Mac , Java swing GUI
http://www.neooffice.org/
happy now?
What I found ineresting it this article is to learn that Microsoft is not eating it own dog foot! C# and .NET are good for others but not good enough for their own applications and OS!
I believe that large parts of Microsoft’s web presence are built with .NET, so that doesn’t hold. On the client side, there are not that many essential .NET apps, but the same is true for Java (considering how much longer Java has been around).
I’ve used .NET only for web development, but it proved to be a rather mature and stable framework. Of course there’s room for improvement, but there always is. And since I’m not in marketing I don’t really care that people can’t describe .NET in one sentence. The major drawback I see is that you’re effectively stuck to Windows servers – Mono is around, but of dubious legality (when you’re using the non-standardized MS libs, which you do when you write ASP.NET code on Windows…). I’d like to be proven wrong, though.
If you look at rotor ( http://www.microsoft.com/downloads/details.aspx?FamilyId=3A1C93FA-7… ), you’ll see that a good portion of the framework is written in C#, the most notable of which is the entire remoting framework. 2.0 is almost entirely managed code. I’d say that fits the definition of dogfooding. Also, if you look at any of the videos over on channel9, almost all of the developers interviewed are using managed code. Lastly (and this is from some of my good friends who work for MS), a lot of their internal tools are asp.net. Sounds like dogfooding to me.
I believe that large parts of Microsoft’s web presence are built with .NET, so that doesn’t hold. On the client side, there are not that many essential .NET apps, but the same is true for Java (considering how much longer Java has been around).
That’s the point I think the author is trying to make. MS sold .Net as being useful for the web like Java, and good for heavy duty apps. Turns out it’s just like Java.
It’s fine for web work, or quick and dirty stuff. But they haven’t revolutionized system program.
-b
Hi all
I’m a long-term coder in Windows and Linux environments. Under Linux, C++/QT, Java, Perl/PHP. Windows – VB6, C++/QT, Java and lately, C#.
I’ve written complex servers with in-built custom scripting interpreters in Java, for background. In my humble opinion, the best way to learn Java is to try VB6. It’ll teach you O-O stuff nicely and lead you in. I think it is very clear to VB6 programmers, however, that VB6 is targetted at small applications, and complicated stuff is hard to do, involving third party libraries, components or access to Win32 APIs to do anything meaningful. There’s a very easy low learning curve, but it gets really, really steep after a while.
Java inhabits a more middle-ground. Harder to start, but with reasonable capability to do complicated things. It has limits, but those are further along the range of complexity than VB6.
Recently, I was forced to re-write a complex VB6 application entirely for either C# or VB.Net. When I looked at both, I found the following:
C# is in many ways similar to Java. It has libraries that act in the same manner, are organised similarly, and the comparisons are quite striking. The syntax, clearly, being C++-derived is almost identical in many ways. But the thing is this: for component classes, the things which the majority of coherent VB6 programming dealt with (prior to that nasty 3rd party stuff), the C# classes are almost identical to the old VB6 ones, with a few clean-ups.
VB.Net, on the other hand, is an ugly OO-emphasised port of VB6, with clean-ups, but classes and elements that are similar, but aren’t quite the same.
In my humble opinion, after a month of coding, C# is the logical and spiritual successor to VB6, not VB.NET.
VB.NET is quite clearly, in my experience, a sop to try and attract people familiar with the Visual Basic name, and who will refuse to learn a new language. I do believe, however, that if they had rebranded C# as VB.NET, these people would have been happy, too. But that’s a judgement call.
C# still has limits, and really does need shopping around on the Internet for 3rd party libraries for developing serious applications, but it does raise the bar. Coding a large-scale application, however, I think would still be very, very hard and ill-advised. Like coding an office suite in Java, in C# it would take the same effort. It could be done, but it is unlikely.
At the end of the day, C++ is still C++, and serious work needs to be done in a complete and powerful language that gives you a lot of control.
Final word: Documentation and intuitiveness of class definitions and methods makes all the difference with a language… Scores:
VB6 – Docs: Awful, Intuitiveness: Medium
Java – Docs: Good, Intuitiveness: Awful
C# – Docs: Medium-Good, Intuitiveness: Good
VC++/Win32 – Docs: Horrible, Intuitiveness: Horrible
C++/QT – Docs: Superb, Intuitiveness: Superb
After all that I’ve seen and used, C++/QT is my personal favourite, but it all depends on where you come from as a programmer, and what you find to be right for you. Many people just don’t take to C++ and C++-like languages, so hey Seasoned programmers with multi-language experience will like C++ with QT, though; it appeals to generalists and programmers’ abstract understandings of tasks and how things ought to be done.
Failing that, try C#… It’s pretty good, although you’ll need Google for working a lot of things out. Many times, methods do what you want, but they aren’t named as you would think, and so get confusing.
Hey, I thought C++ was a dead language and memory-management, amongst other things, were things going into the history books? Did I miss the hype of .Net or something?
It’s unfortunate that the article was so childish and poorly written. There are many flaws in .Net, but that was not a good way to point them out.
I think Mr Grimes has missed the point of most of the goals that the .NET Framework has achieved.
If you don’t like the base classes, well, don’t use them, if they’re that bad, quit grizzling and write your own.
If you don’t like VB.NET (or any of the other non-C# languages that are supported) then you don’t have to use them!
He’s right in that VB.NET is not VB6, but VB6 was not an OO language, it wasn’t even close.
VB.NET is an OO language, and as such it is semantically quite different from VB6 even though the syntax is similar.
To rant about the differences is pointless.
In short, the article is more poorly thought out drivel than it is informative literature.
Nice to see some unfavorable criticism of .net from a *technical* point of view rather than the usual legal or strategical.
If .Net is so wonderful when will we see an Office version in .Net? When MS says they are betting the farm on .Net you can tell they aren’t lying if they put their most profiting app on .Net. Before that is all talk and talk has always been cheap.
That’s the point I think the author is trying to make. MS sold .Net as being useful for the web like Java, and good for heavy duty apps. Turns out it’s just like Java.
I’m not sure where he’s targeting his criticism at all. It’s a mix of bad language design (of VB.NET), bloated libraries (but Java’s JRE for Linux is about 15 MB too), but I don’t remember inherently bad aspects about the .NET platform from a technical point of view (C# is the main .NET language, so his aversion to VB.NET is a side issue at best, IMHO).
IMHO, the article is a bit too opinionated and is riddled with too much polemics to be taken seriously. Who cares about public beta politics from 2001? His ‘factual arguments’ are a bit cloudy, too. Will Avalon really make ASP(.NET) obsolete? Where does this wisdom come from? Yes, the web is moving towards richer clients, but there’s always a big server at the other end.
.NET 2.0 has a very good generics system (Compared to that crap that is java generics). I think it is the best dynamic generics system out there.
It has excellent support for many different languages. Not just C# and C# with stupid syntax (aka VB.NET), but also dynamic languages (IronPython), functional languages (Standard ML, F# etc.) and legacy languages (COBOL, FORTRAN). It has good support for advanced features like closures, iterators etc.
Just because microsoft does not do a complete rewrite of all their products does not mean that they do not trust .NET.
Microsoft don’t do rewrites if it is not nessecary. Take a look at notepad.exe. It is (almost?) unchanged from Win95.
http://weblogs.asp.net/danielfe/archive/2005/02/22/378343.aspx
“NET 2.0 has a very good generics system (Compared to that crap that is java generics). I think it is the best dynamic generics system out there. ”
Ignoranve and FUD? or the only sentence C# people tells when they hear Java? i am sick of hearing this laughable comments.
– There is almost no differce between java and c# generics in terms of usage. For a developer, they are same.
– In fact java people is using it more then 6 moths. for real. C# is still waiting. How is life without generics?
– There is no difference in terms of speed when you use generics with object references in collections between java and C#. C# generics are faster if you use value objects (primitives as objects, lets say) in collections. The second case is actually a rare use (most case collections are used with object references.) and java had to make primitive->Object autoboxing because of back compatibility issues. Still in java same or better performance can be achieved with third party primitive collection frameworks, or the JVM can be improved for further versions.
He seems to highlight that MS strategy for .NET Apps seem to be implementing a .NET layer on top of existing native libraries.
This is fair enough and the .NET environment makes that far simpler than Java does. This saves the massive rewrites, makes these applications easily extensible with third party .NET code, means that MS deadlines might be met. It also leads to continued platform dependence (something that MS is keen to continue).
However this also just exposes all the problems of the old environment to the new one. Wasn’t the security aspects of managed code meant to be all good and wonderful compared to the native unmanaged mess? How does that work when most of it still implemented natively anyways.
Java’s biggest weakness in my mind has always been its reliance on Sun. Sun’s marketing and development focus has shifted several times meaning that parts of Java have stagnated for years at a time, while others have flourished (and often blossomed into hideous monstrosities). I can’t see why .Net won’t do the same thing. Innovation in .NET will revolve around MS priorities, most of which are apparently driven by marketting rather than technology.
Excellent article, highly recommended (like most articles in DDJ).
Many people here seem to miss the point though, or seem to only partially read the article, then rant. It’s very high level, well written, from an experienced person.
That article was a whole lotta nothing. Hate to admit I read the whole thing. Some of his rants are so obviously wrong and strange. Like “why Microsoft hasn’t re-written it’s main products in .net”??? wtf – is that a real question? Xaml is the death of asp? – I’d like to know what he is smoking… not any time soon I’m sure (at least my opinion is based on history and present)? Remember when Netscape was the death of Windows? The only thing that column convinced me of is his distaste for VB .Net and I’m sure there are lot’s of people that feel the same and the opposite. Anyhow, cya mr. grimes. I hope you find happiness in some other facet of your life.
Wow is all i can think of.
From what I’ve seen of the .Net language i have not liked, and to have a person like this spit out what i suspected is quite a blow to Microsofts vision of the next generation of computing.
I also didnt know that they were going to program WinFS in .Net. I thought WinFS was a re-named version of the NT Object Filesystem and hence was written in portable C.
@all those who say that microsoft is too cool to use .net:
How long has .net been out for? You probably don’t know this, but most “large” software projects (in the scale of Windows or Office) have a 6-7 year development cycle: if this morning some bigwig at a company the size of MS decided “let’s make a new office suite”, assuming everything goes well the program will only be on sale in 2011-2012.
I have it on very good authority that new versions of several well-known MS programs are being written in C# and managed C++.
If he’s so such a well informed person, how come he’s so ill informed? Does he live in some fantasy world where the he thinks the direction of .NET (and seemingly the whole development world) revolves solely around his opinion? Does he even pay attention to the developer’s rationale on why something is built in such a way? Maybe he likes simply throwing away years of tested code, but sane people don’t.
Half the article is him ranting on VB.NET. It’s been endlessly stated before: VB.NET is not like VB. Get over it. The ones who did have no problems.
This is just another one of those who can’t adapt bitching about how the world doesn’t conform to them, much in the same way many C devs couldn’t make head or heels with OO when it was first introduced into the mainstream.
If you read his past articles, they aren’t too hot either. It’s like he does eveything base on poorly informed assumptions and little indepth research. I bet he’ll build something a certain way “because it’s faster” without checking.
Goodbye Mr. Grimes, you have nothing to worry about, just leave the work to the real devs.
I can’t believe that, in 2005, someone could say that a product is not good because it has too many classes (or too many menus or too many features in general). That gives an uncomfortable feeling that puts the whole article under a bad light to me. Such people could have complained to Galilei that he was seeing too many planets…
Complains about VB.NET are pretty useless as well. The worst thing is that while that seems a technical articles, it is not at all.
We have complains about VB.NET not being VB (thank God! VB.NET is a decent language, at last!), size of the framework (uh?), until we discover that REAL .NET language is C#… so MS should strip VB.NET out, I guess…
All opinions should be respected and everyone has his/her own. However, I can’t see the point of such complains and, most of all, how they relate to his decision to stop his columns.
And yes, I know many VB6 programmers complaining that VB.NET is not VB. To them, I just say “Stick with VB”. I can’t see the point here…
Mr. Grimes does have a point about some of the .Net classes being poorly designed, but IMHO that’s all the substance to his article.
As for VB.Net not being a suitable upgrade path for VB developers, I can only say that that wasn’t my experience at all. I had been a VB developer for 4 years, and found the switch to VB.Net natural and intuitive.
I come from a C/C++/java background, so I find the C# syntax much more natural and the VB.NET syntax much too verbose.
But in the end it is just syntax. And for many people that don’t do programming since they were 8, “End Function” and “End Class” might indeed be easier to read than “}”.
So VB.NET goes with verbosity whereever it can, while C# tends to make thing shorter. C# supports concepts like closures which would overwhelm most VB.NET developers.
Each language has its place. So *stop bashing VB.NET*. If you think you are a “real programmer” because you use C# and not VB.NET, well, you are not. Try some really different languages like OCaml or clean.
“There is no difference in terms of speed when you use generics with object references in collections between java and C#.”
right
“C# generics are faster if you use value objects (primitives as objects, lets say) in collections.”
Yes, by a factor of 10 to 20.
“The second case is actually a rare use (most case collections are used with object references.) and java had to make primitive->Object autoboxing because of back compatibility issues.”
It may be a rare use in your code, but it is definitely not rare in my code. I do scientific visualisation, so storing a bunch of doubles in a collection is not exactly rare.
“Still in java same or better performance can be achieved with third party primitive collection frameworks, or the JVM can be improved for further versions.”
We have been hearing this for 10 years. The JVM will be improved for further versions. If this were 1995 I would believe you. But its 2005. So *when* will the JVM be improved? 2025?
There are some good points lurking in that, but they are mostly lost in what comes across as a semi-coherrent rant. When he claims to talk about .NET but then spends half the article ranting about VB.NET (“I think that case insensitivity is juvenile…” – *sigh* – case sensitivity in programming languages is useful, but hardly essential, as it enforces consistency, not because it’s somehow mature…) it does him no favours.