Linked by Thom Holwerda on Sun 12th Jul 2009 21:29 UTC
OSNews, Generic OSes Even though news has been slow the entire week due to the fact that it's summer and people are more interested in vacation than in technology news, we still had a lot of interesting stuff this week. Google obviously captured the headlines with its Chrome OS, but we also talked about Mono, Richard Stallman, and many other things.
Thread beginning with comment 373072
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[3]: Mono
by Slambert666 on Mon 13th Jul 2009 06:45 UTC in reply to "RE[2]: Mono"
Slambert666
Member since:
2008-10-30

When you say "fiddling around with Mono" I assume you mean C#. If that is the case how can you say that C# is easier to understand than Java when the bases of both languages are virtually identical? The differences between them don't start manifesting until you get into the advanced topics.


C# vs Java is not just one language against the other it is also the std libraries of .NET vs JDK and CLR against JVM and the concepts that follow from this.

The .NET libraries are many, many, many times easier to use compared to the JDK libraries. In .NET you have one or two ways of doing a specific thing and you are almost never in doubt what the designers were thinking when they created the API for the given namespace. It is a completely different story for the JDK, it is convoluted, full of surprises and gives you plenty of guidance on how to do the wrong things (and no guidance on how to do it right). Essentially the concept behind the core .NET is POLS (Principle Of Least Surprise) and it is done in an coherent way. JDK on the other hand seems to be made by at least 5 sub groups that does not talk to each other or sometimes actively tries to sabotage each other.

Then there is the component orientation of .NET that is second to none when it comes to system programming. This is the real innovation of .NET is that you roll up your library in one self contained component that contains all you need for development and runtime for different consumer languages and different producer languages (with the DLR now also scripting languages can be producer languages) so .NET advocates complete transparency when making components. This is good for open source in that it very easy to bring in Python, Ruby and C# into the same application domain (you can extend C# classes in Python and extend from that in C# again, try doing that in Java :-)

Also to call Java overly complex in the same paragraph is ridiculous. Java actually has a pretty small feature set by design. C# on the other hand is grab bag containing every feature the designers could think of.


Probably not Java but JDK and JVM are overly complex and should be revised (or Java completely discontinued, nobody loves it anyway).

Reply Parent Score: 1

RE[4]: Mono
by ndrw on Mon 13th Jul 2009 20:28 in reply to "RE[3]: Mono"
ndrw Member since:
2009-06-30

Probably not Java but JDK and JVM are overly complex and should be revised (or Java completely discontinued, nobody loves it anyway).


You call it "overly complex", I call it "robust". If .Net reaches the same level of maturity (although as a Windows only toolkit it may never do) it will also get features, multiple implementations, helper tools etc.

BTW, calling for Java to be discontinued is... funny, to say the least.

Reply Parent Score: 1

RE[4]: Mono
by tuttle on Mon 13th Jul 2009 20:41 in reply to "RE[3]: Mono"
tuttle Member since:
2006-03-01


C# vs Java is not just one language against the other it is also the std libraries of .NET vs JDK and CLR against JVM and the concepts that follow from this.

The .NET libraries are many, many, many times easier to use compared to the JDK libraries. In .NET you have one or two ways of doing a specific thing and you are almost never in doubt what the designers were thinking when they created the API for the given namespace.


You can't be serious. The JDK library is showing its age at some points, but it is fundamentally well-designed. For example, the available collections are reasonably named and also complete. Interfaces are named after concepts, and implementations are named after specific algorithms. For example, you have a Set interface, implemented by a HashSet and TreeSet class.

In .NET there are no interfaces at all for some concepts (for example Set). collection classes are named confusingly (List is an ArrayList, SortedList is not a list at all, but a dictionary where the keys are sorted, etc. ). Thread-safe collections are extremely incomplete.

And don't get me started about the documentation. The MSDN documentation is a complete mess. There are examples in all .net languages, but never more than one paragraph about one topic. For example you have different pages for "type X", "members of type X", etc so you never have a useful amount of information on one page.

Reply Parent Score: 2