Примите мои поздравления! Вы полностью прошли основную часть туториала по языку С++! Вы красавчики! Вы получили необходимую базу/фундамент знаний в программировании и, в частности, в программировании на языке С++. Теперь вы уже должны решить самостоятельно, в чем именно вы хотите развиваться дальше. Направлений есть много, мы рассмотрим основные из них.
Структуры данных и алгоритмы
Структуры данных — это набор данных и методов для доступа и манипулирования этими данными. Наиболее распространенной структурой данных, используемой в программировании, является массив, который содержит ряд последовательных элементов одного типа. Вы можете манипулировать этими данными, используя индексацию массива для получения прямого доступа к элементам массива (и их последующего изменения). Мы уже ранее рассматривали стек, как структуру данных, а также методы push() и pop() для манипулирования этими данными.
Алгоритм — это последовательность операций для манипулирования данными с целью получения определенного результата. Например, когда вы просматриваете массив, чтобы найти среднее значение, вы выполняете алгоритм. Бинарный поиск — это алгоритм, позволяющий определить, существует ли заданное значение в отсортированном массиве. Методы сортировки (такие как сортировка методом выбора или пузырьковая сортировка) — это алгоритмы, которые сортируют наборы данных.
В программировании структуры данных и алгоритмы служат одной цели: они являются инструментами, позволяющими в разы увеличить скорость написания и эффективность выполнения вашего кода (при условии, что вы научились пользоваться этими инструментами).
Хорошей новостью является то, что многие из структур данных и алгоритмов, которые вам будут нужны, уже реализованы в Стандартной библиотеке С++ (std::array, std::vector, std::stack, std::string, std::sort() и т.д.). Ваша цель — научиться эффективно их использовать. Кроме того, вы можете попробовать реализовать их самостоятельно с нуля.
Стандартная библиотека C++
Основная часть Стандартной библиотеки C++ — это структуры данных и алгоритмы. Однако есть и другой функционал, который вы можете использовать: числовые (математические) библиотеки, подпрограммы ввода/вывода, функции для управления локализацией, регулярные выражения, многопоточность и т.д. Каждый новый релиз версии языка C++ (который происходит каждые 3 года) добавляет новый функционал в Стандартную библиотеку С++. Вам не обязательно знать, как это всё работает, но вам нужно хотя бы знать, что уже есть, тогда, в случае надобности, не придется придумывать свои велосипеды.
Приложения с графическим интерфейсом
Мы имели дело только с консольными приложениями, поскольку они просты, кроссплатформенны и не требуют установки дополнительного программного обеспечения. В отличие от многих современных языков программирования, язык C++ не имеет встроенного функционала для создания приложений с графическим интерфейсом. Для этого вам нужно будет подключать дополнительные библиотеки. Популярными вариантами являются Qt, wxWidgets, SDL и SFML. Если вы хотите работать с 3D-графикой, то вам нужно будет разбираться с OpenGL.
Графические приложения работают не так, как консольные. В консольном приложении выполнение кода начинается последовательно с первой строки функции main(), обычно останавливаясь только для пользовательского ввода. В графическом приложении выполнение кода тоже начинается с первой строки функции main(): создание рабочего окна, заполнение его графическими объектами, виджетами, а затем бесконечный цикл с ожиданием взаимодействия пользователя с окном (через нажатия на кнопку мыши или на клавишу клавиатуры). Этот бесконечный цикл называется циклом событий, а когда происходит клик мыши или нажатие на клавишу клавиатуры, то произошедшее событие направляется в функцию(и), которая обрабатывает этот тип события. Это называется обработкой событий. Как только событие обработано, цикл событий продолжает свое выполнение, ожидая следующего пользовательского ввода.
TCP/IP. Сетевое программирование
Сейчас уже большинство всех программ подключаются к сети Интернет, к внешнему серверу или к облаку. Любая программа, которая требует наличия учетной записи и входа в систему, подключается к серверу и аутентифицирует пользователя. Многие программы подключаются к службе обновлений (для проверки того, доступно ли обновление). Социальные сети используют Интернет, чтобы пользователи могли общаться друг с другом. И таких примеров десятки.
Сеть (в широком смысле этого слова) — это подключение вашей программы к другим программам на вашем компьютере или на других компьютерах, подключенных к сети, для обмена информацией. Работа в сети является мощным инструментом. В прошлом, если вы хотели изменить работу вашего приложения, вам приходилось выпускать и распространять обновление приложения. Теперь же вы можете просто обновить информацию где-нибудь на сервере, и все экземпляры вашей программы смогут автоматически использовать это изменение.
В языке C++ есть отдельные библиотеки для работы с сетевым программированием (например, библиотека Asio).
Многопоточность
К этому моменту все программы, которые мы рассматривали, выполнялись последовательно. Только после завершения выполнения одной задачи, начинала выполняться следующая. Если по каким-либо причинам (например, если от пользователя требовался ввод, а он ничего не вводил) выполнение задачи тормозилось, то и выполнение целой программы также приостанавливалось. В теории, для небольших тривиальных программ — это еще ок, но на практике (с реальными приложениями) — это почти всегда плохо. Представьте, что ваша программа не может обработать пользовательский ввод, потому что она занята выводом чего-либо на экран, или, например, выполнение программы приостановилось из-за передачи данных из одного узла программы в другой.
К счастью, есть такая вещь, как многопоточность, позволяющая программам выполнять сразу несколько задач одновременно. Аналогично тому, как вы можете идти и разговаривать по телефону, так и многопоточность позволяет программе «разделить» свое внимание на выполнение сразу нескольких задач параллельно друг другу. Например, некоторые графические приложения (такие, как веб-браузеры) помещают рендеринг картинки в отдельный поток, чтобы обновление экрана не блокировало другие вещи (например, обработку пользовательского ввода).
Многопоточность — вещь мощная, но переходить к её изучению стоит хотя бы с минимальным опытом работы с сетевым программированием или с графическими приложениями.
Ravesli. Что дальше?
230+ уроков, сотни тысяч слов, миллионы символов. Почти 3 года у меня ушло на перевод данных уроков. Отдельное спасибо автору LearnCpp.com — это его уроки, а не мои (если кто не знал). Я выполнил лишь их адаптированный перевод.
Вы получили необходимый старт для вашего развития в программировании, теперь я предлагаю вам прокачать ваш уровень еще больше с помощью следующих материалов на Ravesli:
Практические задания по С++. 70+ упражнений с разными уровнями сложности для выполнения. Здесь вы сможете хорошенько попрактиковаться, начиная уже с первой части.
Пошаговое создание графической игры на С++, используя библиотеку MFC. Начинаем на первом уроке и продолжаем создавать с нуля игру «SameGame».
Уроки по графической библиотеке SFML. Разбираемся с тонкостями работы с графической библиотекой SFML в С++, начиная со вступления и установки SFML.
Уроки по Qt5. Рассматриваем кроссплатформенный фреймворк Qt5, его функционал и возможности. Начинаем с установки QtCreator.
Уроки по OpenGL. Рассматриваем функционал OpenGL и работу с 3D-графикой в C++, а в конце создаем крутую графическую игру «Breakout».
Как видите, есть куда копать. На уроках, перечисленных выше, рассматриваются конкретные фреймворки и библиотеки, а также создаются полноценные проекты/игры. Изучив эти уроки и повторив всё, что на них рассматривается, вы получите не только теорию со знаниями, но и практический опыт с проектами в портфолио.
Примечание: Вы можете приобрести .pdf-версию уроков по С++ здесь.
Спасибо, что остаетесь с Ravesli!
Спасибо огромное! Вашу помощь мне, да и многим остальным пользователям сложно переоценить.
Пожалуйста))
Огромное спасибо за уроки!
Пожалуйста)
Спасибо за прекрасный материал!
Пожалуйста)
1 месяц, ухх.. Не так уж и сложно, особенно когда уже знаешь С..
Насколько сильно знаешь С? , Где учил?
Огромное спасибо за труд, Юрий! Материал хорошо представлен! Долго не мог найти уроки, которые мне подойдут, потому что во многих было много воды)
Пожалуйста))
Огромное спасибо за титанический труд и его великолепный результат! Материал просто замечательный, многие темы, ранее изученные по другим источникам, только благодаря вашему учебнику стали понятны. Юрий, Дмитрий, здоровья вам и удачи!
Пожалуйста)) Очень круто, что Равесли оказался Вам полезным))
Огромное спасибо!
Почитал Ravesli и подтянул знание языка! В результате успешно устроился на новую работу!
Это лучший курс по С++, который я встречал в интернете. Юрий, огромное вам спасибо.
Пожалуйста))
2 июня 20 года, в 2 часа ночи я установил vs, теперь, спустя 6 с копейками месяцев, 5 декабря этого же года, в 4 часа вечера, я закончил это дело. Не скажу, что было легко осваивать плюсы, не скажу, что было сложно с вашими уроками, но я рад, что хотя бы полгода своей жизни я не потратил впустую. Спасибо
Полгода на эти уроки — очень неплохо. Рад, что Равесли оказался для вас полезным))
Честно говоря, начиная этот курс, я бы и поверить не мог, что когда-нибудь доберусь до сюда. Я много раз начинал учиться программированию, но бросал из-за лени, из-за сложности, из-за незнания английского. Но вот я здесь, прошедший через 2 сотни увлекательных уроков, пересиливший себя и свою лень. И все это благодаря вам, Юрий, огромное вам спасибо.
Пожалуйста))
Вот я и добрался до этой страницы! Парни, вы красавчики в кубе, просто огромное вам спасибо за ваш героический труд и роскошный материал, несколько месяцев изучения СРР пролетели как один день. Первый шаг сделан, двигаюсь дальше!
Пожалуйста 🙂
Такие необычные ощущения…
Я очень рад что я прочитал курс. Для меня это было удовольствием. Распирает от счастья :3
Я начал читать эти уроки 24 мая и закончил 25 августа и за это время я очень сильно полюбил программирование, у меня появилась привычка учится новому и самое главное — получил невероятный опыт.
Большое спасибо за этот прекрасный перевод, Юрий! Невероятный труд. Он очень повлиял на меня.
Большое спасибо Дмитрию за перевод уроков по OpenGL. Мой первый опыт работы с библиотеками я получил именно оттуда и благодаря этому я научился пользоваться компилятором.
Я очень рад тому что моим первым учебником стал Ravesli.
Спасибо!
Пожалуйста, главное — не останавливайтесь 😉
Громадное спасибо за титанический труд!
Пожалуйста 🙂
Press F to pay respects. На освоение материала ушло около месяца, провел карантин с пользой, спасибо!
Месяц — неплохо. Пожалуйста))
Юрий, огромное спасибо вам. Да. Но не только вам. Ещё спасибо Дмитрию Бушуеву. Он тоже начал делать много полезного и нового для проекта. Уроки по OpenGL чтобы никто из вас не бросал! Бросит один — чтобы второй продолжал(если я буду знать OpenGL то чем то хелпану если смогу мб)! Потому что серьёзно, вы с Димоном — красавчики, что поддерживаете существование этого сайта и его нормальное содержание. Да есть ещё по мимо основного C++ раздела несколько — SFML, OpenGL, Assembler, Qt5, и ещё про регулярные выражения. Но крупные только два: C++ и OpenGL(последний на данный момент не очень большой, но я надеюсь он будет расти в объеме). И это и так много и некоторым разделам по — моему больше не надо(к примеру — SFML. Там на сайте всё написано. Просто переводить всё что там написано и кидать статью сюда — немного бес смыслено. Включил переводчик — всё. Но, что касательно SFML у вас — вполне хватает, чтобы сказать читателю — "Вот графика. Вот сайт. Вот она может что — то. На юзайте. Зашли на оф. сайт и прочитали."). Я сам тоже пока не senior крестов(C++) и я тоже всё в инете ищу (+ ещё немножечко книг читаю по кодингу(крестам) и гейм дизайну), но когда я смогу помочь (там помочь с чем — нибудь разобраться или ещё с чем то хелпануть — я обязательно хелпану.). И ещё хотелось бы сказать, что РуНету такие как вы (MUST HAVE) очень нужны! Удачи пацаны! Мы всегда с вами! 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂 🙂
Спасибо, очень приятно!))
Спасибо 🙂
Поделюсь. На усвоение базового курса ушло 3 месяца и 330 часов (по 3 часа в день). Информация подана отлично и в базовых концепциях я теперь разбираюсь. Спасибо Юрию за перевод. Ничего более путного и сжатого в рунете нет по сабжу.
Юрий, спасибо!
Спасибо за то, что довели начатое до конца, а не бросили на пол-пути.
Пожалуйста 😉 Главное, чтобы теперь и остальные не бросали своё изучение программирование на этом.
То чувство, когда ты, наконец-то, дошел до конца… А это только начало.
Фантастика! Ощущение праздника, хочется даже отметить завершение курса))
Это шикарный материал, профессиональная подача, бесподобное оформление, Юрий, да это просто титанический труд, выполненный от души. Спасибо, спасибо и еще раз спасибо!
В первую очередь за то, что выбрали именно этот туториал. Впервые столкнулась, что тут НЕТ такого: чтобы понять тему, необходимо изучить 2 других. Здесь действительно все разжёвано с нуля, просто невероятно последовательно и до малейших деталей.
Во-вторых, спасибо за Вашу стойкость. Кому-то не хватает терпения изучать готовое, а вы довели до конца. Юрий, Вы крутой!)
Ну и в-третьих, спасибо за Вашу аккуратность, грамотность, вкус. Это было красиво.
Не прощаюсь с сайтом, с удовольствием перейду к практической части. Это так здорово, что сайт не остановился на одном курсе, а расцвел новинками.
Ныряем глубже)
Спасибо, Алена, за столь развёрнутый отзыв, мне действительно приятно, что эти уроки не оставили Вас равнодушными и Вы смогли их пройти до конца. И это не конец, всё только начинается. Главное — не останавливайтесь на достигнутом, впереди ещё очень много всего интересного 😉
За сколько времени прошли все уроки на сайте?
3 месяца = 330 часов (по 3 часа в день)
Дошла до половины главы ООПов- полет отличный, значит, и остальное осилю.
До этого курса бралась за другие учебники — получалось как в меме "как рисовать сову".
И только данный учебник, считаю, очень дружественный к новичкам, имеет низкий порог вхождения. Он написан на таком доступном языке, что даже мне, женщине-гуманитарию, все понятно.
Единственный недостаток, считаю: циклы только в 5 главе, хотя это простой, но нужный инструмент.
Еще мало практических заданий, но этого добра полно в интернете на любой вкус.
В целом, спасибо автору книги и переводчику.
Спасибо, мне приятно 🙂
Спасибо за прекрасные уроки! Действительно, одно удовольствие по ним изучать/вспоминать язык C++. Надеюсь, проект и дальше будет развиваться! Больше уроков хороших и разных!
Продолжайте это благородное дело нести просвещение в массы!
И я надеюсь на его развитие. Спасибо за отзыв 🙂
Пол года…. пол года я по 5-9 часов в неделю проводил на этом сайте…. и теперь я понял,что ,собственно, имея даже такой громаднейший багаж знаний, моё изучение IT только-только начинается, сейчас в планах постичь SFML,потом Asio и Web, потом по ситуации,и по желанию…. (в будущем можешь написать по поводу помощи с различными уроками, буду рад помочь, чем смогу).
Вперёд, друг. Это только начало, всё самое интересное ещё впереди!
Спасибо за прекрасные уроки!
Кто-то может воскликнуть "Это всего-лишь перевод!", но тут не все так просто. Во первых чтобы перевести нужно самому понимать смысл того, что ты переводишь. Во вторых есть небольшие дополнения, которых нет в оригинале. Если бы не автор, то мы бы не увидели столь прекрасную адаптацию LearnCpp на русском.
Удачи в будущих начинаниях!!!
Привет, спасибо за отзыв 🙂
Действительно, эти уроки пригодились и мне самому по учёбе, поэтому старался переводить так, чтобы потом можно было без проблем перечитать и быстро всё вспомнить.
Спасибо за отличный курс, Юрий! Касательно уроков по c++ у меня есть пару предложений: взять код на >1000 строк с реального проекта и полностью разобрать его. Думаю будет очень полезно для укрепления всего пройденного и вообще для понимания с чем придется иметь дело. Также было бы неплохо сделать мини раздельчик по графическому интерфейсу. Например показать как сделать калькулятор хотя бы. Более того ваш проект отличается огромным объемом полезной информации и простотой изложения. Можно было бы делать и другие курсы: веб, мобильная разработка, разработка игр и тд. Конечно же, я понимаю, что в одиночку это организовать невозможно. Но думаю, что полно людей которые захотят помочь вашему проекту(сам вхожу в число таких). Вы просто опубликуйте какие курсы нужны проекту, а мы уже постараемся) Все вышеперечисленное никак не относится к указаниям из разряда "так будет лучше". Я лишь высказал свое мнение по дальнейшему продвижению проекта. Спасибо за внимание!
Пожалуйста 🙂
По поводу проекта и уроков по графике — хорошие идеи, сам над этим раньше задумывался, возможно, в ближайшем времени что-то попробую сделать (но ничего не обещаю). По поводу помощи — тоже хорошая идея, возможно, так и сделаю. Хотелось бы, чтобы у Равесли действительно было продолжение, а не всё так и закончилось на уроках по С++.
Можно начать переводить доку к библиотеке к Boost
Прочитала курс, было очень полезно!!! Не могли бы вы перевести||написать курс по программированию за пределами командной строки? Также было бы полезно про многопоточность что-нибудь.
Как будто вернулся из кругосветного путешествия, которое совершил с хорошим другом = ) Курс закончился, но история только начинается. Теперь нужно распорядиться полученным богатством знаний и преумножить его. Спасибо за великолепную базу!
Верно, всё только начинается.
Пожалуйста 🙂
Всем прив я быдло… я ещё даже не приступал к изучению С++ но смотря скока тут разделов по С++ просто офигеваю, однако хочу узнать научит ли этот изложенный материал нормально программировать и писать свои программы?
P.s. это перевод из другого англоязычного источника? Просто респект, если исходя из ответа я увижу что это руководство мне понадобится то моей благодарности будет граница в 250 км… жаль что вольный труд такой не благодарный… ну я бы и деньги не платил, студент хуле.
Юрий, большое спасибо Вам! Возможно Вы сделаете урок работе с БД?
В ближайшем времени точно нет.
Наконец-то я дошел до конца. Большое спасибо за перевод уроков, с ними действительно войти в айти с ЯП С++ намного легче!
Спасибо, это было увлекательно!)
"Программирование — не такое уж и простое занятие" — подумал я закончив читать курс по С++.))
Автор, огромное СПАСИБО за ваш труд! И я не прощаюсь — думаю, ещё не раз придётся некоторые темы перечитывать.
Я бы сказал: "Совсем не простое", но если есть желание и склонности — проблемы только разогревают аппетит.
Материал отлично структурирован и изложен, очень удобно и учить с нуля и пользоваться в "справочном режиме". У ребенка в школе началось программирование, и папе пришлось вспомнить хорошо забытые знания и навыки двадцатилетней давности. А заодно и вновь получить удовольствие от увлекательнейшего процесса программирования!
Юра, огромное вам спасибо за ваш труд , от одного бывшего и, возможно, одного будущего программистов! 🙂
Спасибо за отзыв, приятно. И за читателя ещё одного спасибо 🙂
Привет.Кто может объяснить как работать с dll и вызывать оттуда функции?Дело в том что я смотрел статью но у меня все равно ничего не выходит.То есть dll загружается но нужную функцию он не видит.Может я не настроил область видимости?В общем нужны рабочие примеры.
Спасибо за серию уроков!
Есть ли надежда увидеть уроки по графическому интерфейсу на С++?
Скорее всего, нет.
Спасибо за этот курс. Именно из-за него я начал изучать программирование, никак не мог понять с чего начать открыл книгу Страуструпа и офигел, а здесь все понятно. Огромное спасибо авторам и переводчику могу смело сказать что впервые зайдя на этот сайт я изменил свою дальнейшую жизнь.
Пожалуйста 🙂
Ну, блин спасибо тебе огромное!!!
Ничего лучшего, подробного, развернутого и более продвинутого я не нашёл!
Самый лучший самоучитель плюсов!
Спасибо огромное!
Просто нету слов!
Твой сайт должен и дальше развиваться (продолжение по направлениям: приложения например), ведь больше таких нету: все пишут (бывает устаревший) до середины и всё.
Спасибо что тратишь своё время на нас, чтобы мы не тратили наше время.
The best!
Thank you very much!
Очень надеюсь, что и этот курс не станет устаревшим лет так через 5 🙂
Тоже хочется написать спасибо! Просто огромное спасибо! Очень понятные и адекватные уроки, с отличными заданиями для тестирования своего понимания. Надеюсь, они никуда не исчезнут с сайта, так как мне ещё читать и читать 🙂
Удачи Вам! Надеюсь, что будет ещё много интересного в будущем 🙂
И я надеюсь, что они тоже никуда не исчезнут 🙂
Спасибо, что читаете.
Спасибо за твои переводы. Знай, что ты не зря этим занимался. Как минимум, теперь будет намного больше русских писателей на c++)
Главное, чтобы на этом этапе у многих не закончилось изучение программирования. Чтобы читатели дальше продолжали развиваться в выбранных направлениях.
Ну, отлично! Жду готовый вариант в едином pdf файле.
Вот и все. Конец. Даже не верится что я закончил весь этот путь. Огромнейшее вам спасибо, вы изменили мою жизнь. А есть возможность мне переводить серию уроков и публиковать её здесь?
Привет, сильные слова, если реально помог изменить жизнь — значит не зря занимался этим.
Да, конечно. Напишите мне в Telegram или в Вк.
Громаднейшее спасибо за перевод. Уверен, эти уроки помогут всем, кто учит С++
Искренне надеюсь на это)
Это невероятно! Именно благодаря тому, что ты проделал такой труд, переводя эти уроки, я полюбил программирование и, вследствие, решил изучать английский! Ты просто супер! Спасибо тебе!!! Удачи и успехов тебе!!!
Приятно, что смог замотивировать на действия. Спасибо и тебе 🙂
Юрий, спасибо большое за такой труд!на просторах интернета много материала по программированию, но все что мне попадалось предполагало уже какие то знания, поэтому начиная углубляться в тему- больше запутывалась. Для меня открытием стал Ваш ресурс. Все доступно, структурировано, изложено простым языком. И конечно Ваша работа в три года мотивирует не бросать начатое. Не побоюсь быть пафосной, но действительно это вклад в развитие it образования в нашей стране
P. S. В качестве предложения — что то подобное по английскому.
Я был бы несказанно рад, если бы это действительно внесло хотя бы минимальнейший вклад в развитие подачи материала в Рунете, не только касаемо программирования 🙂
Спасибо вам за отзыв!
Старина, я в телеге увидал рассылку на тему этого урока.
Таки это перевод)
Но все равно круто!!!
Чел, у тебя железная воля! 3(ТРИ) б**дь года!!! Да ты как Граф Монте Кристо, что готовил побег!!!
У тебя еще направления есть? Всмысле парралельно что-то еще в таком духе делаешь?
Ну и про книгу в двух(трех) вариантах, с разными ценниками, я уже писал)
Я и сам не до конца, наверное, понимаю, на что потратил 3 года 🙂
Ничего не делаю параллельно, только Ravesli. Сборник уроков будет, но уже в одном экземпляре: сразу все уроки + может ещё что-то интересное найду, чтобы добавить.
Юрий, какой огромный труд! Я Вас поздравляю с окончанием проекта и благодарю от всей души за это сокровище!! Благодарю, что не забросили где-нибудь на середине)) Вы проделали такую профессиональную работу, слов нет. Спасибо Вам огромное!!
И вам спасибо большое за отзыв и за всё то время, потраченное на Ravesli.