<!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 17:12:40 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="BoMv5uhcy1g-AlC0heFhcZMK5RCHSC0EwduV-orpEwTpUuTRGiJmOIhBdCyJ7pEGUwPIuo9_06Z8Ow-u2O70ag";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/introduction_to_programming/lessons/language/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/introduction_to_programming/lessons/language/theory_unit">
<meta name="csrf-param" content="authenticity_token" />
<meta name="csrf-token" content="uoZ-CSmKoFJ6d_QMZneX9VeeYvsKmQ_QIPbr_YjIgbFVV7U-2_QNMsw00JRqeGeCl5dPUQKu8XKdFnGp2s9m3w" />
<script src="/vite/assets/inertia-INZxX8jp.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-nkZBEvfU.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-6pOtQ3OW.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-26T17:12:40.574Z","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":"W8v-U-jJxHWR8Uh8HNt0NcdLBh_ezgOFkB-M9RZ_P7G0GjVkGrdpFSeybOQQ1IRCB0Irtdb5_Sct_xahRHjY3w","topics":[{"id":49683,"title":"Здравствуйте.\nВ этом уроке вы рекомендуете начать с JS, а в статье \"Обучение программированию в 30+ лет: подробный гайд\" есть совет :\nЗапишитесь в одну из профессий Хекслета, мы рекомендуем «Основы PHP на Code Basics», и начинайте учиться. \nКакому языку все же отдать предпочтение? ","plain_title":"Здравствуйте. В этом уроке вы рекомендуете начать с JS, а в статье \"Обучение программированию в 30+ лет: подробный гайд\" есть совет : Запишитесь в одну из профессий Хекслета, мы рекомендуем «Основы PHP на Code Basics», и начинайте учиться. Какому языку все же отдать предпочтение? ","creator":{"public_name":"Олег","id":328777,"is_tutor":false},"comments":[{"creator":{"public_name":"Sergei Melodyn","id":162475,"is_tutor":true},"id":106594,"body":"**Олег**, приветствую.\n\nОтдайте предпочтение Python, а если не пойдёт, то тогда JS!\n\nШутка :) \n\nСтатья, о которой вы пишите, выпущена в 2017 году и с тех пор на Хекслете многое изменилось, появилась профессия по Python, очень изменились профессии по JavaScript, но и PHP не обделили вниманием. А ещё у нас появилась профессия Верстальщик!\n\n> Какому языку все же отдать предпочтение?\n\nВыбирайте интересное вам направление и перспективу развития. Если вы хотите делать интерфейсы, то очевидно, что нужно выбирать фронтенд или вёрстку. А, если вы планируете в будущем писать нейросети или заниматься дата-саентизмом, то наиболее логично выбрать Python. Для чистой веб-разработки на бэкенде подойдёт и PHP, и Node.js, но PHP более \"развитый\" по инструментам.","topic_id":49683}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":7397,"title":"За новыми уроками нужно просто заходить в свой профиль? Или есть какая-то подписка для уведомления по e-mail?","plain_title":"За новыми уроками нужно просто заходить в свой профиль? Или есть какая-то подписка для уведомления по e-mail? ","creator":{"public_name":"Сергей К.","id":5174,"is_tutor":false},"comments":[{"creator":{"public_name":"R. D.","id":3,"is_tutor":false},"id":13844,"body":"К сожалению, email-уведомлений о новых уроках нет, но можно следить за выходом новых уроков в твиттере https://twitter.com/hexlessons_ru\n\nКстати, вы можете сделать себе email-уведомления через сервисы типа https://zapier.com/ или https://ifttt.com/ используя тот твиттер как источник.","topic_id":7397},{"creator":{"public_name":"","id":191558,"is_tutor":false},"id":42253,"body":"Полностью согласен) прочитал урок несколько раз и ничего не понял, по видео все стало понятно с первого раза) Спасибо за ссылку! ","topic_id":7397},{"creator":{"public_name":"Алексей Дубнов","id":186176,"is_tutor":false},"id":37345,"body":"Вы конечно простите, но тут гораздо понятней про перевод из двоичной в десятичную:\nhttps://www.youtube.com/watch?v=peKyfzjjfYI[enter link description here](https://www.youtube.com/watch?v=peKyfzjjfYI)","topic_id":7397},{"creator":{"public_name":"Марина М","id":256232,"is_tutor":false},"id":76837,"body":"Будет ли правильно сказать, что компьютер использует для понимания чисел, например, 2, два нуля? ","topic_id":7397},{"creator":{"public_name":"Ruslan Battalov","id":194651,"is_tutor":false},"id":44027,"body":"видео \"как компьютер складывает числа\" взрывает могз. Очень сложно угнаться за сутью. Я мало что понял. Вернее не чего )))","topic_id":7397},{"creator":{"public_name":"Сергей Nikolenko","id":279886,"is_tutor":false},"id":95567,"body":"10 = одна двойка, ноль единиц","topic_id":7397}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":13509,"title":"привет! ни как не могу понять, как так получается в двоичной системе счисления- 11+1=100?\nвообще ни как не понятно, ни в гугле ни тут...","plain_title":"привет! ни как не могу понять, как так получается в двоичной системе счисления- 11+1=100? вообще ни как не понятно, ни в гугле ни тут... ","creator":{"public_name":"Zaid Shikov","id":167137,"is_tutor":false},"comments":[{"creator":{"public_name":"Владимир cssfish","id":101628,"is_tutor":false},"id":28423,"body":"Как мы складываем в десятичной?\nПри добавлении к числу 1 - берем следующую ЦИФРУ.\nнапример 2+1 =3 (потому что 3 следует за 2)\nА если цифры кончаются (например 9+1, а больше 9 ведь цифры нет!) - тогда дописываем новую цифру СЛЕВА, а первую цифру обнуляем: 9+1=10\n\nа в двоичной цифр не 10 а две!\nпоэтому 1+1 = что? цифры больше 1 нет, так что добавляем новую СЛЕВА, а первую обнуляем) 1+1=10\n\n\n\n","topic_id":13509},{"creator":{"public_name":"Zaid Shikov","id":167137,"is_tutor":false},"id":28703,"body":"А если цифр две допустим 10 и я добавляю 1, разве не 100 должно получится? ведь первая должна обнуляться? как в случае с 11+1 =100 тут ведь две цифры обнулились....","topic_id":13509},{"creator":{"public_name":"Sergei Melodyn","id":162475,"is_tutor":true},"id":28711,"body":"Можно же просто загуглить задачки и порешать их )\n```\n0 + 0 = 0\n0 + 1 = 1\n1 + 0 = 1\n1 + 1 = 10 (переносим единицу влево)\n```","topic_id":13509},{"creator":{"public_name":"Владимир cssfish","id":101628,"is_tutor":false},"id":28704,"body":"не :) еще раз. Как мы складываем в десятичной? При добавлении к числу 1 - берем следующую ЦИФРУ. \nну вот в десятичной берем 10+1 ( тут после 0 следующая цифра -1), потому 10+1=11. т.е. мы в числе типа 10 работаем не с десятками а с единицами, т.е. с правой цифрой (в примере с 10 - с 0).\n\nили скажем 15+1 (после 5 следующая -6), поэтому 15+1=16\nили скажем 19+1 (после 9 - НЕТУ! добавляем цифру слева, правую обнуляем. а так как слева уже есть 1, то получим 1+1=2), итого 19+1 = (1+1)0 = 20. во как :))\n\nа теперь - к двоичной. Складываем 10+1 (после 0 - 1, ок), получаем 10+1 = 1(0+1) = 11\nа затем 11+1 - как? к правой 1 в числе 11 ничего недобавить (ЦИФР больше нет), значит переносим. влево. НО блин там тоже 1, и ее тоже не увеличить (ЦИФР больше нет :) \nЗначит переносим еще раз, и выходит 11+1 = 1(1+1) = (1+1)0 = (10)0 = 100 \n\n** \nежели вообще никак, см тулзу от курса harvard cs50 http://cdn.cs50.net/2016/x/psets/0/pset0/bulbs.html\n(слева внизу отключи bulbs и увидишь цифры).\nТам ВСЕ кликабельно, попробуй.","topic_id":13509},{"creator":{"public_name":"Zaid Shikov","id":167137,"is_tutor":false},"id":28701,"body":"теперь понял! наконец то, спасибо!","topic_id":13509},{"creator":{"public_name":"Zaid Shikov","id":167137,"is_tutor":false},"id":28710,"body":"прошу прощения за тугодумство... хочу понять как черт возьми","topic_id":13509},{"creator":{"public_name":"Zaid Shikov","id":167137,"is_tutor":false},"id":28709,"body":"последний абзац немного не понял... если нельзя добавить с лева то нужно переносить в право? а потом если и там нельзя добавить то опять назад? и почему так происходит, т.е почему так нужно делать? и как эти цифры поменялись в результате этих переносов????????????????????????????????????","topic_id":13509},{"creator":{"public_name":"Zaid Shikov","id":167137,"is_tutor":false},"id":28712,"body":"все. догнал!","topic_id":13509},{"creator":{"public_name":"Sergei Melodyn","id":162475,"is_tutor":true},"id":28352,"body":"```\nДвоичная | Десятичная\n 1 | 1\n 11 | 3\n-------сумма---------\n 100 | 4\n```\n11 + 1 == 3 + 1 == 4 == 100","topic_id":13509}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":49360,"title":"Не могу понять, почему 11 + 1 = 100?","plain_title":"Не могу понять, почему 11 + 1 = 100? ","creator":{"public_name":"Вадим Зотов","id":326695,"is_tutor":false},"comments":[{"creator":{"public_name":"Вадим Зотов","id":326695,"is_tutor":false},"id":105857,"body":"http://joxi.ru/ZrJkWkMTnnbMlm\n\nЯ вот про этот блок, не понимаю.","topic_id":49360},{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":105856,"body":"Речь, скорее всего, о двоичной системе счисления. Тогда 11+1 будет равно 100","topic_id":49360},{"creator":{"public_name":"Вадим Зотов","id":326695,"is_tutor":false},"id":105862,"body":"**Максим Литвинов**, а, просто ноль прибавляем\n1 + 1 = 1 + ноль = 10\n10 + 1 = 10 + ноль = 100\n\nПонятно, спасибо.","topic_id":49360},{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":105859,"body":"Ну да, здесь сложение двух двоичных чисел. Внизу приведено их сложение столбиком. Все просто, складывается по разрядам, как и с десятичными числами. Только 1+1 получается 10. Вспомните сложение столбиком, как в школе","topic_id":49360},{"creator":{"public_name":"Вадим Зотов","id":326695,"is_tutor":false},"id":105858,"body":"**Максим Литвинов**, http://joxi.ru/ZrJkWkMTnnbMlm\n\nЯ вот про этот блок, не понимаю.","topic_id":49360},{"creator":{"public_name":"Trenersambo","id":343761,"is_tutor":false},"id":120274,"body":"Как я понимаю это:-)\n11+1=100 , что ж логично для двоичной системы:\n\n**11** = это ТРИ (1 -одна двойка & 1 - одна единица)\n\n**1** = это ОДИН ( 1 - одна единственная единица, можно записать как 01)\n\n**100** = это ЧЕТЫРЕ (1 - одна четверка & ноль двоек & ноль единиц)\n\nПолучилось, что (2+1) + (1) = (4+0+0) или \"11\" + \"1\" = \"100\"\n\nТак просто, **для примера**: число 24 в двоичном исчислении это \"11000\", т.е в числе 24 содержится:\n\n- 16 - 1 штука\n- 8 - 1 штука\n- 4 - 0 штук\n- 2 - 0 штук,\n- 1 - 0 штук. \n\n24 это 1 1 0 0 0\n\n24 = 16 + 8 +0 + 0+0\n\n Всем печенек)","topic_id":49360},{"creator":{"public_name":"Ольга","id":379229,"is_tutor":false},"id":146454,"body":"вообще не могу понять пока что двоичную систему ...(((","topic_id":49360}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":51803,"title":"Вечер добрый! В этом уроке даются рекомендации по выбору языка. А Вы бы могли посоветовать, с чего мне начать в моем случае - мне 44 года, юрист, ранее программированием вообще не занимался... На просторах инета я читал рекомендации, что новичкам с отсутствием тех. бэкграунда имеет смысл смотреть на JS и PHP, т.к. порог вхождения не такой высокий, не требуется профильное тех. образование. Что бы Вы мне посоветовали, как специалисты?","plain_title":"Вечер добрый! В этом уроке даются рекомендации по выбору языка. А Вы бы могли посоветовать, с чего мне начать в моем случае - мне 44 года, юрист, ранее программированием вообще не занимался... На просторах инета я читал рекомендации, что новичкам с отсутствием тех. бэкграунда имеет смысл смотреть на JS и PHP, т.к. порог вхождения не такой высокий, не требуется профильное тех. образование. Что бы Вы мне посоветовали, как специалисты? ","creator":{"public_name":"Сергей","id":345254,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":110670,"body":"Добрый день, Сергей. Все зависит от направления, которое вам интересно. Если вам интересен фронтенд, работа приложения на стороне клиента, выбирайте JS фронтенд, если бэкенд, выбирайте PHP или Node.js. Если вам интересны нейросети, стоит выбрать Python, он тоже подходит для изучения новичками. На самом деле не очень важно, с какого языка начинать обучение, работать в итоге вы можете совсем на другом. Еще можно изучить вакансии в том городе, где вы живете. Посмотреть, каких специалистов чаще ищут. Особо долго не думайте над этим вопросом, выбирайте и вперед! ","topic_id":51803}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":10537,"title":"зачем он швырнул ей деньги? это некрасиво, ин май хамбл опинион.","plain_title":"зачем он швырнул ей деньги? это некрасиво, ин май хамбл опинион. ","creator":{"public_name":"","id":141162,"is_tutor":false},"comments":[{"creator":{"public_name":"k c","id":66218,"is_tutor":false},"id":23183,"body":"Не то чтобы очень смешно","topic_id":10537},{"creator":{"public_name":"R. D.","id":3,"is_tutor":false},"id":21840,"body":"Это шутка :)","topic_id":10537},{"creator":{"public_name":"","id":141162,"is_tutor":false},"id":23405,"body":"юмор с примесью азиатчины) не обижайтесь, Рахим, это всего лишь шутка:)","topic_id":10537}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":28286,"title":"ссылка\n> _Подкаст Хекслета / Информация, энтропия и нечеловеческие данные_\n\nведет на страницу 404","plain_title":"ссылка Подкаст Хекслета / Информация, энтропия и нечеловеческие данные ведет на страницу 404 ","creator":{"public_name":"Dmitry Isaev","id":228301,"is_tutor":false},"comments":[{"creator":{"public_name":"Сергей К.","id":5174,"is_tutor":false},"id":61031,"body":"Дмитрий, спасибо, что обратили внимание. Ссылку поправил.","topic_id":28286},{"creator":{"public_name":"Dmitry Isaev","id":228301,"is_tutor":false},"id":61057,"body":"**Сергей К.**, Спасибо вам.","topic_id":28286}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":20043,"title":"За глаза и мутантов спасибо, хохотала нечеловечески))","plain_title":"За глаза и мутантов спасибо, хохотала нечеловечески)) ","creator":{"public_name":"Ирина Гулынина","id":192285,"is_tutor":false},"comments":[{"creator":{"public_name":"Тимофей Ч.","id":207506,"is_tutor":false},"id":52096,"body":"Кстати говоря, у него и правда ровно 19 глаз)","topic_id":20043}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":66294,"title":"ВСем привет!Hi everybody.\nSorry, I'm a new in HEXLET, and unfortunately don't understand much here. for instance, how I should pass the tests for free lessons, where and how.\nКОроче, братья по разуму, объясните новичку, что нужно сделать в бесплатных курсах. Ничего не понимаю. Например, Git .хорошо. рассказали.что ткое commit, заставили сдeлать Read.me к пустому проекту, а дальше что? Где внешний репозиторий, GITHUB?...\nЗачем-то заставили установить MS VISUAL STUDIO под Linux, Зачем он мне нужен?...\n\nКстати, ремарка разработчикам учебнойэкосистемы, в частности, этого редактора. Вы знаете, что команды Shift-L, Super-L здесь не проходят, потому что это вполне возможные и предопределенне клавишние комбинации в наших ОС. Это значит, что заглавную L с клавиатуры здесь не ввести...\nно это не беда, беда в том, что я ничего не понимаю, что должен сделать в уроках... Где бы об этом почитать.","plain_title":"ВСем привет!Hi everybody. Sorry, I'm a new in HEXLET, and unfortunately don't understand much here. for instance, how I should pass the tests for free lessons, where and how. КОроче, братья по разуму, объясните новичку, что нужно сделать в бесплатных курсах. Ничего не понимаю. Например, Git .хорошо. рассказали.что ткое commit, заставили сдeлать Read.me к пустому проекту, а дальше что? Где внешний репозиторий, GITHUB?... Зачем-то заставили установить MS VISUAL STUDIO под Linux, Зачем он мне нужен?... Кстати, ремарка разработчикам учебнойэкосистемы, в частности, этого редактора. Вы знаете, что команды Shift-L, Super-L здесь не проходят, потому что это вполне возможные и предопределенне клавишние комбинации в наших ОС. Это значит, что заглавную L с клавиатуры здесь не ввести... но это не беда, беда в том, что я ничего не понимаю, что должен сделать в уроках... Где бы об этом почитать. ","creator":{"public_name":"Игорь Каро","id":462282,"is_tutor":false},"comments":[{"creator":{"public_name":"Игорь Каро","id":462282,"is_tutor":false},"id":139332,"body":"Приветствую, Максим! Спасибо за отклик. К Уроку возможно и не возникло, как-то продвигаюсь. Но в целом, привлекает, интерес появляется.","topic_id":66294},{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":139420,"body":"Добрый день, Игорь! Вы правы, ревью - это мощный механизм, с его помощью вы можете поделиться в обсуждениях своим кодом. Про ревью у нас есть отличная [статья](https://help.hexlet.io/ru/articles/111135-kod-revyu), посмотрите её. Вы всё верно сделали - задали свой вопрос и приложили к нему ссылку на ревью. Так я смогу увидеть и ваше решение и вывод тестов.\n\nЧто касается упражнения, то вы на правильном пути, нужно поправить совсем немного. Обратите внимание на разницу в абсолютных и относительных путях. Абсолютный путь начинается с символа `/` и он стартует от корня файловой системы. А относительный путь не содержит слеш в начале и он начинается от текущей директории. Посмотрите на вывод тестов:\n\n```\ntee: /config/myfile: No such file or directory\n```\nВывод говорит о том, что директория */config/myfile* не существует. Обратите внимание, что директория * config* где нужно создать файл, находится в текущей директории упражнения, поэтому значительно проще указать к ней относительный путь (без ведущего слеша)\n","topic_id":66294},{"creator":{"public_name":"Игорь Каро","id":462282,"is_tutor":false},"id":139335,"body":"Путанно пока с код-ревью. Ничего до конца не понятно. создаю ревью и обсуждение, какими-то туманными манипуляциями копирую ссылку, что на что, не понимаю. Переписка не сохрняется, свой текст не вижу, почему все так сложно...","topic_id":66294},{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":139285,"body":"Приветствую, Игорь! Давайте будем последовательно разбираться со всеми вопросами. Предлагаю поступить так: проходите курсы и если по какому-то из уроков возник вопрос, задавайте его в обсуждениях к этому уроку. Так нам будет проще понять контекст, плюс ребята, у которых возникают аналогичные вопросы, смогут быстрее найти ваш топик и ответ в нём. Также рекомендую вам прочитать нашу [статью](https://help.hexlet.io/ru/articles/111495-kak-pravilno-zadavat-voprosy), она поможет быстрее получать ответы на свои вопросы\n\nЯ правильно понял, что по этому уроку вопросов не возникло? ","topic_id":66294},{"creator":{"public_name":"Игорь Каро","id":462282,"is_tutor":false},"id":139336,"body":"Объясните,пожалуйста, что тут не так и что я делаю не так, если не затруднит, в том числе в формировании ревью и обсуждения. Это придется делать часто, важно понимать.\nhttps://ru.hexlet.io/code_reviews/577803","topic_id":66294}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}},{"id":63715,"title":"Про разноглазых смешно, но зачем так бросать девушке деньги на блокнот? ","plain_title":"Про разноглазых смешно, но зачем так бросать девушке деньги на блокнот? ","creator":{"public_name":"Юлия","id":443290,"is_tutor":false},"comments":[{"creator":{"public_name":"Maksim Litvinov","id":198906,"is_tutor":true},"id":134174,"body":"Приветствую, Юлия! Добро пожаловать на Хекслет! Привносим немного юмора, чтобы разбавить серьёзность темы","topic_id":63715}],"communitable":{"parent_entity_name":null,"parent_entity_url":null,"entity_name":"Человеческие и компьютерные языки","entity_url":null,"active":true}}],"lesson":{"exercise":null,"units":[{"id":1803,"name":"theory","url":"/courses/introduction_to_programming/lessons/language/theory_unit"}],"links":[{"id":427050,"name":"Системы счисления","url":"https://guides.hexlet.io/ru/numeral-systems/\n"}],"ordered_units":[{"id":1803,"name":"theory","url":"/courses/introduction_to_programming/lessons/language/theory_unit"}],"id":878,"slug":"language","state":"approved","name":"Человеческие и компьютерные языки","course_order":20,"goal":"Разбираемся, чем является язык программирования. Почему синтаксис языка – это хотя и необходимая, но не самодостаточная вещь. Обсуждаем, с какого языка начинать обучение и насколько важен выбор на этом этапе.","self_study":null,"theory_video_provider":"youtube","theory_video_uid":"OUWw6jGCv-w","theory":"## Транскрипт урока\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Язык нужно выбрать достаточно хороший, достаточно простой, известный и с хорошими возможностями. В процессе профессионального роста вы БУДЕТЕ переключаться между языками, использовать сразу несколько языков и технологий одновременно и это не будет для вас проблемой, так же как переход с печатной машинки на Microsoft Word — это не проблема.\n\nМы выбираем JavaScript в качестве первого языка программирования и в качестве инструмента для изучения программирования. Программы, написанные на JavaScript почти всё время запущены в вашем компьютере, поскольку большая часть веб-сайтов, включая тот, на котором вы смотрите это видео, используют JavaScript. Он невероятно популярный и становится всё более популярным с каждым годом.\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- Мы выбрали JavaScript, потому что он простой, очень популярный и работает почти везде.\n- JavaScript обычно используется для написания веб-сайтов, мобильных приложений, программного обеспечения для серверов и многого другого.\n- Этот сайт в эту самую секунду использует JavaScript.\n- Программы, написанные на JavaScript, запущены сейчас на ваших компьютерах.\n"},"lessonMember":null,"courseMember":null,"course":{"start_lesson":{"exercise":null,"units":[{"id":1801,"name":"theory","url":"/courses/introduction_to_programming/lessons/intro/theory_unit"}],"links":[{"id":427047,"name":"Inside your computer - Bettina Bair","url":"https://www.youtube.com/watch?v=AkFi90lZmXA"},{"id":427048,"name":"Punch Card Programming - Computerphile","url":"https://www.youtube.com/watch?v=KG2M4ttzBnY"},{"id":427049,"name":"The Future of Computer Intelligence Is Everything but Artificial","url":"https://www.wired.com/2014/06/the-future-of-computer-intelligence-is-everything-but-artificial/"}],"ordered_units":[{"id":1801,"name":"theory","url":"/courses/introduction_to_programming/lessons/intro/theory_unit"}],"id":876,"slug":"intro","state":"approved","name":"Что такое компьютер?","course_order":10,"goal":"Первый урок посвящен знакомству с Тотой – главным персонажем Хекслета. Вместе с нашим героем отвечаем на простые, но важные вопросы: Что такое компьютер? Умный ли он? Говорит ли он на языке программирования?","self_study":null,"theory_video_provider":"youtube","theory_video_uid":"rrRZZ_3licM","theory":"## Транскрипт урока\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```javascript\nconst factorial = (n) => {\n const iter = (current, acc) => {\n if (current === 0) {\n return acc\n }\n return iter(current - 1, acc * current)\n }\n\n return iter(n, 1)\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"},"id":143,"slug":"introduction_to_programming","challenges_count":0,"name":"Введение в программирование","allow_indexing":true,"state":"approved","course_state":"finished","pricing_type":"free","description":"В этом курсе вы изучите основы программирования. Вы узнаете больше о языках программирования, их синтаксисе и правильном выборе языка для обучения. В итоге вы научитесь использовать функции, условия и циклы, а также напишите свои первые программы на JavaScript. Знания из этого курса пригодятся, если вы решите заниматься программированием и познакомиться с ключевыми принципами написания хорошего кода.","kind":"sandbox","updated_at":"2026-02-06T11:25:43.725Z","language":"javascript","duration_cache":18000,"skills":["Использовать основные языковые конструкции: условия, циклы, функции и другие","Разделять код на модули для повторного использования и отсутствия конфликта имён","Понимать ключевые концепции для написания хорошего кода, такие как чистота и детерминированность"],"keywords":["основы javascript","чистый код","алгоритмы","логика"],"lessons_count":20,"cover":"https://hexlet.io/rails/active_storage/representations/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTI1NzIsInB1ciI6ImJsb2JfaWQifX0=--3444a6a2b32ba0a1b370387ae75d0c63f10ad54f/eyJfcmFpbHMiOnsiZGF0YSI6eyJmb3JtYXQiOiJwbmciLCJyZXNpemVfdG9fZmlsbCI6WzYwMCw0MDBdfSwicHVyIjoidmFyaWF0aW9uIn19--6067466c2912ca31a17eddee04b8cf2a38c6ad17/image.png"},"recommendedLandings":[],"lessonMemberUnit":null,"accessToLearnUnitExists":true,"accessToCourseExists":true},"url":"/courses/introduction_to_programming/lessons/language/theory_unit","version":"0b0c6d4ebbd40fd58630a0dd89cc25544ccdf24e","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 style="margin-bottom:var(--mantine-spacing-xl)" class=""><div class="ratio ratio-16x9"><iframe width="100%" height="auto" src="//www.youtube.com/embed/OUWw6jGCv-w" loading="lazy" allowFullScreen="" title="video"></iframe></div></div><div class="paywalled m_d08caa0 mantine-Typography-root"><h2 id="heading-2-1">Транскрипт урока</h2>
<p>Мы назвали систему нажимания кнопок 'языком'. Рычаг, видимо, это отдельная штука, он как команда "ЗАПУСТИТЬ". Мы вводим код кнопками и ЗАПУСКАЕМ его рычагом.</p>
<p>Знаете, как лингвисты обсуждают грамматику, структуру слов и подобные вещи? Их не особо интересуют романы, песни или рассказы, они больше заинтересованы в языке, который используется для этих романов, песен и рассказов. Их интересует код. Большинство людей, напротив, заинтересовано в историях и смысле. Не только в книгах и фильмах, но и в жизни. Когда я прошу свою девушку купить мне новый альбом, потому что я делаю нелепые рисунки для этих уроков, меня интересует результат, цель, а не этимология и структура слова "альбом".</p>
<p>Можно считать, что у языка есть два... компонента или две особенности: грамматика и назначение. Языки программирования похожи в этом смысле, но поскольку они намного проще, чем человеческие, грамматика у них не на первом месте, но синтаксис - порядок слов и словообразование - важен. А для назначения, для понятия 'смысл' программисты используют модное слово "семантика".</p>
<p>Попробуем сравнить язык магического ящика Тоты с каким-нибудь современным языком программирования.</p>
<p>У этого ящика очень сложный синтаксис, с символами Х и О сложно работать. А вот этот современный код выглядит... хмм, как английский язык! Этот синтаксис намного легче освоить, как минимум можно догадаться, что значит каждое слово.</p>
<p>Набор правил, который описывает, как символы и слова могут использоваться — это синтаксис.</p>
<p>Вы увидите, что некоторые языки программирования имеют похожий синтаксис, а некоторые — экзотический, необычный.</p>
<p>Семантику или смысл увидеть сложнее, потому что он неявный. Какое назначение у этого кода? Это огненная вспышка, как мы уже поняли. Какое назначение у этого кода? Возможно, вы догадались: он выводит на печать фразу задом наперед. Смысл, конечный результат запущенного кода - это семантика.</p>
<p>В современных языках программирования связь между кодом и его видимым назначением можно использовать, чтобы судить о качестве кода. Если вы смотрите на код и быстро улавливаете его назначение, то это хороший код. Если при взгляде на код у вас возникает мысль "что это, чёрт возьми, такое?!", вероятно, он не слишком хороший. Это подводит нас к важной идее: код пишется для людей. Компьютерам всё равно, легко ли читается код: для них любой код легкочитаемый.</p>
<p>Вы можете подумать - ну, я хочу писать приложения и создавать веб-сайты, поэтому естественно мне важно назначение - семантика, так же как для писателя — сюжет, а не лингвистика. Так зачем беспокоиться о синтаксических конструкциях? Язык программирования - это инструмент, с помощью которого вы рассказываете свою историю, чем бы она ни была: сайтом, приложением или ботом. И чем лучше вы знаете свой инструмент, тем меньше вы о нём думаете и тем больше можете сделать. Так же как писатель должен уметь выражать идеи нужными словами и использовать синтаксические конструкции, которые будут понятны людям.</p>
<p>К счастью, у языков программирования очень простой синтаксис по сравнению с языками, на которых говорят люди. Так что не беспокойтесь, не смотря на то, что нам придётся изучать синтаксис, эта задача будет достаточно простой.</p>
<p>Получается... программировать легко? Если компьютеры тупые и выполняют только то, что мы им говорим, а синтаксис языка программирования — простая штука, всё вместе должно быть достаточно лёгкой задачей, так?</p>
<p>Эмм... нет. Если честно, то программирование — не настолько лёгкая задача. Ну, да, написать школьное сочинение легко по сравнению с "Войной и миром". А докторская диссертация по квантовой физике — это вообще другой уровень. Так что не стоит обобщать. Любая деятельность из перечисленных — варианты письменного изложения, но сравнивать их и судить о "письменном изложении" не целесообразно. Программирование может быть простым, а может быть сложным, в зависимости от того, кто и что делает.</p>
<p>Вы быстро поймёте, что синтаксис легко изучить, но сам по себе он вам не поможет. Это необходимая вещь, но не самодостаточная.</p>
<p>На протяжении следующих уроков мы сфокусируемся на семантике, назначении и рассмотрим несколько крутых идей, которые позволили появиться компьютерам, интернету, роботам и мобильным телефонам. Параллельно мы изучим синтаксис.</p>
<p>Последний момент, который мы затронем перед погружением — это, мм, какой язык выбрать? Их так много и это может казаться критическим моментом. Момент, конечно, критический, но не потому что "нужно принять окончательное решение, которое повлияет на всю оставшуюся жизнь", а потому что мы должны понимать, что выбор языка программирования — это как выбор инструмента для ввода текста, а не человеческого языка.</p>
<p>Вы можете писать что-то ручкой на бумаге, использовать печатную машинку, компьютер или доску. У каждого инструмента свои возможности и ограничения. И если вы хотите стать писателем, не так важно чем вы пользуетесь для ввода текста - ручкой или кнопками клавиатуры. Мы хотим изучать программирование, а не только язык программирования.</p>
<p>Язык нужно выбрать достаточно хороший, достаточно простой, известный и с хорошими возможностями. В процессе профессионального роста вы БУДЕТЕ переключаться между языками, использовать сразу несколько языков и технологий одновременно и это не будет для вас проблемой, так же как переход с печатной машинки на Microsoft Word — это не проблема.</p>
<p>Мы выбираем JavaScript в качестве первого языка программирования и в качестве инструмента для изучения программирования. Программы, написанные на JavaScript почти всё время запущены в вашем компьютере, поскольку большая часть веб-сайтов, включая тот, на котором вы смотрите это видео, используют JavaScript. Он невероятно популярный и становится всё более популярным с каждым годом.</p>
<p>Ну что, давайте начнем программировать!</p>
<h2 id="heading-2-2">Дополнение к уроку</h2>
<p>Вы будете писать программы на современном языке программирования, и большую часть времени не будете сталкиваться с двоичной системой — теми нулями и единицами или <em>битами</em>. Но вы должны понимать <strong>идею</strong>, которая лежит в основе двоичных чисел. Вот короткое и простое иллюстрированное объяснение:</p>
<p><img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTI1NzMsInB1ciI6ImJsb2JfaWQifX0=--bd6ee7d3bffe116b43517b466593a02e961e490b/binary1.png" alt="binary" loading="lazy"/>
<img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTI1NzQsInB1ciI6ImJsb2JfaWQifX0=--e562699d69239c923ac31372b83a53e03e3b0d21/binary2.png" alt="binary" loading="lazy"/>
<img style="--image-object-fit:contain;width:auto" class="m_9e117634 mantine-Image-root" src="/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsiZGF0YSI6MTI1NzUsInB1ciI6ImJsb2JfaWQifX0=--b4086cc93d02071f44450df722ebcb77ad4023ca/binary3.png" alt="binary" loading="lazy"/></p>
<h2 id="heading-2-3">Выводы</h2>
<h3 id="heading-3-4">Два аспекта языков</h3>
<ul>
<li>У языка программирования есть два аспекта:
<ul>
<li>Синтаксис (правила написания кода, правописание, порядок слов)</li>
<li>Семантика (идея, смысловая нагрузка или назначение)</li>
</ul>
</li>
<li>Некоторые языки программирования имеют похожий синтаксис</li>
<li>Некоторые языки имеют экзотический, необычный синтаксис</li>
<li>Семантику сложно увидеть, она неявная</li>
</ul>
<h3 id="heading-3-5">Синтаксис и семантика</h3>
<ul>
<li>В современных языках <em>хороший код</em> означает легко понятную семантику</li>
<li>Если понять то, что делает код, сложно, то код не слишком хороший</li>
<li>Синтаксис легко изучать</li>
<li>Синтаксис необходимо знать, но этого недостаточно</li>
</ul>
<h3 id="heading-3-6">Выбор языка</h3>
<ul>
<li><strong>Не так важно</strong>, с какого языка начинать</li>
<li>Вы будете переключаться на разные языки и использовать несколько языков и технологий одновременно. Такова реальность современного программирования.</li>
<li>Мы выбрали JavaScript, потому что он простой, очень популярный и работает почти везде.</li>
<li>JavaScript обычно используется для написания веб-сайтов, мобильных приложений, программного обеспечения для серверов и многого другого.</li>
<li>Этот сайт в эту самую секунду использует JavaScript.</li>
<li>Программы, написанные на JavaScript, запущены сейчас на ваших компьютерах.</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/introduction_to_programming/lessons/language/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 / 20</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/introduction_to_programming/lessons/language/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-CdBlNCiQ.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-nkZBEvfU.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>