Граф, а не слайды: как устроен адаптивный урок в PyLingvo
В прошлом посте мы сказали, что PyLingvo не ведёт тебя по линейному сценарию «посмотрел → сделал → пошёл дальше». Сегодня покажем, что под капотом.
Урок — это граф, а не презентация
В традиционной платформе урок выглядит как последовательность слайдов: видео, текст, тест, видео, текст, тест. Ты идёшь по рельсам. Неважно, понял ты тему или нет — маршрут один для всех.
В PyLingvo каждый урок — это ориентированный граф. Представь карту, а не прямую дорогу:
-
Ноды — атомарные единицы контента: теория или практическое задание.
-
Рёбра — возможные переходы между нодами, которые активируются в зависимости от твоего результата.
Система не говорит «ты молодец, идём дальше». Она задаёт вопрос: «ты понял?» — и в зависимости от ответа прокладывает маршрут.
Два типа нод
| Тип | Что происходит | Есть ли проверка |
|---|---|---|
theory |
Читаешь объяснение, смотришь примеры, нажимаешь «Далее» | Нет — всегда переход вперёд |
practice |
Пишешь код, запускаешь тесты | Да — решено / провалено / пропущено |
theory-ноды — это «вдох». practice-ноды — «выдох». Именно в практике система понимает, где ты на самом деле находишься.
Четыре типа переходов после практики
Когда ты отправляешь код, срабатывает проверка: AST-анализ структуры + запуск тестов в sandbox. Дальше — четыре сценария:
1. next — линейный прогресс
Ты решил задание правильно. Система ведёт тебя к следующей теме. Это happy path.
2. review — вернуться к теории
Ты ошибся. Система определяет тип ошибки и возвращает тебя к theory-ноде, которая объясняет именно этот концепт. Не всю тему целиком — а точечный пробел.
3. alt — альтернативное объяснение
Ты ошибся снова. Возможно, формулировка задачи или объяснения тебе не подходит. Система предлагает другую theory-ноду — с иным подходом к тому же концепту.
4. branch — упрощённая ветка
Ты продолжаешь ошибаться. Система понимает: текущий уровень сложности пока не по зубам — и переводит тебя на упрощённую версию задания. Ты не провалился. Ты пошёл по другому пути.
Защита от зависания
Мы проектировали систему с важным ограничением: ты не можешь застрять бесконечно.
Если ты исчерпал все попытки, платформа показывает эталонное решение с комментариями, фиксирует пропуск в телеметрии и переводит тебя дальше. Это не «ты сдался». Это управляемый выход, который позволяет не бросить курс из-за одного сложного задания.
Автор курса обязан спроектировать цепочку деградации для каждой практической ноды: сложное задание → упрощённое → демонстрация решения. Без этого курс не публикуется.
Адаптивность — это одна функция
Вся логика принятия решений сосредоточена в одном месте:
отправил код → проверка → результат → выбрать следующую ноду
Это не размазанная по платформе магия, а одна функция get_next_node(). Сегодня она работает на правилах и SQL. Завтра к ней можно подключить scoring по тегам и навыкам. Послезавтра — ML-модель, обученную на реальных данных. Интерфейс не изменится.
Что это значит для тебя
-
Ты не теряешь время. Система не гоняет тебя по кругу «сделай ещё раз то же самое».
-
Ты получаешь точечную помощь. Не «повтори тему», а «вот конкретно этот концепт ты не освоил — давай разберём».
-
Ты видишь свой рост. Журнал попыток показывает историю: где ошибался, где справился, с какой попытки.
В следующем посте — обзор первых треков, с которых можно начать прямо сейчас.