Инструкция к погружению в С++ и более 10 бесплатных ресурсов для начинающих
Школа анализа данных Яндекса составила подборку из 10 бесплатных ресурсов для изучения языка программирования C++.
Освоить C++ сегодня — не такая большая проблема, в интернете много учебных материалов. Но сориентироваться в них и выбрать действительно полезную информацию порой сложно, особенно новичкам, которые только начинают свой путь в программировании.
Алексей Толстиков, академический руководитель Школы анализа данных Яндекса, делится практическими рекомендациями по изучению языка, а также подборкой бесплатных ресурсов для тренировки.
Что нужно знать
Для того, чтобы научиться писать на С++ , обычно бывает достаточно знания любого языка программирования. Если такого опыта нет, то свой путь придется начать с изучения основных понятий: переменные, циклы, функции, условные операторы и так далее.
Базовые знания, которые позволят новичку приступить к проектам и началу карьеры:
- Базовые компоненты: создание итераторов, конструкторов, шаблонов. Для этого будет полезно изучить не только базовую библиотеку STL, но и другие, которыми пользуются разработчики, например, Boost.
- Структуры данных и алгоритмы: линейный поиск, двоичный поиск, быстрая сортировка, хеш-таблицы, списки, деревья.
- Многопоточность: важная концепция, которая применяется, когда есть несколько задач, работающих параллельно, и несколько доступных ядер процессора.
- Эффективный код: написание такого кода включает в себя тестирование и проверку на безопасность для определения проблем, которые могут возникнуть с производительностью. Нужно понимать, как их исправить, как оптимизировать поиск, использовать память, настраивать ограничения.
C чего начать знакомство с C++
Стратегия изучения частично зависит от профессионального бэкграунда разработчика. Но есть три универсальных совета, которые помогут как новичкам, так и более опытным специалистам.
1. Прокачивайте логику
Тем, кто изучает C++ на базе другого языка, освоить синтаксис будет намного легче, чем начинающим разработчикам: основные «кирпичи» те же, просто сформированы немного иначе. А вот новичкам на старте важно научиться трансформировать свои мысли в последовательность действий-команд, которую можно задать компьютеру при помощи операторов языка программирования.
Этот процесс включает два этапа:
- Тренировку алгоритмического мышления.
- Изучение синтаксиса языка.
Теорию и практику лучше осваивать параллельно — такой системный подход позволит сразу же применить абстрактные знания в решении задач, пусть и учебных. Из стартовых материалов подойдут руководства, например, «Язык программирования С++» от его создателя Б. Страуструпа, и видео на YouTube, которые можно дополнить различными тренажерами для развития алгоритмических навыков.
2. Совершайте ошибки
Этот совет подойдет для изучения любого языка программирования. И новичкам, и опытным специалистам важно помнить, что С++ — очень низкоуровневый и «опасный» язык. При его использовании легко совершить базовую ошибку, которую удастся выявить только тогда, когда сервис вместо 10-ти человек начнет использовать миллион. Еще про С++ говорят, что, используя его, легко “выстрелить себе в ногу”.
Во многих языках такие ошибки проявляются быстрее и скорее исправляются разработчиками, но за это нужно платить временем работы программы. Например, в Python встроенный интерпретатор еще по ходу исполнения упадет и скажет: «Происходит не то, что ожидалось, давайте прервемся. Вот что пошло не так.», а C++ не будет до последнего реагировать на неправильную работу – это связано с термином “неопределенное поведение”. Поэтому всем, кто программирует на C++, нужно набирать практику на множестве возможных ошибок. Это не гарантирует, что в процессе кодинга реального проекта разработчик не столкнется с проблемами, но снизит вероятность локальных и глобальных программных сбоев в будущем. С опытом и насмотренностью ошибки становятся более редкими, нестандартными и даже интересными. О самых нетривиальных случаях специалисты делают доклады и выступают с ними на конференциях или пишут статьи.
3. Пишите свой код и смотрите чужой
Программист должен знать не только, какие ошибки встречаются, но и понимать, как предотвратить их, а если они случились — уметь оперативно исправить. Все это невозможно без практики, поэтому важно набивать руку: часами писать код, а потом столько же читать чужой. Последнее научит мыслить в обратную сторону — от команд для компьютера к пониманию, чего же хотел добиться своими действиями другой разработчик.
Практиковаться лучше не только по книжкам, но и в реальных условиях, например, можно просматривать открытые репозитории проектов в github или использовать платформы вроде Codeforces и Codewars, где объединяются люди, которые интересуются быстрым и эффективным решением задач. Такие активности позволяют не только потренироваться в поиске решения, но и посмотреть, как с задачами справились другие. Если у платформы есть возможность проголосовать за понравившееся решение, то получаем классную возможность посмотреть, что другим специалистам в этой области нравится больше, что они считают более читаемым, компактным и быстрым.
Где еще набираться опыта и закреплять теорию
Помимо соревнований, практика может состоять из хорошо подобранных учебных задач или собственного пет-проекта, например, начать можно с калькулятора, конвертера валют, простой игры по типу «Змейки», «Сапера» или «Тетриса».
Ниже несколько ресурсов, которые помогут закрепить теорию и поупражняться в программировании:
- Хендбук Академии Яндекса по С++ — бесплатный онлайн-учебник для самостоятельного погружения в С++ для новичков, которые знакомы с основами информатики и владеют любым языком программирования на школьном уровне. Теория разбирается одновременно с тренировкой на практических задачах. Решения проверяются автоматически. А заниматься можно в своем темпе: проходить материал по порядку или выборочно по главам, чтобы освежить и закрепить конкретную тему.
- Hacking C++ — наглядный справочник с картинками и инфографикой. Здесь также есть подробное руководство по изучению языка для новичков.
- The C++ Asynchronous Framework — современный асинхронный фреймворк с открытым исходным кодом и богатым набором абстракций для быстрого и удобного создания микросервисов, сервисов и утилит.
- CodeRun — это онлайн-тренажёр с каталогом задач для разработчиков. Эксперты Яндекса и приглашённые спецы собрали задачи с Тренировок по алгоритмам от Яндекса, Yandex Cup и многих других мероприятий. Все задания разбиты по темам и уровням сложности.
- Комьюнити Stack Overflow — платформа, на которой собрана огромная коллекция вопросов и ответов по программированию. Участники сообщества активно делятся опытом с коллегами. Для тех, кто самостоятельно работает над своим первым проектом, такая помощь неоценима.
- Онлайн-документация по С++ — справочник на английском по языкам C, C++ и стандартным библиотекам с подробными примерами. Для пользователей, которые предпочитают учиться на русском, есть адаптированная версия сайта.
- Сайт Standard C++ Foundation — ресурс, на котором публикуются новости, обсуждение стандарта C++ для всех компиляторов и платформ, а также анонсы тематических конференций.
- Гайдлайны С++ Core Guidelines — open-source проект от создателя С++ Бьярне Страуструпа и эксперта по C++ Герба Саттера. На сайте публикуются рекомендации, которые помогают разобраться с синтаксисом языка и упростить процесс написания кода.
- Онлайн-компилятор Compiler Explorer — интерактивный инструмент, который позволяет набирать код в одном окне и сразу просматривать ассемблерный вывод в другом. Результатом проверки можно поделиться с друзьями и коллегами, отправив им ссылку.
- #SimpleCode — YouTube-канал о том, как программировать на разных языках, в том числе и на C++. Будет полезен разработчикам с любым бэкграундом.
- ProgrammingKnowledge — YouTube-канал для начинающих программистов. Здесь можно найти много пошаговых видеоуроков по разным языкам.
- Codeforces — платформа для создания, проведения и обсуждения соревнований по программированию с элементами соцсети.
- Сodewars — огромная подборка задач на более чем 20 языках программирования. На Сodewars можно обсудить задачи с другими игроками, а также посмотреть альтернативные решения.
Как тренироваться кодить на Python?
Начал изучать Python, подскажите пожалуйста, есть ли какие-то сервисы по тренировке кодинга? К примеру, отточить написание функций и т.д. Дабы не путаться в аргументах, переменных функциях и т.д.
- Вопрос задан более трёх лет назад
- 3390 просмотров
1 комментарий
Простой 1 комментарий

Какой раз уже. однообразные одни и те же вопросы.
Ну открой ты ютуб или гугл, камон, чел. Вам что реально пальцами лень тыкнуть.
Решения вопроса 1
Сергей Горностаев @sergey-gornostaev Куратор тега Python
Седой и строгий
Просто берите учебник, читайте полностью, попутно экспериментируя с примерами из книги. Обязательно примеры набирать самостоятельно, а не копировать. Обязательно пытаться их изменять, чтобы убедиться, что вы действительно понимаете, как они работают. После прочтения попытайтесь набомбить пет-проект с использованием изученных технологий.
Если где-то застрянете, перечитывайте соответствующие главы, читайте официальную документацию, ищите ответы в гугле. Ни в коем случае не несите свою проблему другим людям до тех пор, пока не потратили хотя бы пару-тройку дней на поиск решения. Если ответы вам будет давать кто-то другой, программировать вы не научитесь.
И не используйте IDE на этапе обучения. Применяйте обычный текстовый редактор и консоль. Во-первых, IDE избавляет вас от рутинных операций, но именно рутинные операции позволяют набить руку . Во-вторых, IDE скрывает многие процессы, выполняя их за программиста, но именно они позволяют понять базовые принципы.
Ответ написан более трёх лет назад
Комментировать
Нравится 23 Комментировать
Ответы на вопрос 5
full-stack web developer
Напишите программу рецептов приготовления пиццы с возможностью Добавления новых записей в самописную файловую базу данных, вывод информации из нее и поиск по одному или нескольким ингредиентам. — пока будете писать код, столько нового узнаете. И не останавливайтесь на задаче, расширьте функционал.
Опыт растет по мере написания действующих приложений, от малых до великих.
Топ-7 лучших ресурсов для практики программирования в 2023 году

Если хотите расти в профессии, никогда не останавливайтесь в совершенствовании навыков разработки. Так что даже если вы уже нашли работу, все равно не помешает иногда порешать задачи, где придется искать нестандартные решения и шевелить мозгами. А для новичка без опыта — это вообще маст-хэв.
Где найти задания, которые будут держать вас в тонусе? В этом отлично помогут сайты для практики программирования. Мы сделали небольшую подборку самых интересных и популярных ресурсов. Enjoy!
Codewars
Англоязычный ресурс с возможностью в игровой форме потренироваться в нескольких десятках языков программирования, включая JavaScript, Python и другие. На сайте пользователь повышает свой уровень (как общий, так и в каждом доступном языке программирования), решая разнообразные задачи. Чем выше уровень — тем задания сложнее.

Пример задачи на JavaScript на уровне новичка, который учится кодить
Также игроки могут создавать свой клан и ознакамливаться с другими вариантами решения только что пройденных задач.
LeetCode
Также англоязычный сайт (с китайской версией!) для решения алгоритмических задач по программированию, который может помочь вам пройти собеседование в компанию вашей мечты. Платные пользователи получают доступ к задачкам, основанным на вопросах с собеседований технологических гигантов. Поэтому для тех, кто готовится к интервью, LeetCode — это незаменимый ресурс.

«Песочница» на LeetCode
JavaRush
Сайт имитации программирования на одном языке, хоть и очень популярном, — Java. По сути, это геймифицированный учебник по этой технологии. С помощью решения задач и прохождения игр пользователь повышает свой уровень и изучает новые аспекты языка программирования Java.

Пример задачи на JavaRush
Всего на сайте более 1200 задач. Есть версия сайта на украинском, английском и русском языках.
HackerRank
Англоязычный ресурс, на котором проводятся онлайн-соревнования для программистов. Такие конкурсы нередко спонсируются крупными IT-компаниями и даже имеют денежные призы. Упоминание о высоком месте в таких соревнованиях может стать полезной записью в резюме, а наиболее отличившихся участников компании часто приглашают на стажировку.

Стартовая страница сайта HackerRank
Topcoder
Еще один сайт для тренировки программирования, где опытные разработчики могут побороться друг с другом за денежный приз. Сайт был основан еще в 2001 году, доступен только на английском и является одним из самых крупных ресурсов по спортивному программированию.

Главная страница Topcoder
Не стоит переживать, что вы пока не достойны бороться. Во время соревнований проводится ранжирование участников по рейтингу, так что вероятность, что новичок напорется на опытного соперника, крайне мала.
Edabit
Сайт для практики программирования с более чем 10 000 задач и маскотом, способным потягаться в уровне харизмы с совой из Duolingo Собственно, так они себя и позиционируют: Duolingo для изучения кодинга.

Список задач по изучению языка Ruby
Геймификация делает процесс обучения программированию нерутинным и затягивающим. Сайт доступен на нескольких языках, включая английский и русский.
CodinGame
Англоязычный сайт для имитации программирования, где пользователь способен влиять на сценарий обучающей игры с помощью решения задачек. Ресурс позволяет тренироваться на нескольких десятках языков программирования от Pascal до Go. Из приятного: можно опробовать работу сайта даже без регистрации нового аккаунта.

Пример задачи с CodinGame
Это только малая часть ресурсов, которые дают возможность попрактиковаться в программировании. Как мы видим, можно не только учиться кодить нескучно, но еще и подзаработать на этом.
13 платформ, которые помогают начинающим айтишникам получить опыт кодинга

Пройти курс — не всегда достаточно для оффера. Например, на собеседовании кандидатам-разработчикам могут устроить лайфкодинг: попросить выполнить задачу и написать код онлайн. Чтобы впечатлить рекрутера скоростью и нестандартным подходом, нужно тренироваться. Рассказываем, где это можно сделать, и какое решение разработали в SkillFactory.

Освойте профессию «Веб-разработчик»
IT HERO
Платформа от Skillfactory, созданная для студентов, которые хотят научиться лучше кодить. Это не просто тренажер. Сервис геймифицирован. Тренировка проходит в режиме матча один на один или человек с ботом. Регистрируйтесь на платформе и начинайте набивать рейтинг в матчах с другими пользователями, зарабатывать достижения и прокачивать навыки. Платформа не только помогает более успешно справиться с лайфкодингом. Формат соревнований позволяет повысить скорость выполнения задач, потренироваться работать под стресс-фактором, а также проработать ошибки и кодить более осознанно. Все, что было неверно, платформа подсвечивает красным цветом. Таким образом можно оценить свой код, проанализировать, какие ошибки были допущены и почему, продумать, как не допускать их в дальнейшем. Пройдите наш тест и узнайте, какой язык программирования вам подойдет. Ссылка в конце статьи.
Профессия / 12 месяцев
Веб-разработчик с нуля
Создавайте нужные любому бизнесу сервисы
3 658 ₽/мес 6 650 ₽/мес

TopCoder
Topcoder — это олдскульное сообщество спортивного программирования: регулярные соревнования проходят с 2001 года. На TopCoder собраны головоломки по проектированию, разработке и алгоритмам. И марафоны — недельные (иногда двух-) исследования, в финале которых участники ищут не единственно верное решение, а предлагают максимально приближенные к идеалу варианты. Правильного ответа в марафонах вообще может не быть — заходить на марафоны новичкам рановато. Но если решать головоломки на скорость и за деньги (иногда соревнования предполагают денежные призы) хочется, начать стоит с простых подготовительных челленджей от создателей платформы.
Codeforces
Михаил Мирзаянов, создатель проекта, со школы любил олимпиады за соревновательный дух и возможность доказать себе, что способен на большее. Так Михаил пришел в спортивное программирование, а затем создал свою платформу для киберсоревнований. Так что мотивационной «мамой» платформы стали интеллектуальные бои школьников. А «отцом» — TopCoder: по сути, Codeforces — русскоязычный аналог. Проект во многом напоминает социальную сеть: есть группы, пользователи добавляют друг друга в друзья, ведут блоги и получают баллы за их пользу, следят за активностью товарищей по рейтингу и истории участия в соревнованиях. В месяц проводит 8-11 челленджей: олимпиады по информатике для школьников, продвинутые задачи по тестированию и взлому, универсальные код-головоломки, которые создают сами пользователи для других участников. Обычная длина раундов — около 2 часов.

Станьте Fullstack-разработчик на Python и найдите стабильную работу
на удаленке
PythonChallange
Как сказано на самом сайте — он создан просто для веселья, и в конце вас ничего не ждет. Ни денежных наград, ни горячих офферов. Только повышение скорости и качества кода. У платформы консервативный дизайн и простая организация: заходите, нажимаете на стартовую ссылку и решаете задачи с помощью Python. Уровень сложности выпадающих заданий будет расти: с первыми справятся совсем новички, но дальше будут и задачи со звездочкой. Или с тремя звездочками. И все решаются короткими скриптами — сохраняйте их, могут пригодиться.
CodeCombat
Полезный ресурс для новичков, школьников, учителей: на CodeCombat программировать учат в формате игры. Пользователям предстоит пройти обучающий квест и с нуля освоить Python, JavaScript и C ++, «перепрыгивая» от задачи к задаче. Кстати, можно присоединиться к бета-тестированию CodeCombat Worlds — онлайн-симулятора, на 3D-просторах которого участники программируют своих питомцев, кодят на Lua и полноценно практикуются в создании игр.
Timus Online Judge
Тысячи задач разной тематики и уровня сложности с автоматической системой проверки. Открывайте архив и выбирайте: геометрические и графовые задачи, для начинающих и посложнее, головоломки по теории чисел и строковым алгоритмам. А еще задачи динамического программирования, на структуры данных и про палиндромы.
LeetCode
Известная платформа для подготовки к техническим интервью — ссылка на LeetCode, вероятно, встретится в большинстве гайдов серии «Как стать разработчиком в “Яндексе”, “Тинькофф” или Ozon». Из плюсов: каждая задача сопровождается обсуждением, в котором можно подсмотреть интересные подходы и подсказки к решению. Подойдет для адептов Java и JavaScript, Python, C, C++, С#, Ruby, Bash.
CodeChef
Некоммерческая платформа спортивного программирования с огромным спектром задач. Например, можно поучаствовать в раунде по взлому и дебагу игр. CodeChef проводит индивидуальные и командные соревнования, а еще на платформе есть раздел с обучающими мини-курсами по Python, C, C++, Java и C#.
CheckiO
Проект для Python- и TypeScript-разработчиков, которым важна эстетика. Задачи тренажера «разбросаны» по гейм-полю: исследуйте карту обучающего мира и решайте головоломки, чтобы пройти сюжет до конца. В маршруте CheckiO 500 задач, можно выбрать уровень сложности и наблюдать, как решают головоломки другие игроки: иногда код-ревью соседа по игре научит большему, чем собственное прохождение.
Screeps
Учиться играючи можно и в Screeps. Это массовая многопользовательская стратегия, в которой нужно захватывать территории, застраивать свою космоколонию, добывать ресурсы и отбиваться от врагов — все с помощью кода на JavaScript. Вариант не для изучения языка с нуля, но поможет отточить скиллы не по учебникам, в «живом» режиме.
CodinGame
Еще одна игра-тренажер: на выбор 10 языков для прокачки, но действительно сложные головоломки встречаются редко. Зато на платформе устраивают «рыбалку» рекрутеры крупных компаний: можно и до оффера доиграться.
HackerRank
Прямой конкурент LeetCode — HackerRank тоже используют для хардовой подготовки к техническим интервью. Механика та же: участвуете в конкурсах, решаете задачи на алгоритмизацию и программирование, увеличиваете скорость и качество кода, поражаете рекрутеров.
C Puzzles
Сборник головоломок для фанатов языка C. Поможет отточить навыки код-ревью: в задачах просят отыскать мелкую ошибку в рабочем коде, предсказать результаты программы и потенциальные проблемы неидеальных отрезков кода. Тест: какой язык программирования вам подойдет?
Frontend-разработчик
Научитесь создавать удобные и эффектные сайты, сервисы и приложения, которые нужны всем. Сегодня профессия на пике актуальности: в России 9000+ вакансий, где требуется знание JavaScript.