thre3dee wrote:I guess the three main reasons I like C/C++ over managed languages is that A) I know when my objects are being deleted
In the kind of work that you do, when and why is that important?
thre3dee wrote:I *can* delete my objects, thus freeing memory
You can always trigger a GC explicitly, but I assume that level of control is not fine-grained enough for what you're doing.
thre3dee wrote:my code will be executed as native machine code.
So is most managed code these days. Although there are still JVMs out there that interpret bytecode, all .NET code is JIT-compiled to native code before being run. It can also be pre-compiled (ahead-of-time like C/C++ rather than just-in-time).
thre3dee wrote:Which leaves the performance up to the implementor (and partially the compiler optimiser) instead of me relying on on the virtual machine's performance. That being said, when I need to get something done, I don't hesitate to use technologies like PHP and C# and other such "virtual" languages.
What works particularly well (at least in .NET) is to implement the majority of the application logic in a higher-level managed language, then write the "hot spots" in native code and use interop to call the native code (or write it in unsafe C#). This doesn't work all that well in Java though, because the native code usually has to be portable, and because JNI
sucks.
thre3dee wrote:They all have they're place but naturally I steer towards C/C++ (and lately Obiective-C for iPhone) to develop desktop applications or libraries.
Objective-C is sweet.
Solid, comprehensible OO abstractions, trivial interop with C/C++, and it even manages to do manual memory management in a very clean and unobtrusive way.