Originally Posted by stolemyowncar
Yeah outside of coding for microcontrollers and things that have limited processing power (for which you might go down to assembly sometimes), C++ doesn't have quite as much use as it used to (again CE, not CS major, so I can't totally say this with confidence). I mean if you want to code something horribly efficient (iirc it's what utorrent is made with), then it's the way to go. But these days people have gigabytes and terabytes of space hanging around... and way more processing power than they'll ever need. Managed code does a pretty good job of cleanup, too (at least a better job than the average programmer); I think C++ can be managed. Scripting languages also tend to run pretty fast.
If you want to get used to using C++, and using it in the environment where you'll most likely be using it at (or imo where it is the most use), and also have some fun, I really suggest checking out mbed:
I had a class in it during my senior year, and I also used an mbed for my senior design project... depending on what you want to do it might not be cheap because the breakouts can cost a decent amount of money, though. If your school has classes with it, I'd suggest trying them out. You just need to get a capacitor and resistor for your rails to try to avoid messing anything up if you short something (or something like that). Just look for proper breadboard setups, shouldn't be too bad... well actually some of the wiring can get a bit annoying when it comes to using transistors to open/close the circuit for driving from an external source. For instance you'll need to do something like that for a motor. Sometimes a servo, too...
... Well, it's not totally pain-free but it can be fun.
If you want to eventually have some fun, but experience the closest thing to wanting to commit suicide due to programming in the short run, you can try out OpenCV.
This is really far from the truth, don't spread misinformation! C++ is used when writing extensions to certain parts of operating systems, especially Windows. It can also be used partially (or completely if you work for it) in drivers. You are also forced to compile native code in those situations since you can't always load .NET libraries. Myself, and a lot of other people in the same field, program in C++ every day at work. Also, suggesting that a CS degree entitles you to more knowledge on how C++ is used (or that any degree entitles you to any knowledge, for that matter) is ridiculous. A lot of what CS/CE degrees teach isn't everyday practical knowledge, but instead used in some cases. They don't teach you how to program, they teach you algorithms and how to handle specific cases, like image processing. I have had the (dis)pleasure of working with some Master's graduates who couldn't program to save their lives, and their thesis program which does some video manipulation is only working by some miracle and (probably) the fact that they had an extremely long period of time to find bugs and fix them. But in a real-life environment with deadlines longer than years for projects way bigger, they do badly. I have worked with people who have been a pleasure to work with and write beautiful code that works well and is fast, and some of them don't have a degree in anything.
C++ is also used for performance reasons. For example, you might write a complex program in Java or Python, and then implement a library to be loaded by your Java/Python code in C++ to speed things up. You often see this in network code that goes low level. You might have an NDIS driver written in C/partial C++ which handles packets and filters them using a BPF filter in kernel mode, a user-mode C++ library that reads the packets from the driver, and business logic code written in Java that manipulates that data as a stream.
I say you should learn a simpler object-oriented language like Python, then learn C, pointers and what not, and finally find some good piece of literature or course that teaches how to do object-oriented C++ while being mindful of the gotchas outlined in Effective C++ and More Effective C++ by Scott Meyers.
C++ isn't really that hard, it's just that you need to be aware of how the compiler parses your code, and the various gotchas that are present. It also helps to understand completely what happens when you do printf("%d", i), from how the string is parsed, how the memory is accessed, how printing is implemented, how you could write this code in assembly (essentially, what it compiles to), and it also helps to understand how the OS works in terms of virtual memory, files, etc. Good programmers are programmers who can tell you what happens on your computer when you click F5, from the moment the compiler starts running to the moment the program is running, and the debugger is connected, and the number is output to your screen.
But maybe that's for later. I'm just trying to sell you the idea that later down the line, you might want to learn some more stuff and not just be satisfied that you can write C++. Your ability to learn and program will be limited if you don't feel that you completely understand what's going on when you approach a problem.
P.S. I'm not a C++ evangelist, I also spend a lot of time programming in Python and some in Lua.Edited by Coma - 10/14/13 at 11:12am