KtinaЯ изучил программирование самостоятельно
с нуля.
Нигде не учился.
Нет ВО.
Сейчас работаю в крупной ИТ компании и разрабатываю серверное масштабируемое ПО, которое обслуживает запросы
миллионов пользователей (миллонов это
дословно, а не метафора).
На самом деле я прошёл очень долгий путь (с 1994 года, когда был в третьем классе по 2010, когда мне начали платить реальные деньги за работу программистом) изучения программирования, даже слишком долгий, на этом пути я много, много, много раз забрасывал программирование, потому что заходил в какой нибудь тупик.
Пройдя этот длинный путь я могу дать Вам несколько советов (с которыми многие не согласятся):
1. Найти крайне простую с технической точки зрения среду программирования.
Например, под Windows это может быть сочетание блокнота и компилятора lcc (где для компиляции потребуется всего пару команд).
Избегайте всех этих навороченных IDE, где от количества различных кнопочек и шаблонов проектов голова кругом идёт. Вам надо сосредоточится на чистом программировании.
2. Начните с экспериментов на ассемблере (ДА, ДА! Я серьёзно!). Напишите на нём пару hello world программ. Не надо углубляться до бесконечности. С ассемблером надо просто поиграться, чтобы понять как железка работает на низком уровне. Понять что такое регистры и так далее. Простейшие условные конструкции и циклы. Это всё что надо для начала.
После ассемблера у вас будет какое-то практическое понимание с чем вы работаете. Не давайте пока своим мозгам ООП и прочих абстрактных вещей.
От ООП и уж тем более от Страуструпа мозги человека, который вообще не незнает как работает компьютер, превратятся в желеобразную массу.
3. После ассемблера можете приступить к изучению Си, опять же начните с hello wordlов. Более того, попробуйте посмотреть ассемблерный код своих маленьких hello world программ получившийся после компиляции. Просто посмотрите как выглядит программа на Си и во что её превращает компилятор.
Опять же во все детали не нужно вникать. Просто прочувствуйте с чем вы работаете и что делает машинка и что делает компилятор.
Хорошая книжка "Керниган, Ричи. Язык C" (хотя она не даёт совета как в определенной ОС и с определенным компилятором сделать свой первый hello world, так что с этим придётся поискать в гугле).
4. После того как более менее уверенно на уровне новичка освоитесь с Си и будете понимать что происходит в машине. То вы можете свободно выбрать какой нибудь интерпретируемый язык, такой как Python. Когда будете его изучать, то по крайней мере уже будете более менее понимать что происходит.
5. На абстрактных примерах и олимпиадных задачах далеко не уедешь. Возьмите какую нибудь готовую програмку на языке который вы изучаете (можно что-то веселое типа тетриса). Попробуйте её изменить. Поиграйте с ней. Поэскпериментируйте.
Всё вышеописанное могу завершить таким кратким наставлением:
Найдите максимально простую среду программирования. Не позволяйте забивать свою голову сжиженной массой разнообразных деталей (типа кнопочек в IDE) и абстрактных концепций (типа ООП). Фокусируйтесь на основах, на чистом программировании и на том как работает машинка. Экспериментируйте, пишите простые программы, модифицируйте их. Потом переходите к изменению небольших программ. Экспериментируйте с их изменениями.
И только когда вы уже будете на ты с парой языков программирования (на "ты" уровня новичка). Только тогда можете осторожно приступать к изучению более сложных вещей типа ООП и различных более продвинутых сред программирования.
P.S. Самое сложное для вас во всем это будет выбрать среду программирования, чтобы написать свой первый hello world. Именно начало самый сложный этап.
P.P.S. Девять лет назад меня вдохновляла вот эта знаменитая
статья.