Visualizing the .NET Framework
eldavojohn writes "If you're a Web developer, you should check out a quick post about the number of types, methods, & fields in the .NET framework. This was done using NDepend. The numbers are quite large — e.g. 39,509 types. The blogger went on to generate tree maps and a dependency matrix."
I am torn by .shit, it should be good but it just misses something.
liqbase
[b.belong('us') for b in bases if b.owner() == 'you']
.NET and Java are both prime examples of object-oriented programming gone stupid. Their class libraries have become so utterly huge that it becomes damn near impossible for an individual developer to suitably grasp anything more than a small portion of them.
.NET or Java. It's easy to get lost in whether we need a FileInputStream, or whether we should wrap a FileInputReader in a TextInputBuffer, and so forth. Give me fopen() any day.
.NET standard class libraries. Meanwhile, the POSIX API offers just as much flexibility, but is far easier to work with. Not to mention that programs using it are far more efficient.
Although they supposedly give more flexibility, something as essential as reading from and writing to a file becomes a hassle with
OO was supposed to solve the problems of writing applications in languages like C, Pascal and Fortran. All it has done is brought in a new level of complexity that results in monstrosities like the Java and
I am having flashbacks to my days as a .NET developer. Never again! The documentation is just terrible. What do those 240,070 fields do? I don't know, here is what 6 of them do, figure out the rest by trial and error.
.NET really is an amazing framework on which to build software. It just needs more OS support and I would use it for programming other than what I do for a living. All those types are there, but they will not be loaded in to memory unless your software needs them.
...and with all that we still ended up with vista.
Although interesting, because I'm now exposed to the NDepend tool, how is this News? It just begs the slashdot elite to post yet again how much .NET sucks cause it's made by MS, ripped off from Java, etc etc.
That's what I first thought of for visualizing .NET.
The goggles, etc.
Hail Eris, full of mischief...
E pluribus sanguinem
For some reason this reminds me of walking into a Starbucks and asking for a cup of coffee. I don't care about choices, levels, integration. I just want a motherfucking cup of coffee!! dammit!!! If this was supposed to oogle the eyes of unix programmers, it just pushed me further away. I'll use my unix languages and cross-compatible frontends like wx or Qt if I need to have it run on Windows, thank you.
I want to see a comparison to PHP with all extensions/modules enabled... I have a feeling PHP will have many, many more.
.NET anyway? This is Slashdot. ;-)
Sadly, that is not a good thing. I love PHP, but it's a mess and desperately needs an overhaul.
(please note: This is my opinion... not out to start a pissing war.)
p.s. - who the hell uses
1980s classmates. Interesting, on the face, but not something I'd like to revisit.
I enjoyed you as youngster dear Bill Gates, but please don't even think about calling me up after all these years because you're down on your luck.
640 types should be enough for anyone.
Before you impugn Microsoft with your short-sided emotional appeals against the sheer number of classes, use a hint of logic and realize that since MS copied Java shamelessly and ruthlessly (improving on some debacles in the Java classes, such as the crap IO classes that had to be redone from scratch), you'd be blasting Java, KDE, Python, and most any other class library as well.
.NET class library beats them all easily. It is obvious that the designers did their homework and stole from each library what worked well, while dropping what didn't. If they were smart they'd take Java's excellent concurrency constructs such as the BlockingQueue and put them in (they may already have, I don't program much in .NET lately). Most of my beefs with the class library are the fact that it is huge (footprint size), and I don't agree with some of the modeling. But that is minor.
Look, in a class library that purports to help most everyone, there's going to be an awful lot of code. Class library implies that classes are used to organize the abstractions provided by the library. Proper OO design favors designing more types with smaller number of features rather than God-objects that do many things. Fine-grained objects are simpler to unit test and are much easier to reuse. The downside is the propagation of types and the verbosity level of the code generally goes up. But that is a fair trade-off in my opinion, since the most important work on the code happens in the maintenance phase, when someone else can come along and at least get a vague idea of what is going on.
I've used the class libraries in Java, KDE, MFC, and Python, and the
There's a reason Miguel wanted to make this happen on Linux. It is close to making programming fun again, instead of squinting at hyper-abbreviated function names like sprintf and mucking around with idiotic string representations such as C's.
If you're a Web developer, you should ignore .NET and use something much less bloated.
There, fixed that for you.
It's better to vote for what you want and not get it than to vote for what you don't want and get it.
- E. Debs
Bloatware
I remember JLG (the fearless leader of BeOS fame) once saying something to the effect that Windows has five billion lines of code in it and that he "loves every single one of those lines." I also seem to recall Bill Gates once saying that IBM liked software to be measured in k-locs, while he debated that it should be measured by what it does. He said something that I don't quite remember, but the jist was, "why would we do something in thousands of lines of code if it could be done in just a few?" How ironic. Hmmm... if JLG's comment was made a decade ago, and our dance teacher has 30,000 monkeys adding a k-loc or two to those five billion lines every day, then there are now about 21,500,000,000 lines of code to love, which seems about right, given how many different "please wait" messages there are.
lol
.NET Framework. Wikipedia is my primary example. :-)
.NET is really PHP vs ASP.NET and ASP.NET is actually a framework around the suite of .NET languages (ASP,JSP,C#,C++,and VB). So the comparison is a bit apples to oranges BUT while it is true that .NET can scale I believe that the LAMP stack, combined with Memcache can be more easily scaled with less hardware and less people bringing down costs. Plus, you'd be hard pressed to find a Microsoft trained .NET IT professional that actually knows what he's doing and isn't just another MS certified baboon.
You're fanboyism of PHP is much appreciated (as I am myself a PHP developer) but PHP is actually smaller. Don't be deceived. This is a GOOD thing. Less bloat = more performance. PHP + *SQL + Memcache will always pack more punch in a smaller package then the
Also I do have to point out that comparing PHP to
Why does TFA say "If you are a web developer..."? If you are a web developer, the only reason I can think of that you might care about the .NET Framework is if you intend on using Silverlight. But if you intend on using Silverlight in conjunction with most of .NET, then you probably aren't actually a web developer, or if you are, you don't consider most of Silverlight relevant to that portion of your portfolio.
The comparison to the human genome is interesting. The genome contains about 3 billion base pairs and 30,000 coding genes. As best I can see, .NET is quite a bit bigger: The closest thing to a gene is a method (an object that can be used, or not used, and which does something). The genome has 30,000 and .NET has 384,000. So even if it takes 10 methods to do what one gene does, they are equivalent.
.NET has 8,000,000 instructions. Given the roughness of the comparison, this is pretty close.
.NET :))
It takes 3 base pairs to code for a single protein, perhaps the closest we can come to an instruction. Each gene has an average of 3,000 base pairs, equivalent to 1,000 instructions. So we are looking at 30,000 genes x 1,000 instructions/gene or about 30,000,000 instructions in the genome.
The point here is that we are creating programs that are roughly equal in complexity to the human genome. If we were better programers, then perhaps we'd have come up with intelligent design.
Finally, it's worth noting that the functions are unknown for over 50% of discovered genes. It may be about the same for
The biggest plus to working in Java is that the documentation Sun provide is comprehensive (and once you figure your way around it) easy to access.
Microsoft is getting better but, for a framework that's quite clearly a java rip-off, they could have ripped its documentation style too.
This reminds me of an old joke:
Q: A Marketing executive and an RIAA lawyer jump off the top of a 50 story building. Who hits the ground first?
A: Who the hell cares?
laura, not a fan of .NET
What's the point? Is this any different from Java? Or is this simply a matter of throwing out some numbers and trashing M$? One poster made a good point: .NET and Java (my preferred environment) are both big and complex. On the other hand, at least in Java, an hour's research is all that's required to have a good enough grasp of file operations to write solid code. I suspect the same is true of NOT YET, er, .NYET, er, that M$ environment. On the other hand, I cringe when I hear about a Web app language doing SQL without prepared statements (that was today, BTW). Suddenly, all apostrophes are forbidden to the people entering data. Small, lightweight environments are great for small, lightweight applications. Java, and yes, .NET are necessary for large, complex applications. .NET any good, compared to other full-featured environments? I don't know, but that silly article certainly didn't contribute anything useful...
Is
I guess that the main reason for the problem is the frantic addition of new features to every release while trying not to break backwards compatibility. Every new release offers a "better" way to accomplish the same task, which is presumably faster and more efficient. To avoid interfering with past functionality the easiest solution is to encapsulate new functionality into a new class. This all results in an increasing fragmentation and redundancy of the framework.
GNU really has their work cut out for them here with their DotGNU project to provide a free implementation. Good luck rms and co; if you try hard enough, you might be able to implement it all before Duke Nukem Forever is released.
I did the same thing for Java
"God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
there's a lot of code. what else does this show / 'prove' ?
there's no place like ~
Aha, he is a wily one, now is he!
.NET's is substantially worse than the like's of Java and other class libraries) in order to claim VICTORY!
Though I may look like a fool now, he still needs to back up what he said with logic and arguments (making sure to distinguish why
Comment removed based on user account deletion
Comment removed based on user account deletion
The purpose of this complexity is to ensure the tool is obsolete before it is mastered.
Since .NET platforms have an average lifespan of what, 18 months? You could spend that much time in a bootcamp drilling namespaces and methods all day and not get there before it's time to enroll in the next one. 384,000 methods? 12,324 public classes? How many of those are deprecated? How many soon will be? And of course if you use this junk to develop for windows, try to remember not to get uppity and make a market with your product. You don't have a chance because the real tools are not here. These are just toys to keep you occupied. But look! They're shiny!
Do not invest your time and money learning trash like this when the turnover is this high. It's not worth it.
Help stamp out iliturcy.
Simplicity? Internal logic?
.NET is really designed to be a wrapper around all the different Windows services. A lot of things in Windows are rather difficult to program at the C or even the C++ level. The standard Win32 API isn't too bad to work with in C, but the windowing functions and the messages mechanism is enough to provoke tears. Really, Windows is terrible for programming in C compared to Linux, and so, at least .NET papers over all the crap.
.NET than in the native C++ in Windows. Writing services in C++ is basically torture. In .NET, services are very easy to write. In C++, cracking messages in Windows forms natively is a tad like pulling teeth. MFC is aweful and ATL/WTL are better, but, I would prefer a native C++ framework like what was done with BeOS. Still, GDI+ in C++ is pretty much the same as using GDI+ in .NET, except that .NET actually gives you more convenient handling of images and fonts. Files are much easier to work with in .NET than in C++. The Path combining classes are entirely welcome and those things are great. .NET String is better than the STL string, by far, and I really like that Microsoft stole the Java idea of a StringBuilder.
.NET forms are ugly and slow. The presentation framework looks cool, but, that's now two libraries for user interface, not counting all the web stuff.
Yes, actually. There's a ton of features in Windows at the SDK level and
Right off the wheel, I can think of a couple of things that are easier to do in
Of course,
Speaking of Java... I wonder how many lines of code are in THAT framework?
This is my sig.
All other things being equal, after trying to find anything in the MSDN, let alone the vaporware API I inherited (DAO Jet library, try to find it some time - they didn't actually document it, and what they did document, was neither complete nor useful. That's being charitable.), seeing a Javadoc is like stumbling out of the desert and in to an Evian bottling factory.
Sure, the J2SE API as HTML files is 60 MB or something, but at the very least, it's consistent, well laid out, the cross references make sense, and I can drill down to the objects that are probably what I need in about 3 or 4 'hops'. Also, how large is the MSDN now? I think I've got about 4 versions (VS 6.0 - VS2k8) each weighing in at something like 700 MB. Back to my desert analogy, it's like "water, water everywhere; but not a drop to drink" with the MSDN.
If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.
When the data really *is* variable, then the type is even more important. For instance, in an sql engine I wrote, a basic query is translated a list of arrays of ranges - a list of multidimensional boxes, one dimension for each key field. The low level indexing can use the array of key ranges very efficiently.
Having a large class library is a bad thing now? You don't like it when other people do work for you?
It's all properly namespaced (unlike some languages I could name), having a bunch of classes you don't need to use does not add to your mental footprint.
sic transit gloria mundi
Moderation abuse? Anybody?
Help stamp out iliturcy.
Is there a tool like NDepend for Linux?
Is there one that can analyze both the source code (in C or C++) and the DB schema SQL that the code runs against?
That can show lots of classes, inheritance, tables and relations, without overwhelming the view?
--
make install -not war
This submition is breaking new ground: Proprietary MS plattform lockin now combined with the crappyness of pointless fanboy analysis in the style of über-crappy layouted GNU Open Source web posts. Great.
.Net, 'SilverShite' and whatnot. For anything. But especially for web stuff. And because nearly 20 years of very good reasons too.
.Net.
No thanks people. I'm staying the heck away from MS,
There are a bazillion webkits out there, one better than the next and *all* of them open. (I just ran across haxe again the other day - yet another totally awesome OSS solution). No need to even waste a minute considering MS. Unless you're being paid tripple for your time, waste of brainpower and for learning stuff that corporations have no interest in keeping around for long, because they want to sell it again and again.
Take it from a professional web-developer: Stear clear. Jump on the Rails bandwagon if you must (only if you really must) but do yourself a favour and stay away from
My 2 cents.
We suffer more in our imagination than in reality. - Seneca
Oh! A wonderfull bloat! Please open the hell gate and throw it through... why do we want to loose our precious time to promote the borg lock down and brain damaged stuff?? We, I meant us, real computer engineers, not those monkeys(...) part of the borg collective, open source or not.
.NET is a money-trap of MS, a proprietary software and marketing strategy. It is on top of *real* programming environments thus slow. It is nothing to worth to talk about it or learning it...
The most common .Net developer mistake now is that people don't bother finding the function they need -- instead they just reinvent it and waste everyone's time when maintaining that code later. The problem with 30,000+ items is that there's no good way to teach people where to look for something that's already in there. If it were organized in such a way that one could easily not reinvent the wheel, then it would be an awesome language. Without that, though, it becomes yet another way for people to create crappy date parsers.
stuff |
I'm surprised that .NET hasent crashed on 32 bit systems
I always thought that if the entire .NET framework were pictorially represented it would open the Seven Seals and be the harbinger of the Apocalypse.
Yeah, but I, for one, am stuck with a quarter million SLOC VBA(which is really a subset of VB 6) application that has no upgrade path to .NET. Furthermore, even if I could get out of VB 6, I'd have to refactor all the DAO calls to ADO, and that to ADO.NET or wrap them in an ODBC wrapper class. Sorry, I'm a little bitter about supporting someone else's custom Access application without any way out. The least they could have done is given me a way to get all the binary forms and reports out; sure, I can get the modules and class code, but I've no recourse other than remaking about a hundred forms. I understand that they moved on to .NET and there is no real way to port the code accurately, but they could have at least given me a way to export the design.
If I mod you up, it doesn't necessarily mean I agree with what you've said, sorry.
Star Trek is what happens when the human genome is released as open source!
It's better to vote for what you want and not get it than to vote for what you don't want and get it.
- E. Debs
Isn't that more of a shelbyville idea?
I used to find slashdot delightful, But my feelings of late are more spiteful; My comments Sarcastic The Iconoclastic Keep Modding to Plus Five (Insightful)
Trying to install linux on my microwave, but keep getting a kernel panic...