I am looking for a book (or even a web-based course or an interactive tutorial, but ideally a book) in which C ++ 17 is taught. My normal approach of "Learn by Doing and Google" does not work. formal approach to it. In particular, a book that:
- Teaches C ++ under the assumption of v17and does not care about giving the reader a historical journey, how to do something in older versions, nor about how to work on a "legacy" project. I really only want 17 and more, mainly to minimize the considerable learning curve inherent in C ++, and to maximize productivity and safety. (Relatively speaking of course, with the knowledge that none of these attributes are the absolute modern strengths of C ++ compared to other languages).
- Is very open-minded, This focuses only on what the author sees as "best practices" solutions to some of the more common problems that system utilities keep solving, rather than providing every possible approach to a problem. (Whether his / her ideas are subjectively "best practice" or not is not really the whole point.) C ++ is pretty overwhelming possible Approaches. I can only use 1% of its capabilities and voice capabilities and only have the bandwidth or even the capacity to learn and use. (Unfortunately, the exact 1% I need is now unrecognizable, or I would repeat it!) If I learn a suboptimal approach among 50 possible ones, the negative consequences are minimal.
- I understand that there are languages that incorporate "opinion forming" languages, such as Go. But I'm not in the language selection phase anymore.
- Is known in the community at least not a terribly written Geldgreifer. There seem to be so many. Sand catches everywhere!
There are so many books. Tyranny of choice. I've spent hours searching Amazon, the web search, and the StackExchange site familybut books do not seem to exist that:
- Do not get basic knowledge in earlier versions of C ++
- Are not just a "tour" of new features to 17
- Concentrate on teaching the outstanding new features of 17, excluding historical phrases that do similar things. (I know the overlap of New: Old functionality is rarely, if ever, 1: 1)
I suppose the real question is not which book will meet those exact requirements, but it comes close, at least, and is not terribly known. I also understand that there is no ideal or pattern / expression / toolkit for any problem or problem. Again, I can only learn a very suboptimal subset.
This answer is great (albeit too detailed), but only for general C ++, and does not focus on "opinionated" either.
This is the end of the question, but if additional information helps, here is my relevant background:
- I programmed in C a long time ago, both in hobby and in small capacity. But I've forgotten almost everything, especially the arcane syntax, symbols and phrases. (Less general concepts such as raw memory pointers, piles / heaps, etc. are mostly still with me, as are general programming and OO concepts.) I find the symbol-based C ++ syntax particularly obscure and confusing. C ++ 17 seems to make it a little worse (or better?), Which is why I want to avoid learning unnecessary "legacy" syntax. (But my use of negative adjectives should not be interpreted as reluctance to learn the symbols and the syntax – on the contrary!)
- I have not been professional programming for many years, but am responsible for understanding full-stack node based web applications. But almost daily I "program" in Bash, as structured and idiomatic as the language allows, including solving problems that were never intended. (But it's touring-complete!)
- I understand and appreciate that duck-typing and generics are the future and can handle it, but strong explicit typing is my favorite food. (Like private members and immutability.)
- I understand lambdas, anonymous functions, and the like – when I think about it – but still often have problems with the real application and almost never use it. While I do not do it need It would be nice to learn better, it seems I could benefit from them.
Current / evolving environment:
- Currently g ++ 7.4.0, but can switch to any required version or version.
- Mainly Linux CLI with occasional ports to Windows CLI and MacOS / Darwin CLI.
- Currently, Visual Studio prefers code with popular C ++ extensions. (I'm also familiar with sublime.)
- CMake (fight!)
- Not yet a FLOSS C ++ code, but will use public Git repositories in the future.
There are many reasons why I chose C ++. But being the best tool for the problems that I am currently resolving is Not one of them. Let's just say it's not the most rational or necessarily the best choice, but it's a thoroughly researched and thought-out choice. (This is not the question "What is the best language to solve the XYZ problem?", This decision has already been made.) In a nutshell, I have judged it as the probably the least evil monolingual solution on the next 5- To solve 10 years worth of problems on the horizon. But more importantly, I always wanted to master it somewhat, rather than my own private badge of honor.
Thank you in advance!