Do all the things like ++ or -- rants, post your own rants, comment on others' rants and build your customized dev avatarSign Up
So if you use C you're a huge nerd,
C++ you're the kind of person to buy something hugely impractical and swear by its usefulness.
C# you're a babby?
That's about right yeah.
My Prius disapproves.
Honestly I feel the c++ pocket knife would fit c# better but only if you replaced all the tools with plastic ones. Shittons of doodads none of which actually accomplish anything or help you make better designs.
Many people have called c++ a oo language that's missing many things... I've always thought that was a good thing though when you look at the languages that "have it all" in comparison and they end up being terrible things
Boy do i love processing data with a butter knife
@runfrodorun I once read that the "gang of four" design patterns were originally designed to cover for something that C++ lacked out of the box. That's why Java et al. work the way they do, to provide out of the box flexibility that C++ doesn't have. Not knocking C++ but if I can get something out of the box rather than having to write it and maintain it myself, I call it a win. That and at a certain point, the ability to do a simple thing 30 ways annoys me, and that's how dynamic memory type things feel to me.
@projektaquarius you are absolutely correct. I'm familiar with many of those design patterns
However, the way they fixed those things was basically by giving developers unlimited power over their code, which made things so dynamic that hardly any of the extensions over c++ can truly be realized in VM code. And very little is certain at compile time.
There are varying opinions on this, but I have always found c#s object class, reflection, and framework designs to be an eye sore and much preferred building something more robust to accomplish the same task in c++.
To give you an idea, c++ allows dynamic casts but in 99% of the cases when most developers use them I manage to get away without it. I haven't written a dynamic cast in 2 years in c++ and am very proud of that (and my designs can be complex depending on the task)
c# on the other hand I wrote a dynamic cast 2 hours ago helping out on a project at work. .NET is designed so poorly you can't do anything without stapling it toget
@runfrodorun I would argue that that is one of the strengths of C# though. That it's that flexible. That I don't have to know what the object is I am being given in order to work with it. As long as it implements the interface I am expecting it to, I can work on it with a simple cast. It makes plug and play modules for frameworks exceptionally easy and safe to work with, which is basically my job now. The whole thing used to be written in C++ and when we got the money to convert the thing to C# we did so as fast as we could because it made working and talking between 6-7 different products owned by 3-4 different companies so much easier and much more cost effective.
@projektaquarius see that would be fine if it only went that far, but it doesn't. C++ does that as well. What c# does is force you to use the superclass 'object' everywhere in the framework, etc. That's too far. Or being able to look up methods and properties by string lookup. Just because we can doesn't mean we should. But the fact that we can means everybody abuses the hell out of that in most of the code I've read. It's god awful.
And the framework API is pretty bad as well. C++ has a pretty small API and you pick and choose which libraries to work through. Obviously this method has many downsides as well, but I'd take just about anything over .NET
C++ allows you to work with an object without knowing it's runtime type; that is the point of OO programming but it would be a whole other thing if you could ask a void pointer what it is and then start using it based off of that. That's about as far from static code as it gets.
Somebody love perl