Is the .NET Framework a fine thing?

Microsoft developed the .NET Framework, which is a layer of software that sits between applications and hardware and Windows. It includes an Application Programming Interface (a system of subroutines that do things like read files and paint things on the screen). It also includes a Common Language Runtime engine that does Just In Time compilation of Common Intermediate Language, so that applications are not compiled directly to machine code but rather to this intermediate. It facilitates layered security, somewhat insulates the computer from crashes, and streamlines programming with Windows. I see it as analogous to the Java Virtual Machine, only for Windows applications rather than Web ones.

I’m learning about it and learning the C# language (which relies entirely upon it) and C++ (which today can more or less rely upon it). On the whole this system seems very smart, and maybe an absolutely necessary step in the evolution of computers. But I also struggle to picture Microsoft as anything other than an evil shadow government that has perfected figuring out what I want to do so they can fuck it up just before I get to enjoy it. Until this particular adventure they had a perfect record.

So, which is it?

.NET is a pretty well-designed and convenient environment, and C# is infinitely better than Bjarne’s revenge^W^W C++. But I wouldn’t call it particularly innovative or evolutionary. The JVM was doing a lot of the same kinda stuff a decade before, for example.

I’ve been developing software on it (C#) for a year now, after using C/C++. I never want to go back, it makes so much stuff so much easier.

Say what you will about MS, they’ve always had kick ass developer tools & technologies. .NET is just the latest and greatest. I personally never want to do anything not on a MS platform, because it’s just so damn nicer to work with than anything else.

I started developing software in ‘C’ 20 years ago. Moved to C++, Java, and other languages.

Without a doubt, C# and .NET are the most productive tools I’ve ever used. C# is an extremely well designed language, and the .NET framework is very easy to use and extremely powerful. Big thumbs up from me.

Yep, as the kids these days would say, .NET is da bomb.

One way of describing some of the differences between .NET and Java that I’ve heard in several places is “.NET supports multiple languages on a single platform; the JVM supports a single language on multiple platforms.”

In my opinion, this isn’t strictly accurate. It may describe the situation today, but it doesn’t necessarily need to be the case. The .NET core API is quite platform-agnostic, and the Mono Project (an open-source implementation of .NET for use on multiple platforms) looks like it’s shaping up pretty well. Similarly, while I don’t have much experience with Java, I don’t really see why the JVM would necessarily need to be tied into the Java language, and I wouldn’t be at all surprised if JVM compilers for other languages already exist.

The theoretical platform-independence of .NET actually seems to be part of a trend that Microsoft has been going through lately. They’re well aware that much of the world sees them as a big evil monopolistic corporation, and they’re going to significant efforts to try to reverse that perception. Case in point: last year, I was lucky enough to be send to MS Tech Ed by my work. I saw a presentation by Scott Guthrie (the General Manager of everything .NET) demonstrating some of the new features in ASP.NET. He made a point of doing all the demos in Firefox rather than IE.

A little hijack here…

If anyone who has good experience with C#.NET apps for the Web and is looking for some side work, please PM me. I’m looking for a few good people with good skills.

The problem is lack of adherence to standards. Technically, it may the the greatest thing since sliced bread, but it locks you in to a single vendor and platform. You can avoid a lot of problems by sticking to languages and environments that are standardized by ANSI, ISO, or other standards bodies. It’s too easy to get burned when your vendor, and Microsoft is a prime example, drops support for a critical tool or technology.

The .NET CLR is standardized as ISO/IEC 23271, and C# as ISO/IEC 23270. Admittedly this doesn’t include some important higher-level parts of .NET, such as ASP.NET and Windows Forms, but it’s certainly a step or two in the right direction.

It’s true that as mentioned, Java did it all before, and the chief developer at our office keeps looking at it 'cause it’s got nifty support for things that are ‘still coming’ in .NET.

OTOH, C# and .NET are really, really nice. We’re using mainly SharpDevelop and Mono (meaning no MS lock-in), while still enjoying the “MS is behind it” swaying power for the boss. The language is very easy, the documentation is good (one thing I’ve always given MS credit for), and it’s easy to deploy the final product.

Also, it might just be the IDE, but I find it much easier to make something in C# than I ever did in Java. A lot of the boilerplate is gone, and the stuff that’s left is easier to understand.

.NET is essentially just a new platform standard like POSIX or the Java API. Unlike the Win32 (and let’s not even mention the older versions of DirectX…blergh), it’s actually a simple, functional, and powerful interface.

There’s nothing inherently better about it than any other system API – it’s just one that wasn’t written by a guy who likes to be able to include 80 different calling parameters to every function in a struct or four, and is instead easy to understand and simple to work with.

My company loves it. It does exactly what we need, application development is a (relative) breeze, and it’s relatively cheap.