Microsoft Developers Respond To .NET Criticism
bonch writes "Richard Grimes of Dr. Dobbs Journal wrote an article entitled Mr. Grimes' Farewell, in which he discusses what he feels are inherent flaws in .NET, and how he is abandoning his .NET column. Grimes argues that .NET is merely thin wrappers to Win32 calls (Avalon uses message functions that date back to 16-bit Windows), that Microsoft has abandoned confidence in both .NET and sales of Longhorn, and that the framework itself is too large and poorly implemented, most of it ported from past APIs like WFC and VB. Dan Fernandez, Microsoft's Visual C# Project Manager, has responded in his blog. Richard Grimes appears in the comments to defend his criticism, referencing first-hand disassembly of .NET APIs using ildasm. Scott Swigart has also responded to the criticism of Visual Basic .NET. Apparently, Mr. Grimes struck some nerves."
How ironic would it be if Microsoft eventually abandoned .Net and Mono was the only remaining development environment that supported C#?
I'm a big tall mofo.
There are thousands if not millions of people who have built thier understanding of computer systems around Microsoft's operating systems, software products and programming environments. Let that idea settle in deeply for those who see a much larger picture and take it for granted.
This is not only their identity as programmers, but their foundation for career building and therefore their house and car payments, their breakfast and dinner and their hopes for retirement. It's a huge deal to criticise Microsoft for these people. Is it any wonder why it becomes a holy war for so many people? It's no mystery to me at all -- I even have a brother who has fallen into that trap and in order to keep peace in the family, I pretty much keep my "opinions" to myself much of the time.
So while I am glad to see greater use and corporate acceptance of Linux or other alternative operating systems, I kind worry a little for those who aren't allowing themselves to see things beginning to crumble for Microsoft and that if they aren't careful will fall along with them.
recently migrated to .NET. The server admin seems happy but the user experience sucks big time. I never thought I would say something nice about Cold Fusion but the forum certainly was more user friendly running under that.
realkiwi
This myth, .net is merely thin wrappers to Win32 has been very thoroughly debunked by the inimitable Ian Griffiths in his OnDotNet column on Longhorn.
Being anti-Microsoft doesn't automatically make something true.
--- These are not words: wierd, genious, rediculous
Mozilla *was* completely rewritten from the Netscape 4 codebase, which was basically completely scrapped after being open-sourced.
-- Help Digitise the Public Domain at DP.
Microsoft has abandoned confidence in both .NET and sales of Longhorn
.NET preview right. In the linked article, he states:
.NET when it was in technical preview at the beginning of 2000; at that time it was called COM+2"
That will come as a big surprise to Microsoft.
Hell, Grimes doesn't even get the original name of the
"I started using
In fact, it was being called COM3, and it was renamed NGWS because Windows NT wouldn't let you work with a directory called COM3 (IIRC, you could create the directory, but trying to use it resuled in some kind of conflict in which NT thought you were referring to a serial port).
Fernandez himself says everything else you need to know about Grimes' DDJ bitchfest.
Slashdot quality declines as the number of hot grits posts decreases. - Provolt's Law, Apr-09-2005
[Java's] not noticeably more Solaris-based than win32-based or anything else-based.
Actually, it is biased slightly in the lower level implementation design constraints, although you're right that for most people it's not noticeable. Java (bytecode) uses big-endian encodings however, and IIRC the (strict) floating point specs are more Sun-friendly.
All "one language, any platform" - even Java bytecode, via JRuby and JPython. So in a different way, "any language, any platform". Same story with Mono. Remind me again: why does .NET exist?
Got time? Spend some of it coding or testing
From some AC responding to Dan Fernandez's blog and referring to Richard Grimes:
At the bottom you'll find that he listed his email, but rather then use a contact me form, or listing it directly, he ENCODED HIS EMAIL address in Rot 13 encryption!! Do you really want to take advice on "usability" from someone who thinks it's a good idea to encrypt their email address?
I'm not sure I really need to comment further on this.
When moderating, assume I have not yet had my coffee.
While we're bitching about APIs, would someone point me to a good API similar to .NET? I've used Java a bit and didn't find it nearly as intuitive as .NET. The inexpressiveness of the language ends up making life tedious (such as no support for delegates). Naming inconsistencies abound, such as .size() being used on some containers instead of .getSize(). Python, for all intents and purposes, can do a whole freakin lot but the API is one of the messiest I have ever seen.
I am old enough to remember the original VB columnist at some high-profile magazine (was it Dr Dobb's itself?) throwing the towel on the column because he couldn't stand the bloating of the language by MS... and the C++ Advisor-or-something-the-like columnist (was it Unix Magazine or what?) quitting the column because C++, being designed by committee, required a language lawyer and was only getting worse.
No news here. If you don't care for elegance, you go awok with evolution. ISO SQL, Perl, there are many many examples.
Now if only people would rethink and take the pain of learning a real, elegant language... a functional (Lisp, Scheme, Haskell, ML) or pure OO (Smalltalk, Squeak) or truly relational (Tutorial D, D4) one.
Instead of just trying to keep extending known languages into unknown fields. C is just structure, platform-independent Assembly; how come people want to create custom applications in it or its Java, C++, C#, ObjectiveC? This comes only as an indictment of the alternatives, or worse still of programmers and their managers.
And BASIC, it was only a stepping stone in learning COBOL. How come it is used to deploy anything more than a prototype? Don't get me started with excuses.
It is high time managers and programmers get real and start using languages designed to do what they want. COBOL, Pascal, Smalltalk, Lisp... each in their niche, they are better than C or BASIC and their overextended derivatives.
Leandro Guimarães Faria Corcete DUTRA
DA, DBA, SysAdmin, Data Modeller
GNU Project, Debian GNU/Lin
Hence the Java reputation for "Write Once Debug Everywhere".
My employer's website used Java applets way back when, but when we found that it wasn't as portable as promised (e.g., events firing in different orders, colors mapping differently), we canned it.
So what you might view as Java's asset turned out to be, given our particularly priorities, a dealbreaker.
RG: Microsoft treats .NET as a useful library to extend its products, and to date, it has not shown any more conviction to the framework. There have been a few .NET products written entirely in .NET; one such product is Microsoft CRM....They do not want the expense of rewriting their existing code for .NET, and there is no compulsion to provide all new code in .NET; instead, .NET will be hosted as and when it's needed, particularly to allow extensibility through user-supplied code.
My Response: We should dissect exactly what Richard says here. He says that Microsoft is using .NET to extend existing products and that Microsoft doesn't want the expense of rewriting applications from scratch in .NET. This makes perfect sense to me, why would we re-write perfectly good code? .NET code can interoperate with existing code, and you bet we're going to take advantage of the interoperability layer to add new features that exploit the best managed code has to offer. As I pointed out previously, Microsoft is using .NET in all sorts of software from operating systems, to developer tools, to Office.
If Microsoft doesn't use .NET in the core code of its flagship products (and not merely as an interop gateway), Grimes asks, why should anyone else? Well, Fernandez points out that Microsoft does use it in a number of places, including some new high-level portions of Windows. But it is telling that we don't hear about an effort to rewrite MS Office or SQL Server using .NET. Some of us are old enough to remember Bill Gates evangelizing for OS/2, telling everyone that that represented the new direction of the computing industry... until he changed his mind. A more recent example was MFC, a truly ugly framework which was (and is) widely used but has been shunned by Microsoft's own developers.
Grimes is saying that .NET has been oversold. It excels as a framework for server-side enterprise applications on Windows, and also sounds like a good solution for browsers and other client-side platforms running untrusted application code - but only on Windows. For other situations .NET offers some benefits such as better error detection and easier installation than DCOM apps, but they are often outweighed by disadvantages including less control over performance, the additional size of the .NET framework, and the diminished control over one's source code IP.
There's a VERY big difference between .NET being a wrapper for Win32 and backwards compatibility. Doing everything within .NET's runtime for client apps means calling Win32 functions. Their bugs and flakiness show through. The added layer also brings a huge performance drop.
.NET from scratch instead of a layer on Win32 and still have interrop. Being on top of Win32 the interrop should actually be quite good.
.NET.
Calling COM and Win32 function directly, however, is another whole story. The interrop sucks. And it doesn't just suck, it sucks badly. The could have written
The backwards compatibility can only come from the interrop to older code. It has nothing at all to do with COM and Win32 ugliness showing through in
Developers: We can use your help.
You say that Microsoft is sitting on a treasure chest 10 years of "bugfixed, known-to-be-working" code. As a former Windows developer, since version 1.03, and who was a Windows NT kernel developer since NT 3.1 (The first version), I can say I hear what you are saying, but "bugfixed, and known-to-be-working" code is only valuable if it can be said that the foundation of the code is solid. If the foundation of the code is bad, its like putting fresh paint on a house with termites and wood-rot. The core of NT was good when Cutler first worked on it. Since then, Microsoft has compromised every aspect of NT that was good. That valuable "bugfixed" code is mostly code that was in error in the first place. The general design of Win32 (and Win16 prior) is too reliant on little or no security between applications. As long as there is a need for normal users to have "Administrator" rights for their applications to run or install correctly, Windows will always be a disaster.
I'm glad I stuck with Java. I'm fairly happy there, although I would give my right arm for a deconstructor. The J2EE suite is coming a long nicely and there are now free application servers these days to run on any platform/OS that runs the JRE. Anyone from the M$ camp ready to defect to the Java side?
SPAM solution made easy: 1 spammer, 5 cords of rope, 5 hourses, and fireworks. Be creative.
PHP lets you do that, but you have to progam it. Page date? Sure. Put in a URL parameter for "recordstart=" and "numofrecords=". Sort by a column? Sure, put in a parameter for "col=" and "sortorder=" - there are a hundred ways to do it. Then in your PHP code you read those parameters and craft a SQL query to do the deed.
Sounds fine, right?
ASP.NET developes can do that with literally two clicks and setting a property or maybe two. Then you create a stored procedure for your query (abstracting out that phase), and your users can sort by any column, page with user-definable page lengths - without generating a new query to the server (whereas your PHP example probably generates a query on every page request). If the user has a new-ish browser he/she can resort without another page load, as well as probably re-size the number of records on page. If the user is on an older browser or one without javascript enabled the script automatically detects this and serves a static copy, much like the one you generated with PHP.
You are so totally talking out of your ass.
The DataGrid control which you are referring to allows you to implement default paging and sorting or custom paging and sorting.
But when you use default paging and sorting, the query pulls ALL the sorted data from the database tier to the web tier, then cuts out the stuff that's not relevant to the page. Every time you page, you're pulling ALL the data from the database. Every time you change the sort order, you're pulling ALL the data from the database. This is completely USELESS as in broken for ANYTHING except small tables. And if you're not using the DataGrid, you get nothing.
So when you go about impementing custom paging, which you WILL need to do, it becomes MORE work than under classic ASP.
You know how you do paging properly in ASP.NET? You skip those stupid fucking useless controls, you write your paging and sorting into your stored procedure where it fucking belongs and you use a DataReader control to fetch your data in firehose mode.
Just like you should have been doing in ASP all along.
-1 Uncomfortable Truth
The article specifically talks about the potential for XAML to replace ASP.net, since why would you have an ASP.net that can only sing and dance when you can have a XAML app that can cook, too?
The poster you responded to was rightfully pointing out that Microsoft has a poor record at implementing secure browser-based full app solutions, in particular wondering about XAML security holes of the future.
In short: We are discussing the FA, not just a small slice of what YOU want to talk about.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Hmmm.. I feel much more 'comfortable' looking at C and Java vs. C#/VB. And while C# is closer to Java, it still has that MS look that I've come to recognize via torturous years, long ago, with VB.
.com boom and bust. He's had some great partys, but also had his ups and downs with the neighborhood meetings. However, in the end, he's got a pretty good amount of support from the community and you can tell he's in it for the long haul.
No, C# is not, IMO, nicer looking than Java.
That said, C can be quite fugly too, but there's just something about it; maybe it's because it's sorta the serrogate programming mother of languages I have become fond of.
Sorta like that not so pretty, overweight, mother that lives down the street and, while a little abrasive sometimes, can usually get anything done that you want her to.
C# is that sketchy lawyer chick that just moved into the brownstone across the street that Mr. Smith used to live in (Mr. Smith was the nicest old guy you ever knew). On the contrary, Ms. C#, even tho she sometimes gives cookies to the neighbors and plays a nice game, has the look in the corner of her eye that just says someting is wrong or fake. Like there's something there you just can't trust.
Meanwhile, Mr. Java a few doors down from Ms. C#, was one of those younger guys that just moved in prior to the
I trust the JCP much more than ECMA. They're two fundamentally different organizations of which, one has a voting body made up of many organizations - including open source projects - and the other has no voting process at all. Getting the ECMA standard slapped on your product says nothing to the owned ideas, methodologies and implementations behind it. The Mono guys like to use this all the time, but just because it's a standard does not mean it's patent free and free of legal entanglements and/or threats.
If people only talked about what they knew, they wouldn't talk very much. Slashdot is mostly a forum for people who enjoy debating ideologies, or more accurately, stating their dogma and being affirmed by others without actually going to the trouble of backing up their arguments with facts.
As a Win32 developer, one of my pet peeves is the way the CreateWindow() call works. Client code calls CreateWindow(), and then, *BEFORE THAT CALL RETURNS* your window message function gets a few messages initially. It makes it very difficult to set up an effective wrapper around the API using C++. It is possible, but you have to use assembly language to sneak the instance pointer in. Obviously, they have some reason for blocking CreateWindow() until the message procedure sets up, but it does make life more difficult. (Perhaps the newly created window has a chance to stop the creation process?) These are relics of a procedural architecture, and it shows.
Other annoyances: not all operating system handles can be closed through CloseHandle(), such as directory enumeration handles. Naming conventions vary quite a bit - you can almost tell if an API is old or not by whether it uses Hungarian notation.
MSDN does an excellent job of pointing out these nuances, however. I can usually find what I need within the remarks section.
No doubt, esp those company songs IBM had...
I was wondering, apart from his comments themselves on the state and future of .Net, what the real consequence of some of Richard Grimes' stature is when he decides to publicly drop his .Net column.
.Net. And that is why, I think, why Microsoft's bloggers are doing overtime on the defensive damage containment sector.
.Net due to his frustration with the framework is what got the bloggers up in arms. Fear, simple fear, I think.
.Net and move to some other framework or platform, or if it is just one frustrated man who will have no influence on future events.
.Net could very really cripple Microsoft's uptake in the enterprise, and the loss of enterprise development interest would leave Microsoft with an Desktop OS, a Server OS and an Office package.
It occurred to me that this is the first public person who is both a respected author in the Microsoft developer world and, possibly more importantly, a columnist at DrDobb's, who is publicly washing his hands with
Dr Dobbs is possibly the most respected software development journal in the English speaking world. Certainly it has dropped somewhat over the years with the advent of the internet and the ease of accessibility to good quality development articles that the internet brings, but it is still probably the most important journal, especially relating to Microsoft products. The fact that a noted author in this journal has decided to wash his hands of
is it really that important? I don't know. I have no idea if this is the beginning trickle of a torrent of developers who will decide to drop
While I would suspect the latter, I think that Microsoft's bloggers reactions means that Microsoft fears the former. And they right to be. A general dissatisfaction with
Think about that.