GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — GitHub - SuboptimalEng/cpp-tutorials: ⚙️ The code for my C++ tutorials on YouTube.

BranchesTags
Open more actions menu

Latest commit

 

History

256 Commits
256 Commits

Folders and files

NameName
Last commit message
Last commit date
.vscode
.vscode
 
 
000-template
000-template
 
 
001-gdb-lldb-debugging
001-gdb-lldb-debugging
 
 
002-compiler-linker
002-compiler-linker
 
 
003-std-cout-cin
003-std-cout-cin
 
 
004-vscode-build-run
004-vscode-build-run
 
 
005-sfml-homebrew-setup
005-sfml-homebrew-setup
 
 
006-clang-save-temps
006-clang-save-temps
 
 
007-webgpu-cross-platform-app
007-webgpu-cross-platform-app
 
 
008-webgpu-wgsl
008-webgpu-wgsl
 
 
009-int-main-no-return
009-int-main-no-return
 
 
010-ub-for-uninitialized-var
010-ub-for-uninitialized-var
 
 
011-lldb-init-settings
011-lldb-init-settings
 
 
012-counting-bits
012-counting-bits
 
 
013-header-files
013-header-files
 
 
014-vscode-debug
014-vscode-debug
 
 
015-ptr-vs-ref-for-output
015-ptr-vs-ref-for-output
 
 
016-array-data-init
016-array-data-init
 
 
017-reading-assembly
017-reading-assembly
 
 
018-indirect-memory-addressing
018-indirect-memory-addressing
 
 
019-stack-frames
019-stack-frames
 
 
020-stack-frame-red-zone
020-stack-frame-red-zone
 
 
021-lldb-debugging
021-lldb-debugging
 
 
021-lldb-stepping-commands
021-lldb-stepping-commands
 
 
022-program-counter
022-program-counter
 
 
023-xorl-eax-eax
023-xorl-eax-eax
 
 
024-lldb-p-x-commands
024-lldb-p-x-commands
 
 
025-asserts
025-asserts
 
 
026-size_t
026-size_t
 
 
027-size_t-vec-size-minus-one
027-size_t-vec-size-minus-one
 
 
028-att-vs-intel-syntax
028-att-vs-intel-syntax
 
 
029-timestamp-data-type
029-timestamp-data-type
 
 
030-civ-ii-gandhi
030-civ-ii-gandhi
 
 
031-references
031-references
 
 
032-pass-by-reference
032-pass-by-reference
 
 
033-vector-of-bools
033-vector-of-bools
 
 
034-pre-vs-post-increment
034-pre-vs-post-increment
 
 
035-for-loop-pre-vs-post-incr
035-for-loop-pre-vs-post-incr
 
 
036-threads-intro
036-threads-intro
 
 
037-threads-join-or-detach
037-threads-join-or-detach
 
 
038-threads-mutex
038-threads-mutex
 
 
039-threads-mutex-data-race
039-threads-mutex-data-race
 
 
040-threads-mutex-vs-atomic
040-threads-mutex-vs-atomic
 
 
041-threads-mutex-lock-guard
041-threads-mutex-lock-guard
 
 
042-threads-mutex-deadlock
042-threads-mutex-deadlock
 
 
043-threads-mutex-scoped-lock
043-threads-mutex-scoped-lock
 
 
044-threads-mutex-unique-lock
044-threads-mutex-unique-lock
 
 
045-threads-mutex-producer-consumer
045-threads-mutex-producer-consumer
 
 
046-constructors
046-constructors
 
 
047-compiler-optimizations
047-compiler-optimizations
 
 
048-wall-wextra-werror
048-wall-wextra-werror
 
 
049-static-vs-dynamic-linking
049-static-vs-dynamic-linking
 
 
050-compiler-linking
050-compiler-linking
 
 
051-static-variables
051-static-variables
 
 
052-static-var-dynamic-init
052-static-var-dynamic-init
 
 
053-include-string-optional
053-include-string-optional
 
 
054-dont-use-namespace
054-dont-use-namespace
 
 
099-using-namespace-std-maybe
099-using-namespace-std-maybe
 
 
assembly-notes
assembly-notes
 
 
.clang-format
.clang-format
 
 
.gitignore
.gitignore
 
 
LICENSE
LICENSE
 
 
README.md
README.md
 
 
all-exercises.md
all-exercises.md
 
 

Repository files navigation

⚙️ C++ Tutorials

This repo contains the code for my C++ tutorials on YouTube.

These tutorials are not meant to be consumed in any specific order (even though each folder will be numbered). This ordering represents "the moment in time when I found that specific topic interesting". It does NOT represent "the order in which you should learn that topic".

Who is this for?

First and foremost, these C++ tutorials are meant for me. I found that I tend to forget topics that I've previously learned if I don't use them on a day-to-day basis. For example, there is a high probability that I'll forget many of the lldb commands (I explained in my video) in 2-3 months. These tutorials act as a reference for my future self in case I need a quick guide to help me get back up to speed.

Aside from me, the type of person who will find these tutorials most useful is someone who who has completed 2+ years of undergraduate study in computer science. You won't see me make a tutorial like "How to write a for-loop in C++" because I don't find that interesting. (Unless of course, there are some very obscure or interesting ways to do that in C++, which sounds fun to learn and explain.)

Why am I learning C++?

I started my career in TypeScript as a full-stack web developer. Got bored a few years ago and transitioned to working in computer graphics. C++ is the "lingua franca" of graphics programming.

Additionally, as an engineer, it's always good to be familiar with a statically typed, compiled langauge -- especially, if you've spent your entire career in the JavaScript (or Python) ecosystem. I'd definitely recommend learning a language like C++, Java, or Go.

I've also discussed my reasoning for why I'm switching from TypeScript to C++ for graphics programming in this YouTube video.

Why not Rust?

One of the most common questions I got when explaining my reasons for switching from TypeScript to C++ for graphics programming was -- "Why not Rust"?

I strongly believe C/C++ is the best language for graphics programming (and many other subfields of computer science that I find interesting). I do not believe this is going to change anytime in the next 5-7 years. I'm always happy to update my priors, but for the time being, this is my definitive stance on the matter.

Please give these a read if you want to learn more:

  • Leaving Rust gamedev after 3 years
    • Discussion on Reddit
    • Discussion on HackerNews
  • Rust job market
    • Based on job boards, I noticed there are 10-20 C++ jobs per 1 Rust job (based on location)
    • Nearly all Rust jobs require knowledge of C++, not true vice-versa
    • Is Rust a career dead-end? As opposed to C++?
    • How junior friendly is the Rust job market?

Misc.

  • ThePrimeagen's reaction to a rant from Jonathon Blow regarding web dev is funny and insightful
  • Getting Starting in Computer Graphics by Jeremey Ong

References

  • LearnCpp.com by Alex Pomeranz
  • 4th Edition Exercises by Bjarne Stoustrup
  • The C++ Programming Language, 4th Edition by Bjarne Stoustrup
  • ChatGPT and Gemini (if these count)

About

⚙️ The code for my C++ tutorials on YouTube.

Topics

clangcmakecppcpp-tutorials

Resources

Readme
MIT license
Activity

Stars

24 stars

Watchers

0 watching

Forks

1 fork
Report repository

Releases

Packages

Contributors

Languages

You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.