Hello everyone! My first L1T Blog. Super stoked
I read an interesting thread with some community members discussing graphics and the sorts of shenanigans that spring up around that subject. I messaged an awesome community member and we spoke briefly about his experience with C++. I had been on the fence anyway, but he got me super jacked about the language. So, Iām going to learn it.
A little background, this isnāt my first venture into programming. Not by a long shot. Hell, itās not even my first go at C++ (hence the [Re]Learning in the title). I started with C++ in Computer Science. Spent a year working with it in an academic level, and then used it to create a file system (nothing to brag about, everyone in the class did it). Since then, Iāve not used it. I spent a lot of time in college saying āIām never going to use thisā and either skimming or learning enough just to pass a test or project, and forgetting it within the semester.
Sadly, Iām learning that all the things I said that about are what fascinate me at this point in my life. But, Iām young and driven. This will be my attempt to learn C++ in a way that is practical and applicable to a modern environment.
My goal is to have three things.
- A functional system.
- A modern UI/UX.
- A helluva lotta fun!
A Functional System
Those are three words that donāt really mean anything. So, what do I mean? My primary goal is to have a clean design and robust system that functions well. Designing clean architecture is very, very challenging (ask any JavaScript dev LOL). There are a lot of programs, scripts, and code out there that are terribly put together, messy, and bloated. I am going to prevent that from happening. How?
- Memory Management
- Multithreading
- Immutable Values
That last one might make a few of you quirk an eyebrow, but I think having certain values set in stone upon execution will definitely keep bugs and anomalies or side effects down to a minimum. Of course, with memory management comes knowledge of pointers, dynamic arrays, and other fun things in the toolbox. Itās been a while, I have my work cut out for me.
Multithreading will be interesting. Iāve tested a few things out from some juicy test code, and itās not similar to Java at all Iāll probably have more control but also have high risk of errors and catastrophe. ARE WE EXCITED OR WHAT?
A Modern UI
The code sexy, hallelujah. Ahem, anyway. Nothing is a bigger turn off than bombing the UI, especially these days. Iām thinking Qt is the obvious choice, hands down. But I am going to take a strong look at wxWidgets, too. Weāll see. This is going to be a ways away, so Iām not too focused on this right now. But, I do want to be prepared to keep rocking and rolling.
A Helluva Lotta Fun!
Thatās why weāre here, yeah? So, letās see what I have in store for meā¦
Curriculum
Week 1:
Functions, Loops, Decisions, and Arrays
Iām familiar with most of the above in several languages, and Iām not a total newb to C++, but I want to start from the ground up. I have Stroustrupās book to use, as well as Effective Modern C++ by Scott Meyers to bleed into. Iāll also be referencing Algorithms by Sedgewick and Modern Operating Systems by Tanenbaum, two fantastic books that Iāve used in the past for C, C++, and Java.
Week 2: Files, Strings, and Classes
Pretty much go hand and hand. If youāre going to do some serious programming, you need to know how to read from and write to files, manipulate strings, and create objects.
Week 3: Advanced Classes
Looks pretty good, but this is going to be using header files, the reasoning behind it, and priming your classes.
Week 4: Abstract Data Types and Linked Lists
Phew, tired yet? A month in Iāll get into Structs, Linked Lists, and advanced file handling.
Week 5: TBD (Probably getting into C++ 11)
Week 6: TBD (More C++ 11, might start getting into the GUI at this point)
Week 7 - TBD: Dealing with the GUI, Databases, deployments, and system architecture. Iāll flesh this out as I go, maybe make some videos if any of you are interested.
Environments
Windows 10 Professional with Visual Studio Enterprise 2017 ā This was at the recommendation of a friend. Going to see how well it handles the modern stuff. Supposedly, despite all rumors, modern C++ is possible and incredible in Windows.
OS X with CLion ā My portable workstation. If Visual Studio is enticing enough Iāll see how it plays with OS X. Probably going to do the majority of my work in this environment.
Debian Stretch with CLion ā This is my second workstation. I have a lot of C stuff setup on here, but I donāt see how that canāt seamlessly integrate into a C++ environment.
Ubuntu 18.04 with CLion ā Went with the latest release after an incident with Fedora. So far itās been working really well. I have CLion, VIm and some plugins, IntelliJ, and PHPStorm. Not much else, but I donāt need much else
Anyway, thatās it for tonight. I might start up tomorrow or I might start up after the weekend.
Lastly, I want to give a big shoutout to @pFtpr for going over some stuff with me. You probably had no idea what fire you were starting, but here it goes. Appreciate your insight and the discussion we had.
Until next time, happy coding everyone.