Hacker News new | past | comments | ask | show | jobs | submit login

The fact that he grouped Java with Ruby/Python shows how much he has to learn. If anything I regard Java and C#(.NET) as roughly equivalent in my mind. Both can be used by good programmers to do neat things, but the vast majority of the time they are by-words for overly specified inflexible crap code.

I don't think it's necessarily the language (although both seem way too verbose for my tastes --- and a little too focused on nouns), but more a factor of industry acceptance. As soon as Java became the industry standard successor to Cobol, they started tacking on all this formal-robust-enterprisey crap that just made the code require a heavy duty IDE to deal with. It stopped looking elegant and fun and started looking like the schematic to build the HVAC system for a skyscraper. Ditto for C#.

I would argue the main problem with the Microsoft ecosystem in general is that everything costs money. Development tools cost money, libraries cost money, even the freaking support of experts-exchange costs money. Why pay for all this stuff when the rest of the programming world already thrives on freely exchanging information. It makes learning cheaper and faster, and probably leads to more rapid development, since new stuff is easier to learn about. When I wanted to figure out how bittorrent works, I just went and read the spec published by Bram Cohen. I didn't have to call up his company and ask for a Certified Bittorrent Engineer to come out and train me onsite in a three day session that costs $8000. The whole ecosystem is focused on making a buck off the developer, instead of helping the developer make a buck off his customers. (That said, the .NET ecosystem seems moderately better about this, from my limited experience with it.)




Hoo, boy. Where to begin?

C#(.NET)

Convoluting C# and .NET is a bad idea. C# is a programming language and .NET is a platform. If someone writes a compiler that translates your favorite language into CIL, your language can then be used to create .NET assemblies (modules) and interface with every other .NET assembly. In other words, write your program using any syntax you like and use any library you want. Someone even wrote a LOLCode .NET compiler ( http://code.google.com/p/lolcode-dot-net/ ).

It stopped looking elegant and fun and started looking like the schematic to build the HVAC system for a skyscraper. Ditto for C#.

Are you referring to the C# programming language or the .NET platform? C# 3.0 includes implicit typing and lambda functions ( http://download.microsoft.com/download/4/7/0/4703eba2-78c4-4... ), which are both elegant and fun. .NET 3.0 still includes every bit of functionality from .NET 1.1, so at what point did the platform become inelegant?

When I wanted to figure out how bittorrent works, I just went and read the spec published by Bram Cohen. I didn't have to call up his company and ask for a Certified Bittorrent Engineer to come out and train me onsite in a three day session that costs $8000.

When I wanted to figure out how .NET worked, I just read its free and extremely comprehensive documentation ( http://msdn2.microsoft.com/en-us/library/a4t23ktk.aspx ). Also, high-quality documentation is one area where Microsoft whips almost everyone in, and documentation is really important for popularity. Apple has also nailed it with their iPhone SDK docs ( http://developer.apple.com/iphone/ ). If you're trying to grow a platform, you'll want to take notes.

Let's also not forget the extremely powerful WYSIWYG GUI editor ( http://dl.getdropbox.com/u/315/designer.PNG ).

Garbage collected languages can sometimes outperform other languages (read: C++) because of the design of a moving garbage collector. Every .NET language uses a moving garbage collector.

That said, it does have many flaws. The biggest one is probably the Windows lock-in. Mono is nice, but not quite complete.


I specifically used C# so as not to convolute things. I couldn't very well compare .NET with Java/Ruby/Python, since that would be like comparing 'car' to 'blue/red/orange'. I put .NET in parens next to it so someone that didn't know the distinction would realize why the heck I was suddenly talking about C#, when the article had .NET in the title.

I honestly can't speak to C# 3.0, because the little bit I did with C# was at an old job and we were using 2.0. I guess I would clarify that coming from C++, Java once seemed elegant and fun, but no longer does. C# never seemed elegant or fun to me, because I had already worked in a dozen other languages by the time I got to it, and frankly, it (2.0) seemed like a Java wannabe. (And I'm not exactly a Java fan either.)

As for garbage collection... not even sure what in my post made you mention that, but I wouldn't exactly consider a garbage collector to be an earth shattering feature. Many languages have had them for years.

I can't claim to be a .NET expert by any means, and, as I pointed out in my last sentence (and you pointed out with your links), the .NET ecosystem seems better than one would expect. I was trying to point out the problems as I saw them in the traditional Microsoft ecosystem (and the modern day Java one)... namely, the accumulation of cruft (Java) and the cost of tools/libraries/software (MS).


I had a relatively strong reaction to you grouping C# (and .NET) with Java (and Java's libraries). :)

Why did you say that it costs $8,000 to be trained in... something? (A language feature? A library? A development tool?) Anything you need to learn can be found in the free MSDN docs or by using Google. A developer that needs an $8,000 training session may not be worth his $60k salary.


Why did you say that it costs $8,000 to be trained in... something?

Haha, at my last job, when the company decided to switch to .NET and C#, they ordered this hilarious three day training course that ended up costing about $30k (four people went). The guy doing the training knew his stuff, but I don't think I'm alone thinking this a bit ridiculous. Obviously this isn't .NET's fault, or C#'s, or even Microsoft's. It just comes to mind when I hear the term 'dot net' ... as it was a major sign that I should be leaving that job soon (which I did).

A developer that needs an $8,000 training session may not be worth his $60k salary.

100% agree. Like I said in my OP, I think C# (and .NET) and Java (with it's libraries) can be used for wonderful things by wonderful people... the problem is, being the industry standard, there are a lot of very unwonderful people in the way.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: