Linked by Thom Holwerda on Fri 22nd Feb 2008 09:16 UTC, submitted by obsethryl
.NET (dotGNU too) "Previously, we have presented one of the two opensource licensed projects related to creating a C# kernel. Now it's the time to complete the set by rightfully presenting SharpOS, an effort to build a GPL version 3 + runtime exception licensed system, around a C# kernel of their own design. It is my pleasure and priviledge to host a set of questions and answers from four active developers of SharpOS, that is William Lahti, Bruce Markham, Mircea - Cristian Racasan and Sander van Rossen in order to get some insight into what they are doing with SharpOS, their goals, their different design and inspiration."
Permalink for comment 302022
To read all comments associated with this story, please click here.
RE[3]: So what ?
by michi on Fri 22nd Feb 2008 20:22 UTC in reply to "RE[2]: So what ?"
michi
Member since:
2006-02-04

For me, which are educated as C++ and Java programmer, I just love the fact that C# is as powerful as both those languages together. Its as simple (both in language features and level of abstraction) as Java, yet got all the features of C++ (unsafe code).


C# does not have all the features of C++. For example, C++ has multiple inheritance and C++ templates are more powerful then C# templates. Of course one can argue that it is actually a good thing that C# does not have multiple inheritance and I partly agree. But other languages like Scala and, I think, D provide mixins, which gives you some of the possibilities of multiple inheritance without causing the problems that multiple inheritance can cause. C# also lacks some other powerful features like pattern matching, which is often found in functional languages, e.g. Haskell.

It got a clean class library with the same features as Java's, but without all the legacy/compatibility code and overengineered factoryfactory factories classes...and much better feature-set than any C++ library I have ever used.


Parts of the .Net libraries are crap, e.g. Windows.Forms. On the other hand, it is now replaced by WPF, which is really quite nice. Also, I found managed DirectX applications really hard to debug. If something goes wrong in your Shader code, you just get an "Error in application" exception, which is not helpful at all. At least the same code in OpenGL and C++, the error message includes a line number. And Qt is a C++ library, that more or less has the same feature set as the .Net class libraries. Qt4.4 even includes a multimedia API (Phonon), has its own HTML rendering engine (based on Webkit) and can render widgets on a canvas, similar to what you can do with WPF.

If you ever written a C++ code with more than 1000 lines, don't come here and tell me you never had dangling pointers, insufficient bounds checking, string formating errors, and what not in your code...


You can avoid many of these problems by using a decent framework like Qt, which does most of the memory managment for you and which has powerful string classes. Also there are numerous smart pointer classes which solve most of the memory related problems.

That sad, I also think C# is a decent language and I like programming with it. But C# and the .Net framework is certainly not perfect and there are other languages which are better than C# in certain areas like Haskell, Scala etc.

Reply Parent Score: 2