5 ms·
In the post he says that the C++ training market is bustling. I'm an experienced java guy looking to get in person C++ training. Hopefully something which move
by shahbazac 11y ago
In the post he says that the C++ training market is bustling.
I'm an experienced java guy looking to get in person C++ training. Hopefully something which moves quickly through the basics and addresses advanced concepts in memory management, concurrency and other low level topics.
Anyone have recommendations? The web is full of listings for HOTT, Learning Tree, GlobalKnowledge style mega training companies. Are they actually worth the $3k-$5k they charge? I'm afraid it will be a mediocre programmer droning on for 5 days in front of a power point.
- brianwawok 11y agoI find it hard to believe you could really deep grasp anything after a week of training. You can learn a bunch of tricks and gotchas! Does your career let you dive into a C++ job for a year or two? Nothing will give you more C++ exposure than doing it for a job, and being good lets you do cool tricks in Java (looking at you sun.misc.Unsafe)
- petke 11y agoOn the second point I have to disagree. I worked with plenty of C++ who have been programming for years but never read a C++ book. Many of them are stuck doing hacky "C with classes" programming, much like they did from day one. The attitude is if it ain't broken, don't fix it. I was one of those programmers. Then I picked up "Effective C++" by accident. It was a mind shift. I started coding differently after all these years. I got hooked and read every popular non beginner C++ book out there (I would guess around 50 of them). So I think reading books, is a better way of learning to program than just blindly going your own way, or the blind leading the blind.
- melted 11y agoMost of the time, "C with classes" is exactly what the problem calls for. I cringe every time I see classes whose functionality can be replaced by a simple function. Those shouldn't even be classes. They should be free functions. And this happens quite often.
- petke 11y agoFree functions are fine, I prefer them also. What I mean by "C with classes" is the worst side of both languages. Type-unsafe C coding (pointers, casts., manual memory allocations, etc), with OOP (highly coupled complex class hierarchies, virtual calls, etc). The modern C++ way is to use RAII, value semantics, and STL everywhere.
- jacobwcarlson 11y agoHonestly, start with Scott's books and go from there. And quite a bargain at $60 v. what you were considering paying.
- hendzen 11y agoIf your company is willing to pay the big bucks, I would get in touch with Jon Kalb (http://exceptionsafecode.com/ http://exceptionsafecode.com/).
- shahbazac 11y agoPaying out of pocket I'm afraid.
- jdswain 11y agoI made the move from Java to C++ at one point in my career. I'd actually programmed C++ before Java, but it had changed so much it was almost like starting again. The language itself is not that hard to pick up, but at the time I kind of found the memory management aspect daunting. It wasn't as bad as I'd made it out to be in my head though. I've always learnt from books, and there are a lot of good C++ books. Reading a few of them and then some practical experience, maybe with a side project, should be the best way to get started, especially as you are already an experienced programmer. That's what I'd do anyway. Make sure you choose modern C++ books as the language has evolved a lot, and you don't want to be learning outdated ways of doing things. The library code is another thing that is quite different to the Java world, there are many good frameworks, but they all tend to manage memory differently, have different conventions, and sometimes even have different string implementations. That's just a fact of the C++ world, but it is getting better all the time. Also, I started out using http://pocoproject.org/ http://pocoproject.org/, and that gave me a lot of examples on how to do things well, it suited me as it matched my view of good OO programming, but there are a lot of opinions on that one too.
- daemin 11y agoFor Modern C++ I found this video https://youtu.be/YnWhqhNdYyk https://youtu.be/YnWhqhNdYyk interesting in regards to the topics she chooses to teach people new to C++.
- petke 11y agoFrom my perspective it better and cheaper to spend a few weeks reading a well written C++ book, by one of the big names in the field. Rather than make due with some average guy who teaches C++. I wouldn't recommend any book written before 2012, simply because the language changed a large amount with the C++11 standard. Its like a different language. I also wouldn't recommend any book that starts off by teaching low level C first, only to get to high level STL last. Its better and more productive to do it the other way around. If you learn C first, you will learn a style that is hard to break out of. You want to learn to program C++ the right way, piece by piece, from the start. "Programming: Principles and Practice Using C++ (2nd Edition)" by Bjarne, is a good book that teaches it the right way around.
- Redoubts 11y ago> "Programming: Principles and Practice Using C++ (2nd Edition)" by Bjarne > Paperback: 1312 pages Good lord. Is there a more concise way to do this?
- jfim 11y agoMind you, it's a learn programming book and doesn't assume prior programming experience; you can skim over a lot of material if you already know how to program. See the table of contents at http://www.stroustrup.com/PPP2_TOC.pdf http://www.stroustrup.com/PPP2_TOC.pdf
- jacquesm 11y agoC++ would be a terrible choice as a first language.
- alkonaut 11y agoOn the other hand if you don't do C++ first, you inevitably become pretty turned off by it once you try it. It has some neat qualities in the small (zero cost abstractions etc) but in the large with package/module management it's a horrible experience if you are used to Java/C#/Python/Python or even Node. I have a hard time picking up C++ because I'm spoiled by other languages.
- fredophile 11y agoI don't know much about the current state of training courses but here's some advice for self study. A lot of things will be very similar to Java but with subtle differences. This means you'll be able to get up and running quickly but your code will not have the same nuances. Look for coding standards used at big companies. I believe Google has one that's publicly available. Epic Games also has one for UE4. Hopefully they should have some explanation for the choices they made. If not, do some googling of the relevant areas and see if you can figure out why they chose what they did. Spend some time reading code. GitHub has lots of repositories you can check out. For books you won't do badly if you pick up anything by Scott Meyers or Herb Sutter. They also both have good blogs. Meyers's books tend to be broken down into about fifty main points with discussion on each. I like to use them by reading one point and then trying to apply it specifically in my work. Doing this at one point a week I can go through about a book a year. C++ Coding Standards by Sutter and Alexandrescu or Effective C++ would be my top two recommendations for someone with your background. I'd stay away from Alexandrescu's other work for now since it tends to be more advanced and potentially dangerous. YouTube videos of talks by any of the authors I mentioned may also be useful to you. You specifically mentioned memory management and concurrency so I'll throw in some specific advice for them. Modern C++ uses smart pointers for dynamic memory. If you're allocating dynamic memory and not using a smart pointer you're almost certainly doing something wrong. If you want to get into really low level stuff with memory management look at how malloc or new are implemented and do a search for "small block allocator". For concurrency your best bet is probably to find resources devoted to threading and asynchronous execution. I haven't looked into that in a while so I don't have specific recommendations for good resources.
- humanrebar 11y ago> I'd stay away from Alexandrescu's other work for now since it tends to be more advanced and potentially dangerous. Advanced, sure. But dangerous? I've never heard that. Do you have any specifics?
- fredophile 11y agoSome of the template meta programming stuff he gets into isn't very portable and is very hard to debug when things go wrong. My rule of thumb is if I think I need to implement something from Modern C++ Design I am probably better off thinking about the problem a bit more and doing something else instead. Since it's been a while since I last looked at it I'd guess that some of the portability issues have gone away as compilers implement new features.
- yati 11y agoI second petke here. I was in a similar situation once (although I was much younger and came from Python), and "Accelerated C++"[1] along with Meyers' "Effective C++"[2] helped me immensely. The first couple chapters in the first book might bore you a bit since you are an experienced programmer, but hang on tight :) [1]: http://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X http://www.amazon.com/Accelerated-C-Practical-Programming-Ex... [2]: http://www.amazon.com/gp/product/0321334876?ie=UTF8&tag=aristeia.com-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0321334876 http://www.amazon.com/gp/product/0321334876?ie=UTF8&tag=aris...
- tragomaskhalos 11y agoYou can do some pavlovian training on your own - just stab yourself in the hand with a fork every time you type 'new'.
- strathmeyer 11y agoI graduated in '04 with a CS degree and had programmed everything in C++ and haven't been able to find an entry level programming job since then. I think it just comes down to the people you know.
- spopejoy 11y agoHmm, no votes for "Thinking in C++"? Amazing writing and incredibly well-paced introduction. Plus free online. The "The C in C++" chapter alone is magic. http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html http://www.linuxguruz.com/forum/thinking-in-c++,-2nd-edition,-volume-1-f1085.html http://www.linuxguruz.com/forum/thinking-in-c++,-2nd-edition...