eFusion 01 октября 2019
C++
0
44162

Видеокурс по углубленному программированию на C/C++

Цель курса – ознакомление с инструментами, которые используются в современной разработке, получение навыков написания корректного и гибкого кода на С++.

Введение

На вводной лекции автор предоставляет необходимую литературу для прочтения. Рекомендуется Философия С++ Брюса Эккеля. Хотя книга и “не свежая”, но дает новичку отличный уровень знаний. Для более опытных лектор советует Современный C++ Скотта Мейерса и Исключительный C++ Герба Саттера. После литературных рекомендаций ты перейдешь к теме занятия: “Как из исходного кода получается программа на C++?”. Ключевым моментом здесь является сборка, состоящая из препроцессинга, компилирования и компоновки: об этих вещах и пойдет разговор.

Память

На данном занятии ты познакомишься с памятью, с тем, как она устроена в компьютере, и какие виды памяти существуют в C++. Все начнется с рассмотрения архитектуры процессоров и участия ядер в работе. У каждого ядра есть свой кеш, используемый для загрузки какого-то количества информации, с которой можно манипулировать напрямую без “походов” в оперативную память. В конце ролика приводится обзор типов памяти (стек и куча), их области применения и тонкости в работе.

Функции

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

Структуры и классы

На лекции речь пойдет о классах и о том, что с ними связано. В качестве примера приводятся пользователи и их данные: имя, почта и т. д. Если программа маленькая, эти данные можно хранить в переменных, а если код растет, то логично использовать структуры для объединения однотипных данных. Обычно применяется создание типа, состоящего из набора других проинициализированных типов данных, которые не смешиваются в глобальном пространстве имен. Далее в уроке лектор рассказывает о работе со структурами и классами, модификаторами доступа, методами C++ и т. д.

Классы

Вторая лекция о классах начинается с повторения знаний о методах класса, конструкторах и деструкторах. Далее автор разбирает существующие виды приведения типов, служащих для избавления от предупреждений компилятора. Не остались без внимания и операторы сравнения, инкремента/декремента и арифметические операторы, используемые абсолютно в любой программе. В финальной части занятия тебя ждут виртуальные функции, виртуальные деструкторы, абстрактные классы и прочая “ООП-щина”.

Семантика копирования, перемещения

Перед углублением в основную тему ролика автор расскажет о Argument-dependent name lookup (ADL) – правило, опираясь на которое, компилятор ищет функцию или оператор в текущем пространстве имен.

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

Шаблоны

Продолжение лекции о шаблонах. Сначала лектор расскажет об инстанцировании шаблонов, о передаче параметров при компиляции и т. д. Ты снова вернешься к правилам написания шаблона (ключевое слово + угловые скобки) и узнаешь, какие бывают типы инстанцирования. Неявное происходит во время вызова функции или объекта, а явное – через ключевое слово template. Автор затронет тему специализации шаблонов – одной из самых сложных и полезных для создания библиотек возможностей ЯП. В конце урока будет практическое задание по сериализации типов.

Исключения

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

Стандартная библиотека шаблонов

Данное видео посвящено стандартной библиотеке шаблонов. В С++ этот инструмент выглядит “бедно” в сравнении с Python или C#, но все же позволяет создавать мощные и лаконичные вещи. Из других языков СPP выделяется именно библиотекой шаблонов STL, состоящей из контейнеров (хранение значений), итераторов (доступ к значениям), алгоритмов (операции над данными), адаптеров и функциональных объектов.

Многопоточность

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

Финальное занятие

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

А еще на лекции ты узнаешь об асинхронности, потокобезопасности, преобразовании текста и ускорении сборки.

Как вам видеокурс? Знаете другой? Делитесь мыслями.

РУБРИКИ В СТАТЬЕ

МЕРОПРИЯТИЯ

CRMDAY в Краснодаре
27 февраля Краснодар Бесплатно
Конференция Career Today Минск
14 марта Минск Бесплатно
DS + Prod = One Love
05 марта Санкт-Петербург Бесплатно

Комментарии 0

ВАКАНСИИ

Unity C# Developer
Ростов-на-Дону, по итогам собеседования
DevOps Engineer
Казань, по итогам собеседования
Python developer
Москва, от 120000 RUB до 160000 RUB
Frontend разработчик (React)
от 100000 RUB до 160000 RUB

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ

BUG