Что нужно изучать, чтобы стать системным программистом на С++?
Нет системных программистов на C++, есть просто системные программисты, и они используют сразу много языков. Для начала тебе нужно понять, при чём тут математика. Вот смотри, есть файловая система на диске. Чтобы эти файлы экономно распределять и работать с ними быстро, алгоритмы работы с файлами оптимизируются. А оптимизируются они как? Правильно, оптимизируют они математически. То есть берётся какая-то математическая теория и из неё делаются выводы, как можно написать программу покороче, как можно сложить данные покомпактнее. Так придумали всякие математические деревья для файловых систем.
Поэтому, если ты математики знать не будешь, то ты просто ничего не поймёшь из того, что уже используется в системном программировании много лет.
Самое печальное, что в прикладном программировании всё то же самое, только в нём ещё и физика бывает нужна, так как если ты пишешь программу, вычисляющую маршрут для квадрокоптера, то там нужно понимать, как он летает и как дует ветер в это время (это нужно их векторы движения и скорости сопоставлять), иначе твоя программа будет неточной и бесполезной или вообще неправильной и он улетит в лес или в море из-за ошибки.
Если хочешь быть программистом, готовься к тому, что придётся изучать самую обычную математику и самую обычную физику.