С тех пор, как я начал изучать программирование, я искал мой язык программирования. Конечно же, программирование — это нечто большее, чем языки, но программирование во многом зависит от практики, поэтому неплохо было бы выбрать язык и придерживаться его хотя бы какое-то время!

Я начал с C; Я также изучил некоторые очень хорошие основы JavaScript и попробовал Java. Мне нравились Perl и C#, но первый, кажется, медленно уходит в небытие, а второй в значительной степени ограничивается Windows (операционная система, которую я не запускаю уже несколько лет, с тех пор, как перешел на Linux). Python, конечно, является одним из самых популярных языков, и существует МНОГО курсов и учебных пособий, но мне он не очень нравится. Это сугубо личное. И поэтому я довольно долго искал язык для изучения и использования.

А потом некоторые люди в компании, в которой я работаю, запустили курс Coursera по C++ и пригласили всех посмотреть. Я посмотрел вступительную лекцию, потом еще одну лекцию, и еще одну… а потом каким-то образом обнаружил, что загружаю Eclipse и пишу свою первую программу на C++. Возможно, это был мой предыдущий опыт работы с C, но я нашел C++ очень дружелюбным и удобным для написания программ. И я просто знал, что это тот язык, который я искал :)

Итак, ниже приведены ресурсы, которые я использую (или, в некоторых случаях, собираюсь использовать) для обучения и практики. Надеюсь, они пригодятся и вам, если вы изучаете или собираетесь изучать C++!

Основы C++: белый пояс

Курс, с которого началась моя любовь к C++ :) Отлично изложен, много интересных и сложных практических заданий. На русском — надеюсь, добавят английские субтитры и перевод!

Посвящение в программирование (на C++)

Еще один курс Coursera, который в настоящее время проходит мой друг. На французском языке, но включает английские субтитры и задания на английском языке.

30 дней кода от Hackerrank и Учебник по C++ от Hackerrank

Первый фактически может быть выполнен на любом языке, поддерживаемом Hackerrank (включая C), а второй представляет собой учебник, специально разработанный для обучения C++ (хотя некоторые задачи, похоже, взяты из курса C и лишь немного адаптированы для C++; описание задач иногда плохо сформулированы и их трудно понять — в этом случае перейдите в раздел «Обсуждение», есть вероятность, что кто-то предложил лучшее объяснение!). Оба учебника хороши для начала, но они предназначены для обучения, а не для практики.

Наборы задач Codeforces

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

Codeforces не предлагает никаких курсов или туториалов — это место для соревнований. Что бесценно для тех, кто учится программировать, все конкурсные задания остаются в архиве, и их можно просмотреть и решить. Кем угодно, когда угодно. Хороший способ начать — отсортировать все задачи по количеству людей, которые их решили. Обратите внимание и на теги: они не только позволяют увидеть, что с ними можно попрактиковать, но иногда могут подсказывать, как решать задачи (например, тег «жадный» указывает на то, что решение может использовать жадные алгоритм, но это не значит, что его нужно использовать — я решил одну из таких задач другим способом).

Еще одна замечательная особенность Codeforces заключается в том, что он поддерживает около 20 языков программирования, от Delphi до Haskell. Обычно я отправляю свои решения в GNU G++14 6.2.0.

Изучай С++

Это курс, который я сам не проходил, но собираюсь — мне нравится, что он включает в себя множество объяснений по ходу дела, например, о различных средах разработки (с объяснением того, что такое проект C++). ).

Класс C++ от Google

Это еще один курс, который я сама не проходила — я его случайно обнаружила, и на первый взгляд он определенно стоит того, чтобы его посмотреть, так что сохраню ссылку здесь :)

И, наконец, здесь я иду за информацией о конкретных функциях, классах и т. д.:





Первый сайт тоже предлагает туториал по C++, но это действительно туториал, без каких-либо практических заданий, насколько я понял.

И, наконец, практический совет: если вы совсем застряли, не бойтесь и не стесняйтесь заглядывать в чужие решения! Не копируйте, конечно :) Иногда в этих решениях есть полезные функции, о которых вы никогда не слышали ни в одном курсе, и даже если вы не воспользуетесь ими сразу, вы вспомните о них, когда они пригодятся в будущем. будущее. (Вот откуда я узнал, например, о функции accumulate() — я еще не использовал ее, но с нетерпением жду задачи, в которой она могла бы послужить своей цели :))