} // good to go
scottmeyers.blogspot.com
scottmeyers.blogspot.com
When 'Effective Modern C++' was released, we formed a reading group to convene bi-weekly to discuss an item from the book. His works have been an invaluable resource to us.
While I am sad to hear that he will no longer be involved in the C++ community, I look forward to seeing what he does next.
Groupthink when it comes to choosing whether to click through to an article: ¯\_(ツ)_/¯
That's why titles exist, after all: to give you an idea if you actually want to proceed.
Scott Myers "retiring from C++" (OT: "} // good to go")
I missed this and somehow assumed that it has something to do with Go language -- didn't even bother to check the website. Nothing against Go - just not my piece of cake ATM.
Instead noticed it on another site where it had a better title and then realized what an important blog I was going to miss.
I still have paper copies of those books and lend them to people who are learning C++.
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.
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)
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.
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.
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/, 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.
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.
> "Programming: Principles and Practice Using C++ (2nd Edition)" by Bjarne
> Paperback: 1312 pages
Good lord. Is there a more concise way to do this?Which makes me wonder what the very best beginners programming language is.
If you are a first year CS student it's different. Then you need a few langs - One functional, one OO, one low level, at least.
I did Haskell/Java/C which I think was great, but 20 years later I'd choose F#/C#/C (or even Rust).
A Tour of C++
by Bjarne Stroustrup
http://www.amazon.com/Tour-C--Depth/dp/0321958314/ref=sr_1_1...
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.
Advanced, sure. But dangerous? I've never heard that. Do you have any specifics?
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-Ex...
[2]: http://www.amazon.com/gp/product/0321334876?ie=UTF8&tag=aris...
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.linuxguruz.com/forum/thinking-in-c++,-2nd-edition...
I'm absolutely thrilled to get to see what he does next.
Thank you, Scott.
I wonder if he'll move onto another language, or do something else entirely different. He doesn't say...
This influence is invisible, but possibly the most important impact he made so far. Looking forward to what's coming next.
P.S. Is the cartoon character referred a defender of the secrets of Castle Greyskull? I must know...
Edit/P.P.S: For others interested: http://scottmeyers.blogspot.fr/2014/09/cppcon-hair-poll.html
Before that there was just appeasing the angry demon in the compiler or having the right result; after there was a bigger picture of doing things the right way that would have good results beyond the next trial execution.
The last paragraph: "What's next?," you may wonder. ... The topmost entry? Stop trying to monitor everything in the world of C++ :-)
Sounds like he will dig into Golang.
I learnt a lot from Effective C++. Thank you, Scott Meyers.
You were a great help whilst I was starting to learn C++