There's absolutely nothing wrong or annoying with C#. In fact, it's by far one of the most sophisticated programming languages to date -- not to mention the exceptional speed of the garbage collector!
Most sophisticated? Oh really? IMHO it is a kitchen sink language. Too many features, lots of syntax sugar features, taken from various other languages (including Pascal), yet nothing original. C# is a nice "Java by Microsoft" with some small improvements.
What makes a good language is having a minimal set of really powerful features, like C++ templates, Scala implicits or LISP macros. This is what makes those languages sophisticated, not that you can declare accessor methods with a shortened syntax.
As for the runtime and GC, Java has much more sophisticated and faster GCs, and not just single one. And configurability of .NET's GC is almost non-existent.
@rapidcoder: I was being sarcastic; I hate every aspect of it.
It was certainy not clear to me, I was beginning to actually doubt my doubts about C#. It's certainly a nifty language but it's still MS and it's still a language that requires you to install software to run it. I actually read a tutorial on it before I made the connction between it and the .NET framework - haha, framework.
... so does every language... Unless you mean run it when it's already compiled, in which case let met change that to "so does every language that doesn't compile to native code" (ignoring the fact that Python and Perl typically come pre-installed on Linux).
Unless you mean run it when it's already compiled, in which case let met change that to "so does every language that doesn't compile to native code"
Every language that *does* compile to native, requires installing software too. First and foremost, you need an appropriate OS able to run the given binary format. Second, you often need appropriate prerequisite service packs / dependency libraries installed. In case of C++ these could be gcc or VS runtime libraries. Even if you link them statically, your binary still may require some specific version of system APIs (e.g. for graphics, sound), etc. Many native programs have problems running even on a single platform. So these are actually the same or even worse problems than having to install appropriate version of .NET or JVM.
What it's doing is redefining the + operator. Haskell uses prefix notation internally, but it can convert from infix notation in the source code. It also has pattern matching, which allows you to do things like this:
@Filiprei: C# isn't used for anything specific. However, it seems to be the language of choice when developing Windows GUI applications; anything beyond that, it fails miserably (that's my opinion). I would say it's better to stick with C/C++.
anything beyond that, it fails miserably (that's my opinion).
What are you basing this "opinion" on? C# is a general purpose language like C++, you can program GUI or not and with mono your not limited to Windows. C# can do many things that would be extremely difficult in c++ for example creating and/or consuming web services. I think your bias toward extreme efficiency is blinding you to the usefulness of other languages.
Lol what could you possible need to do that requires fine tuning with an axe ? Just saying but chainsaw gets you a cleaner straight cut, which has more practicality then whatever you can do with an axe. Just so you know, if you've never cut a tree down with an axe before, you chop at it in angles, it truly is a messy process and requires almost no fine tuning. Saw city workers take down a tree and put it through a wood chipper within minutes. Good luck with that axe.
Also ice sculptures anyone ? Let's see you do that with an axe.
I agree and I normally take efficiency over anything else as well, but at some point you have to draw a line. Should I never finish this project for the sake of efficiency (assuming you program in assembly) ? I'd rather not program in assembly but the closer I am to it the more I feel at home.