Что нужно изучать, чтобы стать программистом C++?
===================================================

 Такое у меня дело. В школе информатику преподавали только один семестр и все, что нашему 9 классу успели дать - это владение стандартными офисными программами и системы счисления. Позже я ушел в художественное училище (в школе не хотел больше доучиваться, поэтому и пошел учиться на графического дизайнера, потому что любил рисовать и работать на компьютере). Позже интерес к информационным технологиям взял свое, и я самостоятельно освоил программу за 9 класс по учебнику А. Ю. Босовой. Узнал, что такое алгоритмы, циклы, функции, процедуры и писал простые программы на Паскале. Позже стал читать учебники по алгоритмам и базам данных.  

На данный момент я пытаюсь освоить C++. Понимаю, что дело нелегкое и кроме основного синтаксиса языка и написания программ требуется знать много других вещей. Но я твердо решил, что хочу этим заниматься. Это не юношеское: "Вот сейчас изучу, а потом стану мегапрограммистом!", после которого через месяц все забрасывается в дальний угол. Я долгое время искал информацию, что это за работа, взвешивал "за" и "против", выбирал, на какую специальность мне идти в технический вуз и в какой нише я хотел бы работать. Остановился на системном программировании.  
  

Т. к. я уже знаю, что обучение в вузе может дать только необходимую фундаментальную базу (спасибо худ. училищу за то, что научило самообучению и самоорганизации), и поэтому хочу освоить хотя бы минимум сам.  
  

А вот и сам вопрос: **"Что нужно изучать, чтобы стать системным программистом на С++? Книги по каким темам нужны? Какие программы писать? С чего начинать новичку?"**  
  

P. S. Заранее извиняюсь, за то, что много текста и за потраченное вами время. 

 Вам надо выбрать направление. Лично мне нравятся 3D (скоростная графика) и обработка видео. Это библиотеки DirectX (включая язык шейдеров), DirectShow, Media Foundation.  

Хотя вы написали, что хотите стать системщиком. Тут не помешает и ассемблер, и, может быть, разработка драйверов. Соответственно, другая литература. 

 Вы начните с тех самых основ, не рвитесь раньше времени в какую то конкретную область. Начните с изучения базы C++, рекомендую почитать Шилдта и Лафоре, оба автора пишут достаточно простым языком.  

После этого займитесь изучением алгоритмов, тут отлично подойдет Кормен (ну или Кнут, если осилите).  

А дальше уже сможете углубляться в какую то отдельную область. 

> Что нужно изучать, чтобы стать системным программистом на С++?

  

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

Поэтому, если ты математики знать не будешь, то ты просто ничего не поймёшь из того, что уже используется в системном программировании много лет.  
  

Самое печальное, что в прикладном программировании всё то же самое, только в нём ещё и физика бывает нужна, так как если ты пишешь программу, вычисляющую маршрут для квадрокоптера, то там нужно понимать, как он летает и как дует ветер в это время (это нужно их векторы движения и скорости сопоставлять), иначе твоя программа будет неточной и бесполезной или вообще неправильной и он улетит в лес или в море из-за ошибки.  
  

Если хочешь быть программистом, готовься к тому, что придётся изучать самую обычную математику и самую обычную физику. 

 А чем веб-разработка не нравится? С вашим худ. образованием можно стать хорошим веб-дизайнером и верстальщиком (фронтендщиком). Там много и циклов, и функций, и других интересных вещей.