Конец? Что дальше?

  Юрий  | 

  Обновл. 1 Окт 2019  | 

 15541

 ǀ   47 

Примите мои поздравления! Вы прошли полностью этот туториал по С++! Вы красавчики!

Вы получили необходимую базу/фундамент в программировании и, в частности, в С++. Теперь вы уже должны решить самостоятельно, в чём вы хотите развиваться дальше. Направлений есть много, мы рассмотрим основные из них.

Структуры данных и алгоритмы

Структуры данных — это набор данных и методов для доступа и манипулирования этими данными. Наиболее распространённой структурой данных, используемой в программировании, является массив, который содержит ряд последовательных элементов одного типа. Вы можете манипулировать этими данными, используя индексацию массива для получения прямого доступа к элементам массива (и их последующего изменения). Мы уже ранее рассматривали стек, как структуру данных, а также методы 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+ уроков, десятки тысяч слов, сотни тысяч символов. Первый урок датируется 2 апрелем 2016 года, последний — 17 февраля 2019 года. Почти 3 года у меня ушло на перевод этих уроков. Отдельное спасибо автору LearnCpp.com — это его уроки, а не мои (если кто не знал). Я выполнил лишь адаптированный перевод.

Теперь для вас есть следующее продолжение:

   Задания по С++ — упражнения с разными уровнями сложности для выполнения. Здесь вы можете хорошенько попрактиковаться, начиная с первой части.

   Создание игры на С++ с помощью библиотеки MFC. Начинаем с первого урока и продолжаем создавать с нуля игрушку «Same Game».

   Уроки по графической библиотеке SFML. Разбираемся с тонкостями работы с графикой в С++, начиная с вступления и установки.

   Уроки по Qt5. Рассматриваем кроссплатформенный фреймворк Qt, его функционал и возможности, начиная с установки.

Всё бесплатно. Спасибо, что читаете!

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (149 оценок, среднее: 4,95 из 5)
Загрузка...

Комментариев: 47

  1. Аватар zashiki:

    Дошла до половины главы ООПов- полет отличный, значит, и остальное осилю.

    До этого курса бралась за другие учебники — получалось как в меме "как рисовать сову".

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

    Единственный недостаток, считаю: циклы только в 5 главе, хотя это простой, но нужный инструмент.

    Еще мало практических заданий, но этого добра полно в интернете на любой вкус.

    В целом, спасибо автору книги и переводчику.

    1. Юрий Юрий:

      Спасибо, мне приятно 🙂

  2. Аватар Яков:

    Спасибо за прекрасные уроки! Действительно, одно удовольствие по ним изучать/вспоминать язык C++. Надеюсь, проект и дальше будет развиваться! Больше уроков хороших и разных!

    Продолжайте это благородное дело нести просвещение в массы!

    1. Юрий Юрий:

      И я надеюсь на его развитие. Спасибо за отзыв 🙂

  3. Аватар Илья:

    Пол года…. пол года я по 5-9 часов в неделю проводил на этом сайте…. и теперь я понял,что ,собственно, имея даже такой громаднейший багаж знаний, моё изучение IT только-только начинается, сейчас в планах постичь SFML,потом Asio и Web, потом по ситуации,и по желанию…. (в будущем можешь написать по поводу помощи с различными уроками, буду рад помочь, чем смогу).

    1. Юрий Юрий:

      Вперёд, друг. Это только начало, всё самое интересное ещё впереди!

  4. Аватар Сергей:

    Спасибо за прекрасные уроки!
    Кто-то может воскликнуть "Это всего-лишь перевод!", но тут не все так просто. Во первых чтобы перевести нужно самому понимать смысл того, что ты переводишь. Во вторых есть небольшие дополнения, которых нет в оригинале. Если бы не автор, то мы бы не увидели столь прекрасную адаптацию LearnCpp на русском.
    Удачи в будущих начинаниях!!!

    1. Юрий Юрий:

      Привет, спасибо за отзыв 🙂

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

  5. Аватар 80 лвл:

    Спасибо за отличный курс, Юрий! Касательно уроков по c++ у меня есть пару предложений: взять код на >1000 строк с реального проекта и полностью разобрать его. Думаю будет очень полезно для укрепления всего пройденного и вообще для понимания с чем придется иметь дело. Также было бы неплохо сделать мини раздельчик по графическому интерфейсу. Например показать как сделать калькулятор хотя бы. Более того ваш проект отличается огромным объемом полезной информации и простотой изложения. Можно было бы делать и другие курсы: веб, мобильная разработка, разработка игр и тд. Конечно же, я понимаю, что в одиночку это организовать невозможно. Но думаю, что полно людей которые захотят помочь вашему проекту(сам вхожу в число таких). Вы просто опубликуйте какие курсы нужны проекту, а мы уже постараемся) Все вышеперечисленное никак не относится к указаниям из разряда "так будет лучше". Я лишь высказал свое мнение по дальнейшему продвижению проекта. Спасибо за внимание!

    1. Юрий Юрий:

      Пожалуйста 🙂

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

  6. Аватар Sergey:

    Можно начать переводить доку к библиотеке к Boost

  7. Аватар GoogleTan:

    Прочитала курс, было очень полезно!!! Не могли бы вы перевести||написать курс по программированию за пределами командной строки? Также было бы полезно про многопоточность что-нибудь.

  8. Аватар Алекс:

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

    1. Юрий Юрий:

      Верно, всё только начинается.

      Пожалуйста 🙂

  9. Аватар >>>Timeshift>>>:

    Всем прив я быдло… я ещё даже не приступал к изучению С++ но смотря скока тут разделов по С++ просто офигеваю, однако хочу узнать научит ли этот изложенный материал нормально программировать и писать свои программы?

    P.s. это перевод из другого англоязычного источника? Просто респект, если исходя из ответа я увижу что это руководство мне понадобится то моей благодарности будет граница в 250 км… жаль что вольный труд такой не благодарный… ну я бы и деньги не платил, студент хуле.

  10. Аватар Артем:

    Юрий, большое спасибо Вам! Возможно Вы сделаете урок работе с БД?

    1. Юрий Юрий:

      В ближайшем времени точно нет.

  11. Аватар korvell:

    Наконец-то я дошел до конца. Большое спасибо за перевод уроков, с ними действительно войти в айти с ЯП С++ намного легче!

  12. Аватар Женя:

    Спасибо, это было увлекательно!)

  13. Аватар Shom:

    "Программирование — не такое уж и простое занятие" — подумал я закончив читать курс по С++.))
    Автор, огромное СПАСИБО за ваш труд! И я не прощаюсь — думаю, ещё не раз придётся некоторые темы перечитывать.

    1. Юрий Юрий:

      Я бы сказал: "Совсем не простое", но если есть желание и склонности — проблемы только разогревают аппетит.

  14. Аватар Сергей:

    Материал отлично структурирован и изложен, очень удобно и учить с нуля и пользоваться в "справочном режиме". У ребенка в школе началось программирование, и папе пришлось вспомнить хорошо забытые знания и навыки двадцатилетней давности. А заодно и вновь получить удовольствие от увлекательнейшего процесса программирования!
    Юра, огромное вам спасибо за ваш труд , от одного бывшего и, возможно, одного будущего программистов! 🙂

    1. Юрий Юрий:

      Спасибо за отзыв, приятно. И за читателя ещё одного спасибо 🙂

  15. Аватар psydiot:

    Привет.Кто может объяснить как работать с dll и вызывать оттуда функции?Дело в том что я смотрел статью но у меня все равно ничего не выходит.То есть dll загружается но нужную функцию он не видит.Может я не настроил область видимости?В общем нужны рабочие примеры.

  16. Аватар Михаил:

    Спасибо за серию уроков!
    Есть ли надежда увидеть уроки по графическому интерфейсу на С++?

    1. Юрий Юрий:

      Скорее всего, нет.

  17. Аватар Artem:

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

    1. Юрий Юрий:

      Пожалуйста 🙂

  18. Аватар Глеб:

    Ну, блин спасибо тебе огромное!!!
    Ничего лучшего, подробного, развернутого и более продвинутого я не нашёл!
    Самый лучший самоучитель плюсов!
    Спасибо огромное!
    Просто нету слов!
    Твой сайт должен и дальше развиваться (продолжение по направлениям: приложения например), ведь больше таких нету: все пишут (бывает устаревший) до середины и всё.
    Спасибо что тратишь своё время на нас, чтобы мы не тратили наше время.
    The best!
    Thank you very much!

    1. Юрий Юрий:

      Очень надеюсь, что и этот курс не станет устаревшим лет так через 5 🙂

  19. Аватар Карина:

    Тоже хочется написать спасибо! Просто огромное спасибо! Очень понятные и адекватные уроки, с отличными заданиями для тестирования своего понимания. Надеюсь, они никуда не исчезнут с сайта, так как мне ещё читать и читать 🙂
    Удачи Вам! Надеюсь, что будет ещё много интересного в будущем 🙂

    1. Юрий Юрий:

      И я надеюсь, что они тоже никуда не исчезнут 🙂

      Спасибо, что читаете.

  20. Аватар Иван:

    Спасибо за твои переводы. Знай, что ты не зря этим занимался. Как минимум, теперь будет намного больше русских писателей на c++)

    1. Юрий Юрий:

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

  21. Аватар Artem:

    Ну, отлично! Жду готовый вариант в едином pdf файле.

  22. Евгений Евгений:

    Вот и все. Конец. Даже не верится что я закончил весь этот путь. Огромнейшее вам спасибо, вы изменили мою жизнь. А есть возможность мне переводить серию уроков и публиковать её здесь?

    1. Юрий Юрий:

      Привет, сильные слова, если реально помог изменить жизнь — значит не зря занимался этим.

      Да, конечно. Напишите мне в Telegram или в Вк.

  23. Аватар korvell:

    Громаднейшее спасибо за перевод. Уверен, эти уроки помогут всем, кто учит С++

    1. Юрий Юрий:

      Искренне надеюсь на это)

  24. Аватар Андрей:

    Это невероятно! Именно благодаря тому, что ты проделал такой труд, переводя эти уроки, я полюбил программирование и, вследствие, решил изучать английский! Ты просто супер! Спасибо тебе!!! Удачи и успехов тебе!!!

    1. Юрий Юрий:

      Приятно, что смог замотивировать на действия. Спасибо и тебе 🙂

  25. Аватар Евгения:

    Юрий, спасибо большое за такой труд!на просторах интернета много материала по программированию, но все что мне попадалось предполагало уже какие то знания, поэтому начиная углубляться в тему- больше запутывалась. Для меня открытием стал Ваш ресурс. Все доступно, структурировано, изложено простым языком. И конечно Ваша работа в три года мотивирует не бросать начатое. Не побоюсь быть пафосной, но действительно это вклад в развитие it образования в нашей стране
    P. S. В качестве предложения — что то подобное по английскому.

    1. Юрий Юрий:

      Я был бы несказанно рад, если бы это действительно внесло хотя бы минимальнейший вклад в развитие подачи материала в Рунете, не только касаемо программирования 🙂

      Спасибо вам за отзыв!

  26. Аватар Alex:

    Старина, я в телеге увидал рассылку на тему этого урока.
    Таки это перевод)
    Но все равно круто!!!
    Чел, у тебя железная воля! 3(ТРИ) б**дь года!!! Да ты как Граф Монте Кристо, что готовил побег!!!
    У тебя еще направления есть? Всмысле парралельно что-то еще в таком духе делаешь?
    Ну и про книгу в двух(трех) вариантах, с разными ценниками, я уже писал)

    1. Юрий Юрий:

      Я и сам не до конца, наверное, понимаю, на что потратил 3 года 🙂

      Ничего не делаю параллельно, только Ravesli. Сборник уроков будет, но уже в одном экземпляре: сразу все уроки + может ещё что-то интересное найду, чтобы добавить.

  27. Аватар Алена:

    Юрий, какой огромный труд! Я Вас поздравляю с окончанием проекта и благодарю от всей души за это сокровище!! Благодарю, что не забросили где-нибудь на середине)) Вы проделали такую профессиональную работу, слов нет. Спасибо Вам огромное!!

    1. Юрий Юрий:

      И вам спасибо большое за отзыв и за всё то время, потраченное на Ravesli.

Добавить комментарий для Женя Отменить ответ

Ваш E-mail не будет опубликован. Обязательные поля помечены *

telegram канал
НОВОСТИ RAVESLI