Авторов образовательного контента в IT ценят за знания из их профессиональной сферы. Хорошему автору-эксперту нужен разнообразный опыт, широкий стек, глубокое понимание технологий.
При этом далеко не каждый эксперт может сходу написать свой курс. Нужны не только знания, но и умение делиться опытом. Именно над этим вопросом мы работаем в этом курсе: учимся интересно и понятно доносить свои мысли до новичков.
В этом уроке мы углубимся в редактуру и перейдем на новый уровень — с абзацев до предложений и слов. Здесь вы научитесь писать понятные тексты, чтобы читателю было удобно воспринимать новую информацию.
Распутывайте порядок действий
В технических текстах часто используют причастные и деепричастные обороты. Они указывают на действие и главного героя, но подают эту информацию в скрытой форме. Из-за этого студент может запутаться в порядке действий и неверно понять инструкцию.
Разберем каждый оборот подробнее.
Деепричастия
Они отвечают на вопрос «Что сделав?» или «Что делая?» и обозначают дополнительное действие. Посмотрите на этот пример:
Указав после имени функции круглые скобки, поместив в них параметры и отделив каждый из них запятой, можно вызвать функцию
Здесь всего один глагол, который указывает на одно действие — «вызвать функцию». Остальные действия скрыты в деепричастиях — «указав», «поместив» и «отделив». На самом деле в предложении упоминается четыре действия, но из-за деепричастий студент заметит только одно из них. Из-за этого он может неправильно понять порядок действий.
Чтобы студенту было проще проследить последовательность действий, избавимся от деепричастных оборотов и заменим их на глаголы:
Чтобы вызвать функцию, укажите после ее имени круглые скобки, поместите в них параметры и отделите их запятой
Причастия
Они похожи на прилагательные — отвечают на вопрос «Какой?». При этом они описывают действие и главного героя в скрытой форме. Например:
Параметры функции, не отделенные запятой, приведут к ошибке
Из этого предложения студент точно поймет, что в каких-то случаях «параметры функции приведут к ошибке». Ему будет сложно разобраться в деталях:
- Кто должен отделять параметры запятой?
- Это происходит автоматически или надо делать это вручную?
- А если отделить параметры, ошибка произойдет или нет?
Студент может запутаться, что нужно сделать, зачем и в каком порядке. Чтобы упростить мысль, причастный оборот переводим в глагол:
Если не отделить параметры функции запятой, то программа выдаст ошибку
Когда мы меняем деепричастные и причастные обороты на глаголы, последовательность действий становится очевиднее. Так студент точно поймет, в каком порядке ему нужно выполнять инструкцию, правильно сделает упражнение и лучше усвоит новые навыки.
Меняйте скрытое действие на открытое
В технических текстах часто встречаются отглагольные существительные — это слова, которые обозначают события, но на самом деле рассказывают о действиях. Такие формулировки прячут информацию от читателя, убирают динамику, мешают восприятию.
Рассмотрим такой пример:
Я выбежал на лестницу, но врезался в кого-то и упал, в итоге пролетел пару метров и сломал руку
Читателю легко представить, что происходило и в каком порядке. В этом предложении очень много глаголов, поэтому в нем чувствуется динамика. Обратите внимание, что в этом примере нет слов «быстро» или «стремительно» — но мы все равно чувствуем, что события происходили быстро и стремительно.
А теперь заменим все глаголы действия на отглагольные существительные:
Когда я был в процессе быстрого бега по лестнице, произошло столкновение с другим человеком, после которого последовало падение с высоты в пару метров и перелом руки
По этому предложению уже сложнее выстроить цепочку событий и прочувствовать динамику. Но есть еще один побочный эффект:
- В первом примере главный герой — активный участник событий, который действует и несет ответственность за свои действия
- Во втором примере главный герой — пассивный наблюдатель, который никак не влияет на события вокруг себя
Такой же эффект работает с техническими текстами и уроками. Посмотрим на примере:
Параметры — это информация, которая передается в функцию при вызове. На основе этой информации посредством функции происходят вычисления и выдача результата.
При создании переменной result интерпретатор получает указание на вызов функции len() и запись возвращенного результата.
Одно из постоянных свойств функции — это возврат результата своей работы. Запись len('Hello!') означает вызов функции с именем len() и передачу параметра 'Hello!'.
С первого взгляда не совсем понятно, что это отрывок из образовательного текста. Кажется, что здесь просто описан механизм работы функций. Все события и взаимосвязи описаны как факты — это похоже на документацию. Такой текст описывает, но не учит.
Поменяем в нем существительные на глаголы с активным действием:
Параметры — это информация, которую мы передаем в функцию во время вызова. На основе этой информации функция вычисляет и выдает результат.
Давайте создадим переменную result и укажем интерпретатору: «Вызови функцию len() и запиши результат, который вернется».
Функции всегда возвращают результат своей работы. Запись len('Hello!') означает, что мы вызвали функцию с именем len и передали параметр 'Hello!'.
Этот отрывок больше похож на урок: наставник и студент вместе создают переменную, дают команду и получают результат.
Читая такие формулировки, студент чувствует себя активным участником происходящего — это мотивирует. Особенно заметно этот эффект проявляется у новичков. Им приятно осознавать, что сегодня они раздают команды компьютеру и пишут рабочий код, хотя совсем недавно ничего не знали о программировании.
Показывайте главного героя
Эта проблема похожа на предыдущую — в технических текстах часто прячется не только действие, но участники событий.
Эту мысль часто объясняют на таком примере:
Уважаемые жители! С 1 января по 31 января в вашем доме будут отключены вода и электричество. Дополнительную информацию об отключении можно получить по телефону +7(900)-000-00-00. Ваши обращения рассматриваются в течение 20 рабочих дней.
В этом тексте есть манипуляция. Грамматика скрывает подлежащее — главного героя, который и вызвал все эти неудобства:
Попробуем заменить все канцелярские формулировки на глаголы действия:
Уважаемые жители! Мы решили отключить воду и электричество в вашем доме на весь январь. Если вам это не нравится, позвоните по телефону +7(900)-000-00-00 — мы ответим примерно через месяц.
Пример с глаголами стал звучать грубее и честнее — такое объявление точно получит больше возмущенных откликов.
Такие приемы встречаются и в образовательных текстах, пусть и не выглядят так критично. Здесь другая проблема — они скрывают от студента важную информацию:
Такие формулировки оставляют неясность. У студента может сложиться впечатление, что он не усвоил новые знания из урока.
Из этого он может сделать два неверных и неприятных вывода:
- «Автор сам ничего не знает, и такими формулировками скрыл свои пробелы в знаниях»
- «Для автора это слишком очевидно, поэтому он выбрал такие формулировки. Скорее всего, дело во мне. Мне никогда не освоить программирование, это слишком сложно»
Чтобы этих выводов избежать, лучше использовать активные глаголы и проговаривать все неочевидные подробности:
- Не забывайте применять эти правила работы с функциями со стандартными библиотеками
- Используйте эти правила работы с функциями в стандартных библиотеках. А в нестандартных это уже не требуется, потому что...
- Эти правила работы с функциями можно использовать в стандартных библиотеках. Это необязательно: без этих правил ваш код тоже будет работать, просто его читаемость будет хуже
Такими формулировками мы дадим студенту самую полную информацию и фундаментальные знания.
Выводы и практические советы
В этом уроке мы изучили некоторые аспекты редактуры, которые часто встречаются в технических и образовательных текстах в IT. Чтобы ваши тексты были понятнее и удобнее для студента, используйте эти приемы:
- Чаще используйте глаголы действия вместо отглагольных существительных. Таким образом вы нагляднее раскроете тему урока и поддержите мотивацию студента
- Чаще используйте глаголы вместо прилагательных и причастий. Так вы дадите студенту более ясную инструкцию, и он не запутается в последовательности действий
- Ищите в своих текстах предложения, в которых неочевиден главный герой. Реже используйте пассивный залог, а также модальные и возвратные глаголы. В таком случае даже новички поймут тему урока во всех деталях
<!DOCTYPE html>
<html class="h-100" data-bs-theme="light" data-mantine-color-scheme="light" lang="ru" prefix="og: https://ogp.me/ns#">
<head>
<meta content="width=device-width, initial-scale=1.0" name="viewport">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<link crossorigin="true" href="https://cdn.hexlet.io" rel="preconnect">
<link href="https://mc.yandex.ru" rel="preconnect">
<meta content="aa2vrdtq64dub8knuf83lwywit311w" name="facebook-domain-verification">
<link href="/favicon.ico" rel="icon" sizes="any">
<link href="/favicon.svg" rel="icon" type="image/svg+xml">
<link href="/apple-touch-icon.png" rel="apple-touch-icon">
<link href="/manifest.webmanifest" rel="manifest">
<script>
//<![CDATA[
window.gon={};gon.ym_counter="25559621";gon.is_bot=true;gon.applications={};gon.current_user={"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26 23:03:09 UTC","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false};gon.token="wYle7Ga0xo_V7cdEIjYtCCbLfWBCXPXqjT4JZd-m-fYuWJXblMpr72Ou49wuOd1_5sJQykprC0gw3pMxjaEemA";gon.locale="ru";gon.language="ru";gon.theme="light";gon.rails_env="production";gon.mobile=false;gon.google={"analytics_key":"UA-1360700-51","optimize_key":"GTM-5QDVFPF"};gon.captcha={"google_v3_site_key":"6LenGbgZAAAAAM7HbrDbn5JlizCSzPcS767c9vaY","yandex_site_key":"ysc1_Vyob5ZPPUdPBsu0ykt8bVFdzsfpoVjQChLGl2b4g19647a89","verification_failed":null};gon.social_signin=false;gon.typoreporter_google_form_id="1FAIpQLSeibfGq-KvWQ2Fyru-zkFFRVTLBuzXAHAoEyN1p49FtDmNoNA";
//]]>
</script>
<meta charset="utf-8">
<title>Ясные формулировки | Как писать классные тексты</title>
<meta name="description" content="Ясные формулировки / Как писать классные тексты: Учимся убирать из текста скрытые действия и запутанные мысли">
<link rel="canonical" href="https://ru.hexlet.io/courses/awesome-text/lessons/clean-and-concise/theory_unit">
<meta name="robots" content="noarchive">
<meta property="og:title" content="Ясные формулировки">
<meta property="og:title" content="Как писать классные тексты">
<meta property="og:description" content="Ясные формулировки / Как писать классные тексты: Учимся убирать из текста скрытые действия и запутанные мысли">
<meta property="og:url" content="https://ru.hexlet.io/courses/awesome-text/lessons/clean-and-concise/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="Xf1ny7-E0CWbP0olrriRNhmG65nFyCIBV1PKXyD4S42yLKz8Tfp9RS18br2it2FB2Y_GM83_3KPqs1ALcv-s4w" />
<script src="/vite/assets/inertia-DfXos102.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/preload-helper-BJ4cLWpC.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ahoy-DrlRQ-1D.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/analytics-cb8xch9l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Surface-DL2bpZA-.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/extends-C-EagtpE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/inheritsLoose-BBd-DCVI.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/objectWithoutPropertiesLoose-DRHXDhjp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/index.esm-DAqKOkZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Button-CGPUux8l.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/CloseButton-D1euiPao.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Group-BX48WcuU.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Loader-BQEY8g6v.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Modal-Cy3HByv7.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/OptionalPortal-1Hza5P2w.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Stack-CtjJzfw4.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Textarea-Ck64llAy.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/DirectionProvider-Dc9zdUke.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/events-DJQOhap0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-reduced-motion-D2owz4wa.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-disclosure-zKtK5W1r.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/use-hotkeys-Cnc_Rwkb.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/random-id-DOQyszCZ.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/exports-C_MrNx_T.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<link rel="stylesheet" href="/vite/assets/application-BqhCP46M.js" />
<script src="/vite/assets/application-Df9RExpe.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/autocomplete-VMNbxKGl.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/createPopper-C3aM9r1M.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/js.cookie-D1-O8zkX.js" as="script" crossorigin="anonymous"><link rel="stylesheet" href="/vite/assets/application-C8HjmMaq.css" media="screen" />
<script>
window.ym = function(){(ym.a=ym.a||[]).push(arguments)};
window.addEventListener('load', function() {
setTimeout(function() {
ym.l = 1*new Date();
ym(window.gon.ym_counter, "init", {
clickmap: true,
trackLinks: true,
accurateTrackBounce: true,
webvisor: true
});
// Загружаем скрипт
var k = document.createElement('script');
k.async = 1;
k.src = 'https://mc.yandex.ru/metrika/tag.js';
document.head.appendChild(k);
ym(window.gon.ym_counter, 'getClientID', function(clientID) {
window.ymClientId = clientID;
});
}, 1500);
});
</script>
<!-- Google Tag Manager - deferred -->
<script>
// dataLayer stub сразу — пуши работают до загрузки скрипта
window.dataLayer = window.dataLayer || [];
// Сам скрипт — отложенно после load
window.addEventListener('load', function() {
setTimeout(function() {
dataLayer.push({'gtm.start': new Date().getTime(), event: 'gtm.js'});
var j = document.createElement('script');
j.async = true;
j.src = 'https://www.googletagmanager.com/gtm.js?id=GTM-WK88TH';
document.head.appendChild(j);
}, 1500);
});
</script>
<!-- End Google Tag Manager -->
</head>
<body>
<noscript>
<div>
<img alt="" src="https://mc.yandex.ru/watch/25559621" style="position:absolute; left:-9999px;">
</div>
</noscript>
<header class="sticky-top bg-body">
<nav class="navbar navbar-expand-lg">
<div class="container-xxl">
<a class="navbar-brand" href="/"><img alt="Логотип Хекслета" height="24" src="https://ru.hexlet.io/vite/assets/logo_ru_light-BpiEA1LT.svg" width="96">
</a><button aria-controls="collapsable" aria-expanded="false" aria-label="Меню" class="navbar-toggler border-0 mb-0 mt-1" data-bs-target="#collapsable" data-bs-toggle="collapse">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="collapsable">
<ul class="navbar-nav mb-lg-0 mt-lg-1">
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
Все курсы
<span class="bi bi-chevron-down align-middle ms-1"></span>
</button>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item d-flex py-2" href="/courses"><div class="fw-bold me-auto">Все что есть</div>
<div class="text-muted">117</div>
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные категории</b>
</li>
<li>
<a class="dropdown-item py-2" href="/courses_devops">Курсы по DevOps
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_data_analytics">Курсы по аналитике данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_programming">Курсы по программированию
</a></li>
<li>
<a class="dropdown-item py-2" href="/courses_testing">Курсы по тестированию
</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li class="dropdown-item">
<b>Популярные курсы</b>
</li>
<li>
<a class="dropdown-item py-2" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/go">Go-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/java">Java-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/python">Python-разработчик
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/qa-auto-engineer-java">Автоматизатор тестирования на Java
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/data-analytics">Аналитик данных
</a></li>
<li>
<a class="dropdown-item py-2" href="/programs/frontend">Фронтенд-разработчик
</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<button aria-haspopup class="btn nav-link" data-bs-toggle="dropdown" type="button">
О Хекслете
<span class="bi bi-chevron-down align-middle"></span>
</button>
<ul class="dropdown-menu bg-body">
<li>
<a class="dropdown-item py-2" href="/pages/about">О нас
</a></li>
<li>
<a class="dropdown-item py-2" href="/blog">Блог
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/hse-research" role="button">Результаты (Исследование)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://career.hexlet.io" role="button">Хекслет Карьера
</span></li>
<li>
<a class="dropdown-item py-2" href="/testimonials">Отзывы студентов
</a></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://t.me/hexlet_help_bot" role="button">Поддержка (В ТГ)
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/referal-program/?promo_creative=priglasite-druzei&promo_name=referal-program&promo_position=promo_position&promo_start=010724&promo_type=link" role="button">Реферальная программа
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://special.hexlet.io/certificate" role="button">Подарочные сертификаты
</span></li>
<li>
<span class="dropdown-item py-2 external-link" data-href="https://hh.ru/employer/4307094" role="button">Вакансии
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://b2b.hexlet.io" data-target="_blank" role="button">Компаниям
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexly.ru/" data-target="_blank" role="button">Колледж
</span></li>
<li>
<span class="dropdown-item d-flex external-link" rel="noopener noreferrer nofollow" data-href="https://hexlyschool.ru/" data-target="_blank" role="button">Частная школа
</span></li>
</ul>
</li>
<li><a class="nav-link" href="/subscription/new">Подписка</a></li>
</ul>
<ul class="navbar-nav flex-lg-row align-items-lg-center gap-2 ms-auto">
<li>
<a class="nav-link" aria-label="Переключить тему" href="/theme/switch?new_theme=dark"><span aria-hidden="true" class="bi bi-moon"></span>
</a></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="/u/new" role="button"><span>Регистрация</span>
</span></li>
<li>
<span data-target="_self" class="nav-link external-link" data-href="https://ru.hexlet.io/session/new" role="button"><span>Вход</span>
</span></li>
</ul>
</div>
</div>
</nav>
</header>
<div class="x-container-xxxl">
</div>
<main class="mb-6 min-vh-100 h-100">
<div id="app" data-page="{"component":"web/courses/lessons/theory_unit","props":{"errors":{},"locale":"ru","language":"ru","httpsHost":"https://ru.hexlet.io","host":"ru.hexlet.io","colorScheme":"light","auth":{"user":{"id":null,"last_viewed_notification_id":null,"email":null,"state":null,"first_name":"","last_name":"","created_at":"2026-02-26T23:03:09.601Z","current_program":null,"current_team":null,"full_name":"","guest":true,"can_use_paid_features":false,"is_hexlet_employee":false,"sanitized_phone_number":"","can_subscribe":true,"can_renew_education":false}},"cloudflareTurnstileSiteKey":"0x4AAAAAAA15KmeFXzd2H0Xo","vkIdClientId":"51586979","yandexIdClientId":"88d071f1d3384eb4bd1deb37910235c7","formAuthToken":"QXIaISGc76kAj0AEfhJk-WCUvckpzetcWBINGNbfntKuo9EW0-JCybbMZJxyHZSOoJ2QYyH6Ff7l8pdMhNh5vA","topics":[{"id":82827,"title":"Что за бред!!??!!!!!","plain_title":"Что за бред!!??!!!!! ","creator":{"public_name":"Никита","id":568820,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":168480,"body":"Никита, у вас какой-то вопрос по этому уроку?","topic_id":82827}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Ясные формулировки","entity_url":null,"active":true}},{"id":81701,"title":"Samsung invented the first tablet in 1989","plain_title":"Samsung invented the first tablet in 1989 ","creator":{"public_name":"Nigora Babayeva","id":574405,"is_tutor":false},"comments":[{"creator":{"public_name":"Nigora Babayeva","id":574405,"is_tutor":false},"id":166775,"body":"это правда поставьте лайк","topic_id":81701},{"creator":{"public_name":"Nigora Babayeva","id":574405,"is_tutor":false},"id":166776,"body":"пожалуйста люди поставьте лайк пожалуйста","topic_id":81701},{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":166857,"body":"Подскажите, у вас возник какой-то вопрос по уроку?","topic_id":81701}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Ясные формулировки","entity_url":null,"active":true}},{"id":82045,"title":"> Параметры или аргументы — это информация, которая является результатом вызова. На основе этой информации посредством функции происходят вычисления и выдача результата.\n\n> Параметры или аргументы — это информация, которую функция получает при вызове. На основе этой информации функция вычисляет и выдает результат.\n\nВ \"неправильном\" и \"правильном\" примерах говорится о разных вещах. Почему в первом варианте параметры и аргументы - это результат вызова?","plain_title":"Параметры или аргументы — это информация, которая является результатом вызова. На основе этой информации посредством функции происходят вычисления и выдача результата. Параметры или аргументы — это информация, которую функция получает при вызове. На основе этой информации функция вычисляет и выдает результат. В \"неправильном\" и \"правильном\" примерах говорится о разных вещах. Почему в первом варианте параметры и аргументы - это результат вызова? ","creator":{"public_name":"Anton Zapevalov","id":577470,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":167500,"body":"Спасибо, поправили","topic_id":82045}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Ясные формулировки","entity_url":null,"active":true}}],"lesson":{"exercise":null,"units":[{"id":7483,"name":"theory","url":"/courses/awesome-text/lessons/clean-and-concise/theory_unit"},{"id":7508,"name":"quiz","url":"/courses/awesome-text/lessons/clean-and-concise/quiz_unit"}],"links":[],"ordered_units":[{"id":7483,"name":"theory","url":"/courses/awesome-text/lessons/clean-and-concise/theory_unit"},{"id":7508,"name":"quiz","url":"/courses/awesome-text/lessons/clean-and-concise/quiz_unit"}],"id":3341,"slug":"clean-and-concise","state":"approved","name":"Ясные формулировки","course_order":400,"goal":"Учимся убирать из текста скрытые действия и запутанные мысли","self_study":"Отредактируйте этот текст так, чтобы он стал понятным:\n\n_Деплой — процесс «разворачивания» веб-сервиса, например, сайта, в рабочем окружении. Для понимания деплоя необходимо разобраться с жизненным циклом кода. Разрабатываясь на рабочей машине разработчика, код приложения запускается в другом месте, называемом продакшеном. Но сначала добавленный в репозиторий код надо доставить до продакшена. В итоге код запускается на продакшене — деплой завершен._\n\nЧтобы вам было проще работать над этим заданием, следуйте такому алгоритму:\n\n* Найдите все скрытые действия — деепричастия, причастия, модальные глаголы, пассивные залоги, отглагольные существительные, предложения со скрытым главным героем\n* Замените все эти скрытые действия на активные глаголы\n* Проверьте, в правильном ли порядке стоят действия\n* Переставьте их так, чтобы события логично шли друг за другом\n\n<details>\n<summary>Нажмите, чтобы увидеть ответ</summary>\n\nМы предлагаем такой вариант:\n\n> _**Деплоем** называют процесс, при котором разработчики разворачивают веб-сервис или сайт в рабочем окружении. Чтобы лучше понять деплой, разберемся с жизненным циклом кода._\n>\n> _Сначала разработчик пишет код на своей рабочей машине. Затем он добавляет код в репозиторий. Далее разработчик доставляет код до среды запуска — она называется **продакшен**. На финальном этапе разработчик запускает код на продакшене._\n>\n> _Все эти действия привели к тому, что разработчик задеплоил сайт._\n</details>\n","theory_video_provider":null,"theory_video_uid":null,"theory":"Авторов образовательного контента в IT ценят за знания из их профессиональной сферы. Хорошему автору-эксперту нужен разнообразный опыт, широкий стек, глубокое понимание технологий.\n\nПри этом далеко не каждый эксперт может сходу написать свой курс. Нужны не только знания, но и умение делиться опытом. Именно над этим вопросом мы работаем в этом курсе: учимся интересно и понятно доносить свои мысли до новичков.\n\nВ этом уроке мы углубимся в редактуру и перейдем на новый уровень — с абзацев до предложений и слов. Здесь вы научитесь писать понятные тексты, чтобы читателю было удобно воспринимать новую информацию.\n\n## Распутывайте порядок действий\n\nВ технических текстах часто используют причастные и деепричастные обороты. Они указывают на действие и главного героя, но подают эту информацию в скрытой форме. Из-за этого студент может запутаться в порядке действий и неверно понять инструкцию.\n\nРазберем каждый оборот подробнее.\n\n### Деепричастия\n\nОни отвечают на вопрос «Что сделав?» или «Что делая?» и обозначают дополнительное действие. Посмотрите на этот пример:\n\nУказав после имени функции круглые скобки, поместив в них параметры и отделив каждый из них запятой, можно вызвать функцию\n\nЗдесь всего один глагол, который указывает на одно действие — «вызвать функцию». Остальные действия скрыты в деепричастиях — «указав», «поместив» и «отделив». На самом деле в предложении упоминается четыре действия, но из-за деепричастий студент заметит только одно из них. Из-за этого он может неправильно понять порядок действий.\n\nЧтобы студенту было проще проследить последовательность действий, избавимся от деепричастных оборотов и заменим их на глаголы:\n\nЧтобы вызвать функцию, укажите после ее имени круглые скобки, поместите в них параметры и отделите их запятой\n\n### Причастия\n\nОни похожи на прилагательные — отвечают на вопрос «Какой?». При этом они описывают действие и главного героя в скрытой форме. Например:\n\nПараметры функции, не отделенные запятой, приведут к ошибке\n\nИз этого предложения студент точно поймет, что в каких-то случаях «параметры функции приведут к ошибке». Ему будет сложно разобраться в деталях:\n\n* Кто должен отделять параметры запятой?\n* Это происходит автоматически или надо делать это вручную?\n* А если отделить параметры, ошибка произойдет или нет?\n\nСтудент может запутаться, что нужно сделать, зачем и в каком порядке. Чтобы упростить мысль, причастный оборот переводим в глагол:\n\nЕсли не отделить параметры функции запятой, то программа выдаст ошибку\n\nКогда мы меняем деепричастные и причастные обороты на глаголы, последовательность действий становится очевиднее. Так студент точно поймет, в каком порядке ему нужно выполнять инструкцию, правильно сделает упражнение и лучше усвоит новые навыки.\n\n## Меняйте скрытое действие на открытое\n\nВ технических текстах часто встречаются **отглагольные существительные** — это слова, которые обозначают события, но на самом деле рассказывают о действиях. Такие формулировки прячут информацию от читателя, убирают динамику, мешают восприятию.\n\nРассмотрим такой пример:\n\nЯ выбежал на лестницу, но врезался в кого-то и упал, в итоге пролетел пару метров и сломал руку\n\nЧитателю легко представить, что происходило и в каком порядке. В этом предложении очень много глаголов, поэтому в нем чувствуется динамика. Обратите внимание, что в этом примере нет слов «быстро» или «стремительно» — но мы все равно чувствуем, что события происходили быстро и стремительно.\n\nА теперь заменим все глаголы действия на отглагольные существительные:\n\nКогда я был в процессе быстрого бега по лестнице, произошло столкновение с другим человеком, после которого последовало падение с высоты в пару метров и перелом руки\n\nПо этому предложению уже сложнее выстроить цепочку событий и прочувствовать динамику. Но есть еще один побочный эффект:\n\n* В первом примере главный герой — активный участник событий, который действует и несет ответственность за свои действия\n* Во втором примере главный герой — пассивный наблюдатель, который никак не влияет на события вокруг себя\n\nТакой же эффект работает с техническими текстами и уроками. Посмотрим на примере:\n\nПараметры — это информация, которая передается в функцию при вызове. На основе этой информации посредством функции происходят вычисления и выдача результата.\n\nПри создании переменной `result` интерпретатор получает указание на вызов функции `len()` и запись возвращенного результата.\n\nОдно из постоянных свойств функции — это возврат результата своей работы. Запись `len('Hello!')` означает вызов функции с именем `len()` и передачу параметра `'Hello!'`.\n\nС первого взгляда не совсем понятно, что это отрывок из образовательного текста. Кажется, что здесь просто описан механизм работы функций. Все события и взаимосвязи описаны как факты — это похоже на документацию. Такой текст описывает, но не учит.\n\nПоменяем в нем существительные на глаголы с активным действием:\n\nПараметры — это информация, которую мы передаем в функцию во время вызова. На основе этой информации функция вычисляет и выдает результат.\n\nДавайте создадим переменную `result` и укажем интерпретатору: «Вызови функцию `len()` и запиши результат, который вернется».\n\nФункции всегда возвращают результат своей работы. Запись `len('Hello!')` означает, что мы вызвали функцию с именем len и передали параметр `'Hello!'`.\n\nЭтот отрывок больше похож на урок: наставник и студент вместе создают переменную, дают команду и получают результат.\n\nЧитая такие формулировки, студент чувствует себя активным участником происходящего — это мотивирует. Особенно заметно этот эффект проявляется у новичков. Им приятно осознавать, что сегодня они раздают команды компьютеру и пишут рабочий код, хотя совсем недавно ничего не знали о программировании.\n\n## Показывайте главного героя\n\nЭта проблема похожа на предыдущую — в технических текстах часто прячется не только действие, но участники событий.\n\nЭту мысль часто объясняют на таком примере:\n\nУважаемые жители! С 1 января по 31 января в вашем доме будут отключены вода и электричество. Дополнительную информацию об отключении можно получить по телефону +7(900)-000-00-00. Ваши обращения рассматриваются в течение 20 рабочих дней.\n\nВ этом тексте есть манипуляция. Грамматика скрывает **подлежащее** — главного героя, который и вызвал все эти неудобства:\n\n| Грамматика| Пример| Скрытая информация|\n|-----------|-------|-------------------|\n| Пассивный залог | Будут отключены вода и электричество | Сами по себе, мы не при делах\n| Модальный глагол | Информацию можно получить по телефону | А можно и не получать, лучше вообще не звоните нам с жалобами\n| Возвратный глагол | Обращения рассматриваются | Сами по себе, мы не виноваты в таких сроках\n\nПопробуем заменить все канцелярские формулировки на глаголы действия:\n\nУважаемые жители! Мы решили отключить воду и электричество в вашем доме на весь январь. Если вам это не нравится, позвоните по телефону +7(900)-000-00-00 — мы ответим примерно через месяц.\n\nПример с глаголами стал звучать грубее и честнее — такое объявление точно получит больше возмущенных откликов.\n\nТакие приемы встречаются и в образовательных текстах, пусть и не выглядят так критично. Здесь другая проблема — они скрывают от студента важную информацию:\n\n| Грамматика | Пример | Вопросы студента|\n|-------------|--------|----------------|\n| Пассивный залог | Эти правила работы с функциями **использованы** в стандартных библиотеках | Кем они использованы? Это заранее настроено и работает автоматически? Или мне нужно помнить об этих правилах? |\n| Возвратный глагол | Эти правила работы с функциями **используются** в стандартных библиотеках | Кем используются? Мной, интерпретатором, самой функцией, программой, библиотекой или автором библиотеки? |\n| Модальный глагол | Эти правила работы с функциями **можно использовать** в стандартных библиотеках | А можно ли использовать в нестандартных библиотеках? А можно ли не использовать эти правила вообще? А за пределами библиотек надо это использовать? Это обязательно?\n\nТакие формулировки оставляют неясность. У студента может сложиться впечатление, что он не усвоил новые знания из урока.\n\nИз этого он может сделать два неверных и неприятных вывода:\n\n* «Автор сам ничего не знает, и такими формулировками скрыл свои пробелы в знаниях»\n* «Для автора это слишком очевидно, поэтому он выбрал такие формулировки. Скорее всего, дело во мне. Мне никогда не освоить программирование, это слишком сложно»\n\nЧтобы этих выводов избежать, лучше использовать активные глаголы и проговаривать все неочевидные подробности:\n\n* Не забывайте применять эти правила работы с функциями со стандартными библиотеками\n* Используйте эти правила работы с функциями в стандартных библиотеках. А в нестандартных это уже не требуется, потому что...\n* Эти правила работы с функциями можно использовать в стандартных библиотеках. Это необязательно: без этих правил ваш код тоже будет работать, просто его читаемость будет хуже\n\nТакими формулировками мы дадим студенту самую полную информацию и фундаментальные знания.\n\n## Выводы и практические советы\n\nВ этом уроке мы изучили некоторые аспекты редактуры, которые часто встречаются в технических и образовательных текстах в IT. Чтобы ваши тексты были понятнее и удобнее для студента, используйте эти приемы:\n\n* Чаще используйте глаголы действия вместо отглагольных существительных. Таким образом вы нагляднее раскроете тему урока и поддержите мотивацию студента\n* Чаще используйте глаголы вместо прилагательных и причастий. Так вы дадите студенту более ясную инструкцию, и он не запутается в последовательности действий\n* Ищите в своих текстах предложения, в которых неочевиден главный герой. Реже используйте пассивный залог, а также модальные и возвратные глаголы. В таком случае даже новички поймут тему урока во всех деталях\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":6701,"name":"theory","url":"/courses/awesome-text/lessons/intro/theory_unit"}],"links":[],"ordered_units":[{"id":6701,"name":"theory","url":"/courses/awesome-text/lessons/intro/theory_unit"}],"id":2923,"slug":"intro","state":"approved","name":"Вступление","course_order":100,"goal":"Обсудим, что такое редактура и зачем она нужна","self_study":null,"theory_video_provider":null,"theory_video_uid":null,"theory":"В этом курсе мы поговорим о том, как писать классные тексты — структурированные, понятные и интересные. Этот навык помогает создавать образовательный контент, которой рассказывает простым языком о сложных вещах. Простые и понятные тексты о программировании приносят пользу специалистам всех уровней:\n\n* **Новички** — эффективнее учатся основам и поэтому быстрее находят первую работу в IT\n* **Junior** — получают фундаментальные знания и быстрее выходят на новый уровень\n* **Middle** — углубляют знания и становятся узкоспециализированными профессионалами\n* **Senior** — делятся опытом с сообществом, прокачивают личный бренд\n\nКак видите, понятный образовательный контент нужен всем программистам — и начинающим, и опытным. Но есть одна проблема: создавать такой контент очень непросто, и на это есть три причины.\n\n### Причина 1 — Специфичные знания\n\nБольшая часть курсов на Хекслете и других платформах рассказывают о технических и сложных темах: языках программирования, фреймворках, алгоритмах, дискретной математике.\n\nЧтобы студент усвоил такие предметы, ему нужно узнать много терминов, разобраться в запутанных механизмах и нюансах, запомнить синтаксис и лучшие практики. От природы человек не очень приспособлен к общению с компьютером, поэтому студентам нужно прокачивать и часто применять абстрактное мышление.\n\nВсе эти факторы приводят к одному выводу: программирование — это сложно. Но если вы читаете этот курс, этап обучения для вас уже пройден, так что с этой сложностью вы справитесь.\n\n### Причина 2 — Особенности онлайн-обучения взрослых\n\nОнлайн-курсы устроены не так, как обучение в школе или университете, поэтому каждый урок не похож на главу из учебника. Взрослый человек не обязан учиться — это его осознанный выбор. Поэтому курсы должны быть понятными, вовлекающими, интересными и полезными, иначе студент сделает выбор не в нашу пользу.\n\nС этой сложностью вы тоже справитесь, потому что особенности обучения мы обсуждали в предыдущем курсе этого трека.\n\n### Причина 3 — Писательский блок\n\nМногие неопытные авторы совершают одну и ту же ошибку — пытаются сразу же написать качественно. Если садиться за черновик с такой установкой, писать будет сложно. Придется думать о многих вещах сразу:\n\n* Как раскрыть тему?\n* О чем сказать дальше?\n* С чего начать?\n* Как закончить?\n* А вдруг получится неинтересно или непонятно?\n\nНаписать что-то в таком мысленном хаосе — это огромный труд. Очень быстро мозг устает и начинает эмоционально реагировать на происходящее:\n\n* Какая формулировка здесь дурацкая\n* Опять я три разные мысли в одном абзаце смешал\n* На месте студента я бы ничего не понял\n* Что я за специалист такой, который свой стек понятными словами объяснить не может?\nТак неопытный автор привыкает к тому, что тексты — это неприятно, у него формируются **писательский блок** и **страх чистого листа**. Этого эффекта можно избежать, если разделить работу на два этапа:\n\n* Некрасивый и непонятный черновик, который просто содержит всю необходимую информацию. Автор опирается на план и пишет урок по нему, целиком раскрывает тему, не обращая внимание на формулировки и структуру\n* Редактура своего текста. Автор приводит черновик в порядок, распутывает запутанные мысли, упрощает формулировки, проверяет оформление текста и кода\n\nИменно с «отладкой черновика» мы и будем разбираться в этом курсе. Вы узнаете, как доносить свои мысли последовательно, писать вступления и заключения, каких формулировок стоит избегать и чем их заменить.\n"},"id":279,"slug":"awesome-text","challenges_count":0,"name":"Как писать классные тексты","allow_indexing":true,"state":"approved","course_state":"finished","pricing_type":"free","description":"В этом курсе вы научитесь писать уроки на технические темы. Вы узнаете, как работать с текстом: выстраивать структуру урока, писать черновик, распутывать мысли, вовлекать студента в новую тему. Эти знания помогут вам писать полезные и понятные уроки, по которым студенты смогут освоить новые навыки.","kind":"additional","updated_at":"2026-01-21T12:35:03.962Z","language":"other","duration_cache":11340,"skills":["Создавать курсы с высокой образовательной ценностью","Писать ясные и понятные уроки","Оформлять текст и код по общепринятым стандартам"],"keywords":[],"lessons_count":11,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6OTkzMSwicHVyIjoiYmxvYl9pZCJ9fQ==--fb7f3c030063b2fed07e03402e7b0f78184a623e/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[],"lessonMemberUnit":null,"accessToLearnUnitExists":true,"accessToCourseExists":true},"url":"/courses/awesome-text/lessons/clean-and-concise/theory_unit","version":"8f286f6358a90a7bef2263b3a6edf5a90a94fa42","encryptHistory":false,"clearHistory":false}"><style data-mantine-styles="true">:root, :host{--mantine-font-family: Arial, sans-serif;--mantine-font-family-headings: Arial, sans-serif;--mantine-heading-font-weight: normal;--mantine-radius-default: 0rem;--mantine-primary-color-filled: var(--mantine-color-indigo-filled);--mantine-primary-color-filled-hover: var(--mantine-color-indigo-filled-hover);--mantine-primary-color-light: var(--mantine-color-indigo-light);--mantine-primary-color-light-hover: var(--mantine-color-indigo-light-hover);--mantine-primary-color-light-color: var(--mantine-color-indigo-light-color);--mantine-spacing-xxl: calc(4rem * var(--mantine-scale));--mantine-font-size-xs: 12px;--mantine-font-size-sm: 14px;--mantine-font-size-md: 16px;--mantine-font-size-lg: clamp(16.0000px, calc(15.2727px + 0.2273vw), 18.0000px);--mantine-font-size-xl: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-display-3: clamp(32.0000px, calc(26.1818px + 1.8182vw), 48.0000px);--mantine-font-size-display-2: clamp(36.0000px, calc(25.8182px + 3.1818vw), 64.0000px);--mantine-font-size-display-1: clamp(40.0000px, calc(25.4545px + 4.5455vw), 80.0000px);--mantine-font-size-h1: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-font-size-h2: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-font-size-h3: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-font-size-h4: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-font-size-h5: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-font-size-h6: 1rem;--mantine-primary-color-0: var(--mantine-color-indigo-0);--mantine-primary-color-1: var(--mantine-color-indigo-1);--mantine-primary-color-2: var(--mantine-color-indigo-2);--mantine-primary-color-3: var(--mantine-color-indigo-3);--mantine-primary-color-4: var(--mantine-color-indigo-4);--mantine-primary-color-5: var(--mantine-color-indigo-5);--mantine-primary-color-6: var(--mantine-color-indigo-6);--mantine-primary-color-7: var(--mantine-color-indigo-7);--mantine-primary-color-8: var(--mantine-color-indigo-8);--mantine-primary-color-9: var(--mantine-color-indigo-9);--mantine-color-red-0: #ffeaea;--mantine-color-red-1: #fed4d4;--mantine-color-red-2: #f4a7a8;--mantine-color-red-3: #ec7878;--mantine-color-red-4: #e55050;--mantine-color-red-5: #e03131;--mantine-color-red-6: #e02829;--mantine-color-red-7: #c71a1c;--mantine-color-red-8: #b21218;--mantine-color-red-9: #9c0411;--mantine-color-violet-0: #fce9ff;--mantine-color-violet-1: #f1cfff;--mantine-color-violet-2: #e09bff;--mantine-color-violet-3: #d16fff;--mantine-color-violet-4: #be37fe;--mantine-color-violet-5: #b51afe;--mantine-color-violet-6: #b009ff;--mantine-color-violet-7: #9b00e4;--mantine-color-violet-8: #8a00cc;--mantine-color-violet-9: #7800b3;--mantine-color-indigo-0: #edecff;--mantine-color-indigo-1: #d6d5fe;--mantine-color-indigo-2: #aaa9f4;--mantine-color-indigo-3: #7b79eb;--mantine-color-indigo-4: #5451e4;--mantine-color-indigo-5: #3b37e0;--mantine-color-indigo-6: #2d2adf;--mantine-color-indigo-7: #1f1ec7;--mantine-color-indigo-8: #1819b2;--mantine-color-indigo-9: #0c149e;--mantine-color-cyan-0: #dffdff;--mantine-color-cyan-1: #caf5ff;--mantine-color-cyan-2: #99e8ff;--mantine-color-cyan-3: #64daff;--mantine-color-cyan-4: #3ccffe;--mantine-color-cyan-5: #24c8fe;--mantine-color-cyan-6: #00c2ff;--mantine-color-cyan-7: #00ade4;--mantine-color-cyan-8: #009acd;--mantine-color-cyan-9: #0085b5;--mantine-color-green-0: #e9fdec;--mantine-color-green-1: #d7f6dc;--mantine-color-green-2: #b0eab9;--mantine-color-green-3: #86df94;--mantine-color-green-4: #62d574;--mantine-color-green-5: #4ccf5f;--mantine-color-green-6: #3fcc54;--mantine-color-green-7: #2fb344;--mantine-color-green-8: #25a03b;--mantine-color-green-9: #138a2e;--mantine-color-yellow-0: #fff7e2;--mantine-color-yellow-1: #ffeecd;--mantine-color-yellow-2: #ffdc9c;--mantine-color-yellow-3: #ffc966;--mantine-color-yellow-4: #feb93a;--mantine-color-yellow-5: #feae1e;--mantine-color-yellow-6: #ffa90f;--mantine-color-yellow-8: #ca8200;--mantine-color-yellow-9: #af7000;--mantine-h1-font-size: clamp(28.0000px, calc(23.6364px + 1.3636vw), 40.0000px);--mantine-h1-font-weight: normal;--mantine-h2-font-size: clamp(24.0000px, calc(21.0909px + 0.9091vw), 32.0000px);--mantine-h2-font-weight: normal;--mantine-h3-font-size: clamp(20.0000px, calc(17.0909px + 0.9091vw), 28.0000px);--mantine-h3-font-weight: normal;--mantine-h4-font-size: clamp(16.0000px, calc(13.0909px + 0.9091vw), 24.0000px);--mantine-h4-font-weight: normal;--mantine-h5-font-size: clamp(16.0000px, calc(14.5455px + 0.4545vw), 20.0000px);--mantine-h5-font-weight: normal;--mantine-h6-font-size: 1rem;--mantine-h6-font-weight: normal;}
:root[data-mantine-color-scheme="dark"], :host([data-mantine-color-scheme="dark"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-dark-filled: var(--mantine-color-dark-5);--mantine-color-dark-filled-hover: var(--mantine-color-dark-6);--mantine-color-dark-light: rgba(105, 105, 105, 0.15);--mantine-color-dark-light-hover: rgba(105, 105, 105, 0.2);--mantine-color-dark-light-color: var(--mantine-color-dark-0);--mantine-color-dark-outline: var(--mantine-color-dark-1);--mantine-color-dark-outline-hover: rgba(184, 184, 184, 0.05);--mantine-color-gray-filled: var(--mantine-color-gray-5);--mantine-color-gray-filled-hover: var(--mantine-color-gray-6);--mantine-color-gray-light: rgba(222, 226, 230, 0.15);--mantine-color-gray-light-hover: rgba(222, 226, 230, 0.2);--mantine-color-gray-light-color: var(--mantine-color-gray-0);--mantine-color-gray-outline: var(--mantine-color-gray-1);--mantine-color-gray-outline-hover: rgba(241, 243, 245, 0.05);--mantine-color-red-filled: var(--mantine-color-red-5);--mantine-color-red-filled-hover: var(--mantine-color-red-6);--mantine-color-red-light: rgba(236, 120, 120, 0.15);--mantine-color-red-light-hover: rgba(236, 120, 120, 0.2);--mantine-color-red-light-color: var(--mantine-color-red-0);--mantine-color-red-outline: var(--mantine-color-red-1);--mantine-color-red-outline-hover: rgba(254, 212, 212, 0.05);--mantine-color-pink-filled: var(--mantine-color-pink-5);--mantine-color-pink-filled-hover: var(--mantine-color-pink-6);--mantine-color-pink-light: rgba(250, 162, 193, 0.15);--mantine-color-pink-light-hover: rgba(250, 162, 193, 0.2);--mantine-color-pink-light-color: var(--mantine-color-pink-0);--mantine-color-pink-outline: var(--mantine-color-pink-1);--mantine-color-pink-outline-hover: rgba(255, 222, 235, 0.05);--mantine-color-grape-filled: var(--mantine-color-grape-5);--mantine-color-grape-filled-hover: var(--mantine-color-grape-6);--mantine-color-grape-light: rgba(229, 153, 247, 0.15);--mantine-color-grape-light-hover: rgba(229, 153, 247, 0.2);--mantine-color-grape-light-color: var(--mantine-color-grape-0);--mantine-color-grape-outline: var(--mantine-color-grape-1);--mantine-color-grape-outline-hover: rgba(243, 217, 250, 0.05);--mantine-color-violet-filled: var(--mantine-color-violet-5);--mantine-color-violet-filled-hover: var(--mantine-color-violet-6);--mantine-color-violet-light: rgba(209, 111, 255, 0.15);--mantine-color-violet-light-hover: rgba(209, 111, 255, 0.2);--mantine-color-violet-light-color: var(--mantine-color-violet-0);--mantine-color-violet-outline: var(--mantine-color-violet-1);--mantine-color-violet-outline-hover: rgba(241, 207, 255, 0.05);--mantine-color-indigo-filled: var(--mantine-color-indigo-5);--mantine-color-indigo-filled-hover: var(--mantine-color-indigo-6);--mantine-color-indigo-light: rgba(123, 121, 235, 0.15);--mantine-color-indigo-light-hover: rgba(123, 121, 235, 0.2);--mantine-color-indigo-light-color: var(--mantine-color-indigo-0);--mantine-color-indigo-outline: var(--mantine-color-indigo-1);--mantine-color-indigo-outline-hover: rgba(214, 213, 254, 0.05);--mantine-color-blue-filled: var(--mantine-color-blue-5);--mantine-color-blue-filled-hover: var(--mantine-color-blue-6);--mantine-color-blue-light: rgba(116, 192, 252, 0.15);--mantine-color-blue-light-hover: rgba(116, 192, 252, 0.2);--mantine-color-blue-light-color: var(--mantine-color-blue-0);--mantine-color-blue-outline: var(--mantine-color-blue-1);--mantine-color-blue-outline-hover: rgba(208, 235, 255, 0.05);--mantine-color-cyan-filled: var(--mantine-color-cyan-5);--mantine-color-cyan-filled-hover: var(--mantine-color-cyan-6);--mantine-color-cyan-light: rgba(100, 218, 255, 0.15);--mantine-color-cyan-light-hover: rgba(100, 218, 255, 0.2);--mantine-color-cyan-light-color: var(--mantine-color-cyan-0);--mantine-color-cyan-outline: var(--mantine-color-cyan-1);--mantine-color-cyan-outline-hover: rgba(202, 245, 255, 0.05);--mantine-color-teal-filled: var(--mantine-color-teal-5);--mantine-color-teal-filled-hover: var(--mantine-color-teal-6);--mantine-color-teal-light: rgba(99, 230, 190, 0.15);--mantine-color-teal-light-hover: rgba(99, 230, 190, 0.2);--mantine-color-teal-light-color: var(--mantine-color-teal-0);--mantine-color-teal-outline: var(--mantine-color-teal-1);--mantine-color-teal-outline-hover: rgba(195, 250, 232, 0.05);--mantine-color-green-filled: var(--mantine-color-green-5);--mantine-color-green-filled-hover: var(--mantine-color-green-6);--mantine-color-green-light: rgba(134, 223, 148, 0.15);--mantine-color-green-light-hover: rgba(134, 223, 148, 0.2);--mantine-color-green-light-color: var(--mantine-color-green-0);--mantine-color-green-outline: var(--mantine-color-green-1);--mantine-color-green-outline-hover: rgba(215, 246, 220, 0.05);--mantine-color-lime-filled: var(--mantine-color-lime-5);--mantine-color-lime-filled-hover: var(--mantine-color-lime-6);--mantine-color-lime-light: rgba(192, 235, 117, 0.15);--mantine-color-lime-light-hover: rgba(192, 235, 117, 0.2);--mantine-color-lime-light-color: var(--mantine-color-lime-0);--mantine-color-lime-outline: var(--mantine-color-lime-1);--mantine-color-lime-outline-hover: rgba(233, 250, 200, 0.05);--mantine-color-yellow-filled: var(--mantine-color-yellow-5);--mantine-color-yellow-filled-hover: var(--mantine-color-yellow-6);--mantine-color-yellow-light: rgba(255, 201, 102, 0.15);--mantine-color-yellow-light-hover: rgba(255, 201, 102, 0.2);--mantine-color-yellow-light-color: var(--mantine-color-yellow-0);--mantine-color-yellow-outline: var(--mantine-color-yellow-1);--mantine-color-yellow-outline-hover: rgba(255, 238, 205, 0.05);--mantine-color-orange-filled: var(--mantine-color-orange-5);--mantine-color-orange-filled-hover: var(--mantine-color-orange-6);--mantine-color-orange-light: rgba(255, 192, 120, 0.15);--mantine-color-orange-light-hover: rgba(255, 192, 120, 0.2);--mantine-color-orange-light-color: var(--mantine-color-orange-0);--mantine-color-orange-outline: var(--mantine-color-orange-1);--mantine-color-orange-outline-hover: rgba(255, 232, 204, 0.05);--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-9) 0%, var(--mantine-color-cyan-7) 100%);--app-color-surface: #2e2e2e;}
:root[data-mantine-color-scheme="light"], :host([data-mantine-color-scheme="light"]){--mantine-color-anchor: var(--mantine-color-text);--mantine-color-dimmed: #495057;--mantine-color-red-light: rgba(224, 40, 41, 0.1);--mantine-color-red-light-hover: rgba(224, 40, 41, 0.12);--mantine-color-red-outline-hover: rgba(224, 40, 41, 0.05);--mantine-color-violet-light: rgba(176, 9, 255, 0.1);--mantine-color-violet-light-hover: rgba(176, 9, 255, 0.12);--mantine-color-violet-outline-hover: rgba(176, 9, 255, 0.05);--mantine-color-indigo-light: rgba(45, 42, 223, 0.1);--mantine-color-indigo-light-hover: rgba(45, 42, 223, 0.12);--mantine-color-indigo-outline-hover: rgba(45, 42, 223, 0.05);--mantine-color-cyan-light: rgba(0, 194, 255, 0.1);--mantine-color-cyan-light-hover: rgba(0, 194, 255, 0.12);--mantine-color-cyan-outline-hover: rgba(0, 194, 255, 0.05);--mantine-color-green-light: rgba(63, 204, 84, 0.1);--mantine-color-green-light-hover: rgba(63, 204, 84, 0.12);--mantine-color-green-outline-hover: rgba(63, 204, 84, 0.05);--mantine-color-yellow-light: rgba(255, 169, 15, 0.1);--mantine-color-yellow-light-hover: rgba(255, 169, 15, 0.12);--mantine-color-yellow-outline-hover: rgba(255, 169, 15, 0.05);--app-color-surface: #f1f3f5;--app-cta-gradient: linear-gradient(90deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-5) 100%);}</style><style data-mantine-styles="classes">@media (max-width: 35.99375em) {.mantine-visible-from-xs {display: none !important;}}@media (min-width: 36em) {.mantine-hidden-from-xs {display: none !important;}}@media (max-width: 47.99375em) {.mantine-visible-from-sm {display: none !important;}}@media (min-width: 48em) {.mantine-hidden-from-sm {display: none !important;}}@media (max-width: 61.99375em) {.mantine-visible-from-md {display: none !important;}}@media (min-width: 62em) {.mantine-hidden-from-md {display: none !important;}}@media (max-width: 74.99375em) {.mantine-visible-from-lg {display: none !important;}}@media (min-width: 75em) {.mantine-hidden-from-lg {display: none !important;}}@media (max-width: 87.99375em) {.mantine-visible-from-xl {display: none !important;}}@media (min-width: 88em) {.mantine-hidden-from-xl {display: none !important;}}</style><div style="position:absolute;top:0rem" class=""></div><div style="max-width:var(--container-size-xl);height:100%;min-height:0rem" class=""><style data-mantine-styles="inline">.__m__-_R_5ub_{--grid-gutter:0rem;}</style><div style="height:100%;min-height:0rem" class="m_410352e9 mantine-Grid-root __m__-_R_5ub_"><div class="m_dee7bd2f mantine-Grid-inner" style="height:100%"><style data-mantine-styles="inline">.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:91.66666666666667%;--col-max-width:91.66666666666667%;}@media(min-width: 48em){.__m__-_R_rdub_{--col-flex-grow:auto;--col-flex-basis:83.33333333333334%;--col-max-width:83.33333333333334%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem;display:flex" class="m_96bdd299 mantine-Grid-col __m__-_R_rdub_"><style data-mantine-styles="inline">.__m__-_R_6qrdub_{margin-top:0rem;padding-inline:var(--mantine-spacing-xs);width:100%;}@media(min-width: 48em){.__m__-_R_6qrdub_{margin-top:var(--mantine-spacing-xl);width:80%;}}@media(min-width: 62em){.__m__-_R_6qrdub_{padding-inline:var(--mantine-spacing-xl);}}</style><div style="margin-inline:auto;max-width:var(--mantine-breakpoint-xl)" class="__m__-_R_6qrdub_"><div style="color:var(--mantine-color-dimmed)" class="m_4451eb3a mantine-Center-root" data-inline="true"><div style="--ti-size:var(--ti-size-xs);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;margin-inline-end:calc(0.125rem * var(--mantine-scale));color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="xs"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-lock "><path d="M5 13a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2v6a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-6"></path><path d="M11 16a1 1 0 1 0 2 0a1 1 0 0 0 -2 0"></path><path d="M8 11v-4a4 4 0 1 1 8 0v4"></path></svg></div><p style="font-size:var(--mantine-font-size-sm)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Как писать классные тексты</p></div><h1 style="--title-fw:var(--mantine-h1-font-weight);--title-lh:var(--mantine-h1-line-height);--title-fz:var(--mantine-h1-font-size);margin-bottom:var(--mantine-spacing-xl)" class="m_8a5d1357 mantine-Title-root" data-order="1">Теория: Ясные формулировки</h1><script type="application/ld+json">{"@context":"https://schema.org","@type":"LearningResource","name":"Ясные формулировки","inLanguage":"ru","isPartOf":{"@type":"LearningResource","name":"Как писать классные тексты"},"isAccessibleForFree":"False","hasPart":{"@type":"WebPageElement","isAccessibleForFree":"False","cssSelector":".paywalled"}}</script><div class=""><div style="--alert-color:var(--mantine-color-indigo-light-color);margin-bottom:var(--mantine-spacing-lg);font-size:var(--mantine-font-size-lg)" class="m_66836ed3 mantine-Alert-root" id="mantine-_R_remqrdub_" role="alert" aria-describedby="mantine-_R_remqrdub_-body" aria-labelledby="mantine-_R_remqrdub_-title"><div class="m_a5d60502 mantine-Alert-wrapper"><div class="m_667f2a6a mantine-Alert-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-rocket "><path d="M4 13a8 8 0 0 1 7 7a6 6 0 0 0 3 -5a9 9 0 0 0 6 -8a3 3 0 0 0 -3 -3a9 9 0 0 0 -8 6a6 6 0 0 0 -5 3"></path><path d="M7 14a6 6 0 0 0 -3 6a6 6 0 0 0 6 -3"></path><path d="M14 9a1 1 0 1 0 2 0a1 1 0 1 0 -2 0"></path></svg></div><div class="m_667c2793 mantine-Alert-body"><div class="m_6a03f287 mantine-Alert-title"><span id="mantine-_R_remqrdub_-title" class="m_698f4f23 mantine-Alert-label">Полный доступ к материалам</span></div><div id="mantine-_R_remqrdub_-body" class="m_7fa78076 mantine-Alert-message"><div style="--group-gap:var(--mantine-spacing-md);--group-align:center;--group-justify:space-between;--group-wrap:wrap" class="m_4081bf90 mantine-Group-root"><p class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Зарегистрируйтесь и получите доступ к этому и десяткам других курсов</p><a style="--button-height:var(--button-height-xs);--button-padding-x:var(--button-padding-x-xs);--button-fz:var(--mantine-font-size-xs);--button-bg:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-hover:linear-gradient(45deg, var(--mantine-color-blue-filled) 0%, var(--mantine-color-cyan-filled) 100%);--button-color:var(--mantine-color-white);--button-bd:none" class="mantine-focus-auto mantine-active m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root" data-variant="gradient" data-size="xs" href="/u/new"><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">Зарегистрироваться</span></span></a></div></div></div></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><p>Авторов образовательного контента в IT ценят за знания из их профессиональной сферы. Хорошему автору-эксперту нужен разнообразный опыт, широкий стек, глубокое понимание технологий.</p>
<p>При этом далеко не каждый эксперт может сходу написать свой курс. Нужны не только знания, но и умение делиться опытом. Именно над этим вопросом мы работаем в этом курсе: учимся интересно и понятно доносить свои мысли до новичков.</p>
<p>В этом уроке мы углубимся в редактуру и перейдем на новый уровень — с абзацев до предложений и слов. Здесь вы научитесь писать понятные тексты, чтобы читателю было удобно воспринимать новую информацию.</p>
<h2 id="heading-2-1">Распутывайте порядок действий</h2>
<p>В технических текстах часто используют причастные и деепричастные обороты. Они указывают на действие и главного героя, но подают эту информацию в скрытой форме. Из-за этого студент может запутаться в порядке действий и неверно понять инструкцию.</p>
<p>Разберем каждый оборот подробнее.</p>
<h3 id="heading-3-2">Деепричастия</h3>
<p>Они отвечают на вопрос «Что сделав?» или «Что делая?» и обозначают дополнительное действие. Посмотрите на этот пример:</p>
<p>Указав после имени функции круглые скобки, поместив в них параметры и отделив каждый из них запятой, можно вызвать функцию</p>
<p>Здесь всего один глагол, который указывает на одно действие — «вызвать функцию». Остальные действия скрыты в деепричастиях — «указав», «поместив» и «отделив». На самом деле в предложении упоминается четыре действия, но из-за деепричастий студент заметит только одно из них. Из-за этого он может неправильно понять порядок действий.</p>
<p>Чтобы студенту было проще проследить последовательность действий, избавимся от деепричастных оборотов и заменим их на глаголы:</p>
<p>Чтобы вызвать функцию, укажите после ее имени круглые скобки, поместите в них параметры и отделите их запятой</p>
<h3 id="heading-3-3">Причастия</h3>
<p>Они похожи на прилагательные — отвечают на вопрос «Какой?». При этом они описывают действие и главного героя в скрытой форме. Например:</p>
<p>Параметры функции, не отделенные запятой, приведут к ошибке</p>
<p>Из этого предложения студент точно поймет, что в каких-то случаях «параметры функции приведут к ошибке». Ему будет сложно разобраться в деталях:</p>
<ul>
<li>Кто должен отделять параметры запятой?</li>
<li>Это происходит автоматически или надо делать это вручную?</li>
<li>А если отделить параметры, ошибка произойдет или нет?</li>
</ul>
<p>Студент может запутаться, что нужно сделать, зачем и в каком порядке. Чтобы упростить мысль, причастный оборот переводим в глагол:</p>
<p>Если не отделить параметры функции запятой, то программа выдаст ошибку</p>
<p>Когда мы меняем деепричастные и причастные обороты на глаголы, последовательность действий становится очевиднее. Так студент точно поймет, в каком порядке ему нужно выполнять инструкцию, правильно сделает упражнение и лучше усвоит новые навыки.</p>
<h2 id="heading-2-4">Меняйте скрытое действие на открытое</h2>
<p>В технических текстах часто встречаются <strong>отглагольные существительные</strong> — это слова, которые обозначают события, но на самом деле рассказывают о действиях. Такие формулировки прячут информацию от читателя, убирают динамику, мешают восприятию.</p>
<p>Рассмотрим такой пример:</p>
<p>Я выбежал на лестницу, но врезался в кого-то и упал, в итоге пролетел пару метров и сломал руку</p>
<p>Читателю легко представить, что происходило и в каком порядке. В этом предложении очень много глаголов, поэтому в нем чувствуется динамика. Обратите внимание, что в этом примере нет слов «быстро» или «стремительно» — но мы все равно чувствуем, что события происходили быстро и стремительно.</p>
<p>А теперь заменим все глаголы действия на отглагольные существительные:</p>
<p>Когда я был в процессе быстрого бега по лестнице, произошло столкновение с другим человеком, после которого последовало падение с высоты в пару метров и перелом руки</p>
<p>По этому предложению уже сложнее выстроить цепочку событий и прочувствовать динамику. Но есть еще один побочный эффект:</p>
<ul>
<li>В первом примере главный герой — активный участник событий, который действует и несет ответственность за свои действия</li>
<li>Во втором примере главный герой — пассивный наблюдатель, который никак не влияет на события вокруг себя</li>
</ul>
<p>Такой же эффект работает с техническими текстами и уроками. Посмотрим на примере:</p>
<p>Параметры — это информация, которая передается в функцию при вызове. На основе этой информации посредством функции происходят вычисления и выдача результата.</p>
<p>При создании переменной <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">result</code> интерпретатор получает указание на вызов функции <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">len()</code> и запись возвращенного результата.</p>
<p>Одно из постоянных свойств функции — это возврат результата своей работы. Запись <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">len('Hello!')</code> означает вызов функции с именем <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">len()</code> и передачу параметра <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">'Hello!'</code>.</p>
<p>С первого взгляда не совсем понятно, что это отрывок из образовательного текста. Кажется, что здесь просто описан механизм работы функций. Все события и взаимосвязи описаны как факты — это похоже на документацию. Такой текст описывает, но не учит.</p>
<p>Поменяем в нем существительные на глаголы с активным действием:</p>
<p>Параметры — это информация, которую мы передаем в функцию во время вызова. На основе этой информации функция вычисляет и выдает результат.</p>
<p>Давайте создадим переменную <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">result</code> и укажем интерпретатору: «Вызови функцию <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">len()</code> и запиши результат, который вернется».</p>
<p>Функции всегда возвращают результат своей работы. Запись <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">len('Hello!')</code> означает, что мы вызвали функцию с именем len и передали параметр <code style="margin-bottom:var(--mantine-spacing-lg)" class="m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight m_e597c321 mantine-CodeHighlight-codeHighlight m_dfe9c588 mantine-InlineCodeHighlight-inlineCodeHighlight">'Hello!'</code>.</p>
<p>Этот отрывок больше похож на урок: наставник и студент вместе создают переменную, дают команду и получают результат.</p>
<p>Читая такие формулировки, студент чувствует себя активным участником происходящего — это мотивирует. Особенно заметно этот эффект проявляется у новичков. Им приятно осознавать, что сегодня они раздают команды компьютеру и пишут рабочий код, хотя совсем недавно ничего не знали о программировании.</p>
<h2 id="heading-2-5">Показывайте главного героя</h2>
<p>Эта проблема похожа на предыдущую — в технических текстах часто прячется не только действие, но участники событий.</p>
<p>Эту мысль часто объясняют на таком примере:</p>
<p>Уважаемые жители! С 1 января по 31 января в вашем доме будут отключены вода и электричество. Дополнительную информацию об отключении можно получить по телефону +7(900)-000-00-00. Ваши обращения рассматриваются в течение 20 рабочих дней.</p>
<p>В этом тексте есть манипуляция. Грамматика скрывает <strong>подлежащее</strong> — главного героя, который и вызвал все эти неудобства:</p>
<div style="--table-min-width:calc(50rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_a100c15 mantine-TableScrollContainer-scrollContainer m_d57069b5 mantine-ScrollArea-root"><div style="overflow-x:hidden;overflow-y:hidden" class="m_c0783ff9 mantine-ScrollArea-viewport" data-offset-scrollbars="x" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><div class="m_62259741 mantine-TableScrollContainer-scrollContainerInner"><table><thead><tr><th>Грамматика</th><th>Пример</th><th>Скрытая информация</th></tr></thead><tbody><tr><td>Пассивный залог</td><td>Будут отключены вода и электричество</td><td>Сами по себе, мы не при делах</td></tr><tr><td>Модальный глагол</td><td>Информацию можно получить по телефону</td><td>А можно и не получать, лучше вообще не звоните нам с жалобами</td></tr><tr><td>Возвратный глагол</td><td>Обращения рассматриваются</td><td>Сами по себе, мы не виноваты в таких сроках</td></tr></tbody></table></div></div></div></div>
<p>Попробуем заменить все канцелярские формулировки на глаголы действия:</p>
<p>Уважаемые жители! Мы решили отключить воду и электричество в вашем доме на весь январь. Если вам это не нравится, позвоните по телефону +7(900)-000-00-00 — мы ответим примерно через месяц.</p>
<p>Пример с глаголами стал звучать грубее и честнее — такое объявление точно получит больше возмущенных откликов.</p>
<p>Такие приемы встречаются и в образовательных текстах, пусть и не выглядят так критично. Здесь другая проблема — они скрывают от студента важную информацию:</p>
<div style="--table-min-width:calc(50rem * var(--mantine-scale));--sa-corner-width:0px;--sa-corner-height:0px" class="m_a100c15 mantine-TableScrollContainer-scrollContainer m_d57069b5 mantine-ScrollArea-root"><div style="overflow-x:hidden;overflow-y:hidden" class="m_c0783ff9 mantine-ScrollArea-viewport" data-offset-scrollbars="x" data-scrollbars="xy"><div class="m_b1336c6 mantine-ScrollArea-content"><div class="m_62259741 mantine-TableScrollContainer-scrollContainerInner"><table><thead><tr><th>Грамматика</th><th>Пример</th><th>Вопросы студента</th></tr></thead><tbody><tr><td>Пассивный залог</td><td>Эти правила работы с функциями <strong>использованы</strong> в стандартных библиотеках</td><td>Кем они использованы? Это заранее настроено и работает автоматически? Или мне нужно помнить об этих правилах?</td></tr><tr><td>Возвратный глагол</td><td>Эти правила работы с функциями <strong>используются</strong> в стандартных библиотеках</td><td>Кем используются? Мной, интерпретатором, самой функцией, программой, библиотекой или автором библиотеки?</td></tr><tr><td>Модальный глагол</td><td>Эти правила работы с функциями <strong>можно использовать</strong> в стандартных библиотеках</td><td>А можно ли использовать в нестандартных библиотеках? А можно ли не использовать эти правила вообще? А за пределами библиотек надо это использовать? Это обязательно?</td></tr></tbody></table></div></div></div></div>
<p>Такие формулировки оставляют неясность. У студента может сложиться впечатление, что он не усвоил новые знания из урока.</p>
<p>Из этого он может сделать два неверных и неприятных вывода:</p>
<ul>
<li>«Автор сам ничего не знает, и такими формулировками скрыл свои пробелы в знаниях»</li>
<li>«Для автора это слишком очевидно, поэтому он выбрал такие формулировки. Скорее всего, дело во мне. Мне никогда не освоить программирование, это слишком сложно»</li>
</ul>
<p>Чтобы этих выводов избежать, лучше использовать активные глаголы и проговаривать все неочевидные подробности:</p>
<ul>
<li>Не забывайте применять эти правила работы с функциями со стандартными библиотеками</li>
<li>Используйте эти правила работы с функциями в стандартных библиотеках. А в нестандартных это уже не требуется, потому что...</li>
<li>Эти правила работы с функциями можно использовать в стандартных библиотеках. Это необязательно: без этих правил ваш код тоже будет работать, просто его читаемость будет хуже</li>
</ul>
<p>Такими формулировками мы дадим студенту самую полную информацию и фундаментальные знания.</p>
<h2 id="heading-2-6">Выводы и практические советы</h2>
<p>В этом уроке мы изучили некоторые аспекты редактуры, которые часто встречаются в технических и образовательных текстах в IT. Чтобы ваши тексты были понятнее и удобнее для студента, используйте эти приемы:</p>
<ul>
<li>Чаще используйте глаголы действия вместо отглагольных существительных. Таким образом вы нагляднее раскроете тему урока и поддержите мотивацию студента</li>
<li>Чаще используйте глаголы вместо прилагательных и причастий. Так вы дадите студенту более ясную инструкцию, и он не запутается в последовательности действий</li>
<li>Ищите в своих текстах предложения, в которых неочевиден главный герой. Реже используйте пассивный залог, а также модальные и возвратные глаголы. В таком случае даже новички поймут тему урока во всех деталях</li>
</ul></div></div></div></div><style data-mantine-styles="inline">.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:8.333333333333334%;--col-max-width:8.333333333333334%;}@media(min-width: 48em){.__m__-_R_1bdub_{--col-flex-grow:auto;--col-flex-basis:16.666666666666668%;--col-max-width:16.666666666666668%;}}</style><div style="min-width:0rem;height:100%;min-height:0rem" class="m_96bdd299 mantine-Grid-col __m__-_R_1bdub_"><div style="margin-inline:var(--mantine-spacing-xs)" class="mantine-visible-from-sm"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-lg);text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/awesome-text/lessons/clean-and-concise/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label"><span style="margin-inline-end:var(--mantine-spacing-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Дальше</span>→</span></span></a><a style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Навигация по теме</span><span class="m_57492dcc mantine-NavLink-description">Теория</span></div><span class="m_690090b5 mantine-NavLink-section" data-position="right"></span></a><div style="margin-block:var(--mantine-spacing-lg)" class="m_3eebeb36 mantine-Divider-root" data-orientation="horizontal" role="separator"></div><div style="margin-block:var(--mantine-spacing-lg)" class=""><div style="justify-content:space-between;margin-bottom:calc(0.1875rem * var(--mantine-scale));color:var(--mantine-color-dimmed);font-size:var(--mantine-font-size-xs)" class="m_8bffd616 mantine-Flex-root __m__-_R_qimrbdub_"><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">Завершено</p><p style="font-size:var(--mantine-font-size-xs)" class="mantine-focus-auto m_b6d8b162 mantine-Text-root">0 / 11</p></div><div style="--progress-size:var(--progress-size-sm)" class="m_db6d6462 mantine-Progress-root" data-size="sm"><div style="--progress-section-size:0%;--progress-section-color:var(--mantine-color-gray-filled)" class="m_2242eb65 mantine-Progress-section" role="progressbar" aria-valuemax="100" aria-valuemin="0" aria-valuenow="0" aria-valuetext="0%"></div></div></div><button style="padding-inline:0rem" class="mantine-focus-auto m_f0824112 mantine-NavLink-root m_87cf2631 mantine-UnstyledButton-root" type="button"><span class="m_690090b5 mantine-NavLink-section" data-position="left"><div style="--ti-size:var(--ti-size-sm);--ti-bg:transparent;--ti-color:var(--mantine-color-indigo-light-color);--ti-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;color:inherit" class="m_7341320d mantine-ThemeIcon-root" data-variant="transparent" data-size="sm"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></path></svg></div></span><div class="m_f07af9d2 mantine-NavLink-body"><span class="m_1f6ac4c4 mantine-NavLink-label">Обсуждения (архив)</span><span class="m_57492dcc mantine-NavLink-description"></span></div></button><div style="--toc-bg:var(--mantine-color-blue-light);--toc-color:var(--mantine-color-blue-light-color);--toc-size:var(--mantine-font-size-sm);--toc-radius:var(--mantine-radius-sm);margin-top:var(--mantine-spacing-xl)" class="m_bcaa9990 mantine-TableOfContents-root" data-variant="light" data-size="sm"></div></div><div class="mantine-hidden-from-sm"><div style="--stack-gap:0rem;--stack-align:stretch;--stack-justify:flex-start" class="m_6d731127 mantine-Stack-root"><a style="--button-color:var(--mantine-color-white);margin-bottom:var(--mantine-spacing-xs);padding:0rem;text-decoration:none" class="mantine-focus-auto m_849cf0da mantine-focus-auto m_77c9d27d mantine-Button-root m_87cf2631 mantine-UnstyledButton-root m_b6d8b162 mantine-Text-root mantine-Anchor-root" data-underline="hover" href="/courses/awesome-text/lessons/clean-and-concise/finish_unit?unit=theory" data-disabled="true" data-block="true" disabled=""><span class="m_80f1301b mantine-Button-inner"><span class="m_811560b9 mantine-Button-label">→</span></span></a><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" data-disabled="true" type="button" disabled=""><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-list-numbers "><path d="M11 6h9"></path><path d="M11 12h9"></path><path d="M12 18h8"></path><path d="M4 16a2 2 0 1 1 4 0c0 .591 -.5 1 -1 1.5l-3 2.5h4"></path><path d="M6 10v-6l-2 2"></path></svg></span></button><button style="--ai-size:var(--ai-size-sm);--ai-bg:transparent;--ai-hover:var(--mantine-color-indigo-light-hover);--ai-color:var(--mantine-color-indigo-light-color);--ai-bd:calc(0.0625rem * var(--mantine-scale)) solid transparent;padding-block:var(--mantine-spacing-lg);color:inherit;width:100%" class="mantine-focus-auto mantine-active m_8d3f4000 mantine-ActionIcon-root m_87cf2631 mantine-UnstyledButton-root" data-variant="subtle" data-size="sm" type="button"><span class="m_8d3afb97 mantine-ActionIcon-icon"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round" class="tabler-icon tabler-icon-message "><path d="M8 9h8"></path><path d="M8 13h6"></path><path d="M18 4a3 3 0 0 1 3 3v8a3 3 0 0 1 -3 3h-5l-5 3v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12"></path></svg></span></button></div></div></div></div></div></div></div>
</main>
<footer class="bg-dark fw-light text-light px-3 py-5">
<div class="row small">
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 mb-3">Хекслет</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/about">О нас</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/testimonials">Отзывы</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://b2b.hexlet.io" role="button">Корпоративное обучение</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/blog">Блог</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/qna">Вопросы и ответы</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/glossary">Глоссарий</a>
</li>
<li>
<span class="nav-link link-light py-1 ps-0 external-link" data-href="https://help.hexlet.io" data-target="_blank" role="button">Справка</span>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" target="_blank" rel="noopener noreferrer" href="/map">Карта сайта</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5 fw-normal mb-3">Направления</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_devops">DevOps
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_data_analytics">Аналитика
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_backend_development">Бэкенд
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_programming">Программирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_testing">Тестирование
</a></li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/courses_front_end_dev">Фронтенд
</a></li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Профессии</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/devops-engineer-from-scratch">DevOps-инженер с нуля</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/go">Go-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/java">Java-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python">Python-разработчик </a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/data-analytics">Аналитик данных</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/qa-engineer">Инженер по ручному тестированию</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php">РНР-разработчик</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/frontend">Фронтенд-разработчик</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-6 col-md-3">
<div class="h5">Навыки</div>
<ul class="list-unstyled">
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/python-django-developer">Django</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/docker">Docker</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/php-laravel-developer">Laravel</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/postman">Postman</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-react-developer">React</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/js-rest-api">REST API в Node.js</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/spring-boot">Spring Boot</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/programs/typescript">Typescript</a>
</li>
</ul>
</div>
</div>
<hr>
<div class="row">
<div class="col-12 col-sm-4 col-md-2">
<div class="fs-4">
<ul class="list-unstyled d-flex">
<li class="me-3">
<a aria-label="Telegram" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://t.me/hexlet_ru"><span class="bi bi-telegram"></span>
</a></li>
<li>
<a aria-label="Youtube" target="_blank" class="link-light" rel="noopener noreferrer nofollow" href="https://www.youtube.com/user/HexletUniversity"><span class="bi bi-youtube"></span>
</a></li>
</ul>
</div>
<div class="mb-2 d-flex flex-column">
<a class="link-light text-decoration-none" rel="nofollow" href="mailto:support@hexlet.io">support@hexlet.io</a>
<a class="link-light text-decoration-none py-2" target="_blank" href="https://t.me/hexlet_help_bot">t.me/hexlet_help_bot</a>
</div>
<ul class="list-unstyled d-flex">
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://hexlet.io/locale/switch?new_locale=en" data-target="_self" role="button"><span class="my-auto">EN</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 opacity-100 external-link" rel="nofollow" data-href="https://ru.hexlet.io/locale/switch?new_locale=ru" data-target="_self" role="button"><span class="my-auto">RU</span>
</span></li>
<li class="me-3">
<span class="link-light text-decoration-none opacity-50 x-font-size-18 external-link" rel="nofollow" data-href="https://kz.hexlet.io/locale/switch?new_locale=kz" data-target="_self" role="button"><span class="my-auto">KZ</span>
</span></li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<ul class="list-unstyled fs-4">
<li class="mb-3">
<a class="link-light text-decoration-none" href="tel:8%20800%20100%2022%2047">8 800 100 22 47</a>
<span class="d-block opacity-50 small">бесплатно по РФ</span>
</li>
<li>
<a class="link-light text-decoration-none" href="tel:%2B7%20495%20085%2021%2062">+7 495 085 21 62</a>
<span class="d-block opacity-50 small">бесплатно по Москве</span>
</li>
</ul>
</div>
<div class="col-12 col-sm-4 col-md-3">
<div class="small mb-3">Образовательные услуги оказываются на основании Л035-01298-77/01989008 от 14.03.2025</div>
<ul class="list-unstyled small">
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/legal">Правовая информация</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/offer">Оферта</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/license">Лицензия</a>
</li>
<li>
<a class="nav-link link-light py-1 ps-0" href="/pages/contacts">Контакты</a>
</li>
</ul>
</div>
<div class="col-12 col-sm-12 col-md-4 small">
<div class="mb-2">
<div>ООО «<a href="/" class="text-decoration-none link-light">Хекслет Рус</a>»</div>
<div>108813 г. Москва, вн.тер.г. поселение Московский,</div>
<div>г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3</div>
<div>ОГРН 1217300010476</div>
<div>ИНН 7325174845</div>
</div>
<hr>
<div>АНО ДПО «<a href="/" class="text-decoration-none link-light">Учебный центр «Хекслет</a>»</div>
<div>119331 г. Москва, вн. тер. г. муниципальный округ</div>
<div>Ломоносовский, пр-кт Вернадского, д. 29</div>
<div>ОГРН 1247700712390</div>
<div>ИНН 7736364948</div>
</div>
</div>
</footer>
<div id="root-assistant-offcanvas"></div>
<script src="/vite/assets/assistant-Bukl1lYy.js" crossorigin="anonymous" type="module"></script><link rel="modulepreload" href="/vite/assets/chunk-DsPFFUou.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/init-BrRXra1y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/ErrorFallbackBlock-naDSYSy9.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/MarkdownBlock-DbyKWoR_.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/gon-D3e4yh1x.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/mantine-CGMYrt2Y.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/shiki-V011pkdv.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/utils-DRqSHbQE.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/routes-CCH8ilKF.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-XR8Qr8kR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dist-GCHh59xr.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/Box-B5-OOzBf.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/notifications.store-C-3AFSMn.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useIsomorphicEffect-HJ6VK0D3.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/lib-KSp6QbZ0.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/axios-BEvgo0ym.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/classnames-l6ipYlLR.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/dayjs.min-BkKovM-s.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/debounce-jMQ_Cf4f.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/i18next-BlSq9s7B.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/client-U9M77rxp.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-dom-DaLxUz_h.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/useTranslation-Bx1Cdrkz.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/compiler-runtime-6XxiPFnt.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/jsx-runtime-CwjcCKJi.js" as="script" crossorigin="anonymous">
<link rel="modulepreload" href="/vite/assets/react-CkL4ZRHB.js" as="script" crossorigin="anonymous">
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v67327c56f0bb4ef8b305cae61679db8f1769101564043" integrity="sha512-rdcWY47ByXd76cbCFzznIcEaCN71jqkWBBqlwhF1SY7KubdLKZiEGeP7AyieKZlGP9hbY/MhGrwXzJC/HulNyg==" data-cf-beacon='{"version":"2024.11.0","token":"d11015b65d11429ea6b4a2ef37dd7e0b","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html>