Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
82 changes: 82 additions & 0 deletions cpp/cpp_chapter_0010/text.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
# Глава 1. О курсе

Представьте, что C++ – это магический артефакт, могущественный и древний. Он позволяет творить грандиозные вещи. Грандиозные и иногда – ужасные.

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

## Цель курса

Наш курс поможет вам изучить **современный C++ с нуля.**

Наша **цель** – чтобы по завершению курса вы могли:
- Решать задачи из реальной жизни на современном C++.
- Разбираться в чужом коде: находить баги, рефакторить, участвовать в код-ревью.
- Проходить собеседования.
- Владеть инструментами для отладки, профилирования, поиска утечек памяти.

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

## Наш подход к обучению

Курс называется «C++ по спирали». Это означает, что по мере прохождения курса мы будем неоднократно возвращаться к одним и тем же темам и разбирать их на более глубоком уровне. Как будто разматывая витки спирали знаний о языке.

Такой подход позволит максимально быстро приступить к решению практических задач на C++.

Кроме того, наш курс ориентирован на практику. В каждой главе вас ждут задачи и домашние задания. Раз в несколько глав предстоит делать проект.

## Для кого этот курс

Наш курс предназначен **для программистов,** от студентов до опытных синьоров.

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

## Для кого этот курс не подходит

Наш курс **точно** не пойдет на пользу, если вы:
- Уже умеете готовить C++ и хотите глубоко погрузиться в один из его аспектов. Например, в конкурентность или метапрограммирование.
- Ожидаете какого-то специфичного C++. В этом курсе нет низкоуровневневых трюков для embedded и ассемблерных вставок.
- Ищете курс, который бы за ручку провел по настройке IDE и окружения.
- Пытаетесь выучить C++ как свой первый язык программирования.

## Как проходить курс

Мы придерживаемся правила: просто читать про язык – тратить время. Учить язык значит **писать код.** Поэтому залог успеха при прохождении курса – выполнение всех задач и проектов. Даже если вы «точно знаете, как это решать».

После того, как вы решили задачу, вы можете **сравнить свое решение с нашим.** Оно доступно по кнопке подсказки.

Многие примеры кода из глав в один клик открываются в **плэйграунде.** Пользуйтесь этим: почаще экспериментируйте с кодом!

И помните: только за счет практики ваши теоретические знания успешно улягутся в _долговременную_ память.

## Ответы на частые вопросы

### Нужно ли начинать изучение C++ с Си?

Нет. И в следующей главе вы поймете, почему.

### Нужно ли знать ассемблер?

Нет. Уметь изготавливать печатные платы тоже.

### Что делать, если не получается решить задачу или выполнить проект?

Как мы уже сказали, самостоятельная практика – ключ к освоению C++. Если с какой-то задачей возникли трудности, не отчаивайтесь. Это нормально. Продолжайте пытаться!

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

Если после всех этих шагов все равно остались вопросы, не стесняйтесь [задавать их.](https://t.me/senjun_feedback)

### Куда сообщать об ошибках?

На сайте в конце каждой главы есть форма фидбэка. Если вы проходите этот курс через наш [телеграм-бот,](https://t.me/sen_jun_bot) то воспользуйтесь командой `/help`.

Заводите Issue или пул-реквесты [на гитхабе.](https://github.com/senjun-team/senjun-courses/tree/main)

И конечно же, добро пожаловать в нашу [телеграм-группу!](https://t.me/senjun_feedback)