Files
hello-algo/ru/docs/chapter_preface/suggestions.md
Yudong Jin 22b3b568ef fix Ru translation (#1894)
* docs(ru): replace prose quotes with guillemets

* docs(ru): replace prose semicolons with periods

* docs(ru): align animation title forms

* docs(ru): align figure and table references
2026-04-14 18:10:12 +08:00

16 KiB
Raw Blame History

Как пользоваться этой книгой

!!! tip

Для получения наилучшего опыта чтения рекомендуется полностью прочитать этот раздел.

Соглашения о стиле изложения

  • Главы, помеченные * в заголовке, являются дополнительными и содержат более сложный материал. Если времени мало, их можно пропустить.
  • Профессиональные термины выделяются полужирным шрифтом в печатной и PDF-версии или подчеркиванием в веб-версии, например массив (array). Рекомендуется запоминать их для удобства чтения литературы.
  • Важные моменты и обобщающие фразы будут выделяться полужирным шрифтом, и на такие тексты следует обращать особое внимание.
  • Слова и выражения со специальным смыслом будут отмечаться «кавычками», чтобы избежать неоднозначности.
  • Когда термины различаются между языками программирования, в качестве стандарта используется Python. Например, None применяется для обозначения «пустого» значения.
  • В некоторых местах книга отходит от стандартов комментирования программного кода ради более компактного оформления. Комментарии в основном делятся на три типа: заголовочные, содержательные и многострочные.

=== "Python"

```python title=""
"""Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п."""

# Содержательный комментарий: подробно поясняет код

"""
Многострочный
комментарий
"""
```

=== "C++"

```cpp title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Java"

```java title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "C#"

```csharp title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Go"

```go title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Swift"

```swift title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "JS"

```javascript title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "TS"

```typescript title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Dart"

```dart title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Rust"

```rust title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

// Многострочный
// комментарий
```

=== "C"

```c title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Kotlin"

```kotlin title=""
/* Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. */

// Содержательный комментарий: подробно поясняет код

/**
 * Многострочный
 * комментарий
 */
```

=== "Ruby"

```ruby title=""
### Комментарий-заголовок: используется для обозначения функций, классов, тестовых примеров и т. п. ###

# Содержательный комментарий: подробно поясняет код

# Многострочный
# комментарий
```

Эффективное обучение с помощью анимированных иллюстраций

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

Если во время чтения вы встречаете фрагмент с анимированной иллюстрацией, как на рисунке ниже, используйте иллюстрацию в качестве основного источника информации, а текст - в качестве вспомогательного, объединяя оба источника для понимания материала.

Пример анимированной иллюстрации

Углубление понимания через практику кода

Сопроводительный код этой книги размещен в репозитории GitHub. Как показано на рисунке ниже, исходный код содержит тестовые примеры и может быть запущен одним нажатием кнопки.

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

Процесс написания кода приносит больше пользы, чем его чтение. Настоящее обучение - это обучение на практике.

Пример запуска кода

Подготовка к запуску кода в основном состоит из трех этапов.

Шаг 1: установка локальной среды программирования. Воспользуйтесь руководством из приложения. Если среда уже установлена, этот шаг можно пропустить.

Шаг 2: клонирование или загрузка репозитория кода. Перейдите в репозиторий GitHub. Если у вас уже установлен Git, репозиторий можно клонировать следующей командой:

git clone https://github.com/krahets/hello-algo.git

Также можно нажать кнопку «Download ZIP» в месте, показанном на рисунке ниже, напрямую скачать архив с кодом и затем распаковать его локально.

Клонирование репозитория и загрузка кода

Шаг 3: запуск исходного кода. Как показано на рисунке ниже, для блоков кода, у которых сверху указано имя файла, соответствующий исходный файл можно найти в папке codes репозитория. Исходные файлы запускаются одним нажатием, что помогает не тратить лишнее время на отладку и сосредоточиться на изучении материала.

Блоки кода и соответствующие исходные файлы

Помимо локального запуска, веб-версия также поддерживает визуальное выполнение Python-кода (на базе pythontutor). Как показано на рисунке ниже, можно нажать «Визуализировать выполнение» под блоком кода, чтобы раскрыть окно и наблюдать за выполнением алгоритма. Также можно нажать «Полноэкранный режим» для более удобного просмотра.

Визуальный запуск Python-кода

Совместный рост через вопросы и обсуждения

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

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

Пример раздела комментариев

Дорожная карта изучения алгоритмов

В целом процесс изучения структур данных и алгоритмов можно разделить на три этапа.

  1. Этап 1: введение в алгоритмы. Необходимо познакомиться с особенностями и применением различных структур данных, изучить принципы, процессы, назначение и эффективность различных алгоритмов.
  2. Этап 2: решение алгоритмических задач. Рекомендуется начинать с популярных задач и решить не менее 100 из них, чтобы познакомиться с основными алгоритмическими проблемами. При первых попытках «забывание знаний» может стать испытанием, но это нормально. Следуйте при повторении задач «кривой забывания Эббингауза», и обычно после 3-5 циклов повторения материал хорошо запоминается. Рекомендуемые списки задач и планы практики см. в этом репозитории GitHub.
  3. Этап 3: построение системы знаний. В процессе обучения можно читать статьи по алгоритмам, изучать каркасы решений и учебники, чтобы постоянно обогащать свою систему знаний. В решении задач можно применять продвинутые стратегии, например классификацию по темам, несколько решений одной задачи или одно решение для нескольких задач. Соответствующий опыт можно найти в различных сообществах.

Как показано на рисунке ниже, содержание этой книги в основном охватывает «этап 1» и призвано помочь вам более эффективно перейти к обучению на этапах 2 и 3.

Дорожная карта изучения алгоритмов