In an effort to become a less shitty developer and open up the opportunities to study more interesting aspects of infosec (reversing, cracking, malware, etc) I decided to start learning lower level programming. I'm taking a "top-down" approach where I'm starting with C++ because I think it will be a suitable introduction into C syntax and light memory management coming from Python where these things are irrelevant. My next goal will be to follow this up with filling in the gaps by learning in what ways C++ abstracts many of the lower level functionality of C. In the more distant future I'd then like to learn the basics of Assembly language and decide at that point how much of it I need or want to study. I also may or may not rewrite some of my side projects in C++ as learning exercises and for performance reasons.
I don't need to learn any of this to survive and have no reason to rush so my initial goal is simple: become competent enough to do basic coding challenge exercises like the advent of code challenges that I botched last year in Python by the end of the year unless I have good reason to shift my focus to some other topic entirely.
>but C++ is a terrible language because...
You're probably right but for my purposes it really doesn't matter.
I started off on the book "C++ Crash Course" since a book by the same publisher and with the same title except for Python was my starting point there, but after finding some concerning reviews and consulting the install/g/entoo wiki, I decided to stick with the tried and true books: I moved onto Bjarne Stroustrup's "Programming: Principles and Practice Using C++", but since I'm really more interested in learning C++ as a tool and means to an end, the book's change to program design philosophy in Chapters 6-8 was really not interesting to me right now and I moved on.
I was going to just read "A Tour of C++" but before I got very far I just bought a physical copy of "The C++ Programming Language", the former being an expanded collection of the second through fifth chapters of the latter. TC++PL is not a book that practices hand holding considering it is a reference book first and for that reason I plan on supplementing it with additional resources and side reading as needed.
Here are my current ideas on where to go next, although I won't necessarily read something cover-to-cover before moving on or introducing another resource:
The C++ Programming Language
The C Programming Language
Next Steps (considering each of these as a branch of sorts with each being an introduction to some greater topic of interest)
Hacking: The Art of Exploitation (this should be a fairly easy book by this point considering I own it and am familiar with its contents. should be a decent introduction to applying learned material to a security/hacking perspective)
Computer Systems: A Programmer's Perspective (not a beginners resource by any means but I downloaded it on libgen a while ago and thoroughly enjoyed the first couple chapters)
Algorithmic Thinking and/or Introduction to Algorithms and/maybe Hacker's Delight (problem solving)
Design Patterns and/or Effective Modern C++, among others listed in the /g/ wiki (tips and best practices)
If you are reading this now then I'm afraid there's not really much to read from me, but I'll continue to update this post as a learning log for what path I end up taking down this route. It's weird to feel dumb for posting blogspam to my own blog lol