Выбрать язык программирования бывает нелегко, особенно новичкам. Некоторые ЯП подходят только для определенных целей: написания скриптов или веб-программирования. Такие особенности необходимо учитывать в процессе выбора средства написания приложений.
Далее предстоит выяснить, какой язык программирования выбрать новичку. Необходимо разобраться в самых популярных ЯП, а также их областях применения и особенностях. Предложенная информация ориентирована на широкую публику. Она также пригодится опытным разработчикам, которые выбирают еще один язык для изучения.
Programming Language – это…
Google указывает на то, что programming language (или язык программирования) – это формальный язык, который предназначается для записи компьютерных приложений. Он определяет набор лексических, синтаксических и семантических правил, отвечающих за внешний вид программного обеспечения и действия, которые выполнит исполнитель (обычно – ЭВМ или компьютер) под его управлением.
Языки программирования необходимы для написания компьютерных, мобильных приложений. Они представляют собой набор правил, с помощью которых целевое устройство сможет выполнить тот или иной вычислительный процесс, организовать управление разнообразными объектами и так далее.
Google подчеркивает, что ЯП отличается от естественных языков. Он предназначается для управления ЭВМ, а естественные языки используются для непосредственного общения людей друг с другом. Большинство ЯП используют специальные конструкции для определения и манипулирования различными структурами данных, а также управления вычислительными процессами.
Классификация
Google указывает на то, что в мире отсутствует единая общепринятая система семантической таксономии языков программирования. Это значит, что четкой классификации на данный момент нет. Существует множество характеристик и черт, по которым допустимо производить классификацию ЯП.
Конкретный язык разработки в большинстве случаев имеет больше одного языка-предка. Многие из них создаются в качестве сочетания разнообразных ЯП. Несмотря на это, Google допускает некую классификацию языков:
- низкий уровень;
- высокий уровень;
- безопасный ЯП;
- небезопасный ЯП;
- компилируемые;
- интерпретированные;
- встраиваемые.
Далее предстоит каждый класс рассмотреть более подробно. Эту информацию необходимо запомнить перед непосредственным изучением конкретных ЯП.
Низкий и высокий уровень
Формально ЯП не имеет такого понятия, как «уровень». Этот термин в разработке программного обеспечения выступает в качестве условного и обычно обозначает:
- «приближенность» языка к естественному человеческому;
- «удаленность» семантики от машинного кода целевой архитектуры процессора – наименьший масштаб преобразований, которые должен перенести программный код перед исполнением.
Низкоуровневые языки не имеют встроенных функций. Они будут «общаться» с конкретным процессором, поэтому код одного ПК не может применяться на другом. У каждого производителя процессоров свой собственный набор инструкций. Здесь наиболее распространенными выступают машинные коды и Ассемблер.
Высокоуровневый язык имеет достаточно простой синтаксис – он максимально приближен к английскому языку. Google указывает, что такие средства разработки упрощены и быстрее осваиваются пользователями. Высокоуровневые ЯП делятся на:
- Императивные (процедурные). Они используются для написания инструкций, задают последовательность команд для обработки процессором.
- Предметно-ориентированные (декларативные). Определяют результаты кода. Примером может послужить поиск по запросу через SQL.
- Объектно-ориентированные. В их основе заложены объекты (кнопка, пользователь, сообщение), каждый из которых имеет свои характеристики. Объекты, имеющие схожие параметры, допустимо объединять в классы.
По «высокоуровневости» средства разработки делятся на несколько поколений. Всего их 5 штук. Каждое обладает своими ключевыми особенностями.
Первое поколение – это машинные средства программирования. Google указывает на то, что такие ЯП реализованы непосредственно на аппаратном уровне.
Второе поколение – ассемблер. В простейшем случае он отвечает за реализацию мнемоники над машинными средствами разработки для записи команд и их параметров (в том числе – адрес в памяти). Многие вариации ассемблера поддерживают развитый макроязык. Также в простейшем случае обратная разработка машинных кодов не позволяет однозначно восстанавливать приложения в ассемблере. Не получится восстановить имена переменных, могут быть не распознаны недокументированные операции. Оба поколения относят к низкому уровню.
Самое больше практическое применение получили средства разработки третьего поколения. Они не являются полноценными высокоуровневыми, но претендуют на их звание. Это конструкции «высокого уровня», которые находят однозначное соответствие инструкциям в машине фон Неймана.
Более «высокоуровневыми» считаются средства программирования четвертого и пятого поколения. К четвертому относятся языки опций и параметров, комбинированные пакеты информационных баз, а также генераторы программного обеспечения. Здесь наиболее значимая подгруппа – это функциональные ЯП. Основная их часть – это средства программирования высшего порядка.
Пятое поколение выделяется, но не выступает общепринятым – это «язык сверхуровня». Google относит сюда средства разработки, реализация которых подразумевает существенную алгоритмическую составляющую (когда интерпретация небольшого исходного кода предусматривает достаточно сложные вычисления и расчеты), поэтому данную категорию иногда зовут четвертым поколением, но дополненную базой знаний. Обычно сюда относятся логические ЯП.
Безопасные и небезопасные
Google указывает на то, что безопасным средство разработки выступает, если программы на нем, которые принимаются компилятором в качестве правильно построенных, в динамике никогда не выйдут за рамки допустимого поведения. Они могут содержать ошибки, но некритичные.
Небезопасные ЯП – это средства разработки, в которых активно встречаются ситуации ослабления типизации (приведение типов), а также прямого его нарушения. Ошибки доступа к памяти в таких языках Google называет нормальной ситуацией.
Компилируемые, встраиваемые и интерпретируемые
Задумываясь, с какого языка начать изучать программирование, необходимо сначала запомнить, что есть компилируемые, встраиваемые и интерпретируемые ЯП. Они характеризуют три принципиально разных способа реализации программных кодов. О них необходимо запомнить следующее:
- Компиляция – это когда исходный код программного обеспечения сначала преобразуется в машинный специальным программным обеспечением, которое носит название компилятора. В итоге получится исполняемый модуль. Google говорит о том, что он может быть запущен на исполнение в качестве отдельного программного обеспечения (ПО).
- Интерпретация, согласно Google, указывает на то, что исходный код выполняется непосредственно, операция за операцией. Это приводит к тому, что без наличия интерпретатора программное обеспечение не может быть запущено.
- Встраивание языка рассматривается как «реализация без трансляции» – ЯП выступает синтаксическим и семантическим подмножеством другого средства разработки, без которого он не существует. Google подчеркивает, что встраиваемые языки добавляют еще 4 способа реализации.
Реализация некоторых ЯП занимает промежуточную ступень между компиляцией и интерпретацией. Приложение будет компилироваться не в машинный ЯП, а в машинно-независимый код низкого уровня (байт-код). Далее он обрабатывается виртуальной машиной. Google подчеркивает, что его часть может быть преобразована в машинный непосредственно при выполнении приложения по технологии компиляции just-in-time compilation.
Наиболее популярные языки
Чтобы выбрать языки разработки, нужно знать особенности каждого варианта-претендента. Далее будут представлены самые популярные ЯП среди программистов, которые можно попытаться начать изучать новичку. Предложенный список порадует не только начинающих разработчиков, но и их более опытных коллег.
JavaScript
JS – средство разработки, которое поможет превратить статические веб-страницы в динамические. Он дает возможность элементам сайта перемещаться, выполнять разнообразные операции, а также реагировать на пользовательские действия.
JavaScript рекомендуется изучать тем, кто интересуется веб-программированием и знаком с несколькими другими языками – HTML и CSS. JS-код легко тестируется в браузере.
Преимущества JS:
- поддержка готовых плагинов и скриптов;
- востребованность на рынке труда;
- постоянное развитие ЯП;
- высокий уровень производительности.
Google называет синтаксис JavaScript понятным и лаконичным. Именно поэтому данное средство разработки хорошо подойдет для начинающих программистов.
Google выделяет следующие его недостатки:
- трудности при выявлении ошибок – на ранних этапах сделать это весьма проблематично;
- синтаксические особенности – у новичков, которые ранее не имели дел с разработкой, не исключены сложности на первых порах;
- ошибки и сбои языка по непонятным причинам – это вызвано его быстрой первоначальной разработкой.
Заработать специалист-новичок на JS сможет от 50000 рублей в месяц.
HTML и CSS
Google называет HTML и CSS языками разметки. С их помощью создаются веб-сайты. HTML определяет структуру и наполнение текстового документа: ссылки, текстовые блоки, заголовки и так далее. CSS, согласно Google, задает стили: цвета, фоны, шрифты и им подобные элементы.
Формально HTML и CSS – это не ЯП, но без них создать с нуля веб-сайт не получится. Именно поэтому они выступают важными инструментами IT-специалистов и активно осваиваются разработчиками.
Преимущества:
- «чистый» код сайтов с небольшим весом по сравнению с веб-ресурсом, созданном на конструкторе;
- HTML, а также CSS – единственные инструменты, допускающие создание сайта «с нуля», что влечет за собой востребованность специалистов, знающих эти «ЯП»;
- простота освоения;
- наличие хорошей документации и множества информации об особенностях работы HTML/CSS в Сети.
Недостатками Google считает всего два момента: CSS-верстка может по-разному восприниматься браузерами, а также наличие неплохих конкурентов – CMS-систем и конструкторов. Некоторые заказчики предпочитают пользоваться именно ими.
C#
Можно начать программировать на C#. Google характеризует его как объектно-ориентированный язык. Он был разработан компанией Microsoft. Это часть C-подобных языков. В это семейство, согласно информации из Google, включены C, C++, Java и некоторые другие.
C# – относительно молодой, но популярный язык. Он стремительно развивается. На его базе разрабатывают разные проекты: игры, приложения для телефонов и компьютеров, драйверы, защитное программное обеспечение.
Преимущества:
- простота;
- высокий уровень популярности;
- ценность – достигнута за счет того, что на C# разрабатываются крупные проекты;
- низкий порог вхождения;
- поддержка от Microsoft.
Существенный недостаток ЯП Google описывает как «доступность». Бесплатно писать на C# имеют право только небольшие организации. Более крупным придется тратиться на лицензию.
C/C++
C/C++ – лучшие языки программирования для тех, кто не боится сложностей и хочет писать кроссплатформенные проекты. C++ – объектно-ориентированный. На нем пишутся сложные сервисы, требующие высокой скорости обработки и производительности. Он создавался как более совершенный C, который сохранял бы с ним обратную совместимость.
C++, как говорит Google, предоставляет полный контроль над управлением памятью. Это и преимущество, и недостаток. Разработчики получат контроль над ресурсами, но такие манипуляции потребуют высокого уровня квалификации.
Преимущества:
- совмещение качеств высокоуровневых и низкоуровневых средств разработки;
- наличие огромного количества фреймворков и библиотек;
- универсальность в плане использования – на C++ можно писать, что угодно;
- высокий уровень функциональности.
Недостатком Google называет то, что C++ более сложен в изучении, чем другие языки. А еще – у него более трудный синтаксис. Новичкам в разработке проблематично быстро изучить C++ с нуля без специализированных курсов.
Java
Java – еще одно очень популярное средство в сфере разработки. Google называет его кроссплатформенным с поддержкой ООП. Коды на Java запускаются и на умных холодильниках, и на телефонах. Такой результат достигается за счет JVM – виртуальной машины, которая выполняет роль посредника между кодом и устройством.
Если планируется мобильная разработка, выучить Java – верное решение. Написанный на нем код, согласно Google, работает на различном оборудовании. Компилятор создаст байт-код, виртуальная машина с учетом аппаратной платформы, загрузит его, проверит и выполнит.
Google называет следующие преимущества Java для изучения:
- кроссплатформенность;
- наличие объектно-ориентированных компонентов;
- огромное сообщество;
- понятный и простой для изучения синтаксис;
- большое количество фреймворков и библиотек.
Недостатки – это не самая большая производительность (из-за дополнительного слоя в виде виртуальной машины), а также объемный программный код.
Python
Задумываясь, какой ЯП изучить, стоит присмотреться к Python. Учить его – легко и комфортно. Это условный язык для начинающих разработчиков. Он является одним из самых популярных. Его синтаксис напоминает английский язык, поэтому изучить Python будет не слишком трудно.
Данное средство программирования имеет множество готовых библиотек. Используется в качестве кроссплатформенного средства программирования. На нем можно создавать самые разные приложения: от бизнес-программ до небольших игр.
Google называет следующие его преимущества:
- лаконичность;
- распространенность – Python применяется в самых разных областях;
- востребованность на рынке – программирование на этом языке встречается как в небольших компаниях, так и в больших организациях;
- функциональность;
- наличие библиотек и фреймворков в большом количестве;
- простой и понятный синтаксис;
- небольшой вес итогового приложения.
Недостаток заключается в производительности – программы на Python не очень мощные. Также средств языка не хватит для создания полноценной компьютерной игры. Вместо этого он может использоваться как дополнительный инструмент.
Выше были представлены языки программирования для начинающих. Кроме предложенных вариантов веб-разработчики могут присмотреться к PHP, а для мобильной разработки под iOS подойдут Kotlin и Swift. Лучший способ освоить язык программирования – это завершить дистанционные компьютерные курсы. Они делятся по уровню сложности (в зависимости от того, какие базовые знания есть у потенциального ученика), рассчитаны на срок от нескольких месяцев до года. Пока идет обучение, «студенту» гарантируется богатый практический опыт и помощь в составлении портфолио. По окончании выбранного курса человеку вручается электронный сертификат установленной формы.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Выбор средств разработки: языки OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Выбрать язык программирования бывает нелегко, особенно новичкам. Некоторые ЯП подходят только для определенных целей: написания скриптов или веб-программирования. Такие особенности необходимо учитывать в процессе выбора средства написания приложений. Далее предстоит выяснить, какой язык программирования выбрать новичку. Необходимо разобраться в самых популярных ЯП, а также их областях применения и особенностях. Предложенная информация ориентирована на широкую публику." />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/vybor-sredstv-razrabotki-yazyki/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#article","name":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u044f\u0437\u044b\u043a\u0438 OTUS","headline":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u044f\u0437\u044b\u043a\u0438","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2024\/02\/oj-1080x720-5.jpg","width":2245,"height":1587},"datePublished":"2024-02-01T20:49:54+00:00","dateModified":"2024-02-01T20:49:56+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#listItem","position":2,"name":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u044f\u0437\u044b\u043a\u0438","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#webpage","url":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/","name":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438: \u044f\u0437\u044b\u043a\u0438 OTUS","description":"\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u0435\u0442 \u043d\u0435\u043b\u0435\u0433\u043a\u043e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c. \u041d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u042f\u041f \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439: \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u0441\u043a\u0440\u0438\u043f\u0442\u043e\u0432 \u0438\u043b\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0422\u0430\u043a\u0438\u0435 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0432 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u0431\u043e\u0440\u0430 \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0414\u0430\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0432\u044b\u044f\u0441\u043d\u0438\u0442\u044c, \u043a\u0430\u043a\u043e\u0439 \u044f\u0437\u044b\u043a \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0432\u044b\u0431\u0440\u0430\u0442\u044c \u043d\u043e\u0432\u0438\u0447\u043a\u0443. \u041d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0440\u0430\u0437\u043e\u0431\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u0441\u0430\u043c\u044b\u0445 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u042f\u041f, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0438\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445 \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u044f \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u044f\u0445. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0440\u0438\u0435\u043d\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0430 \u043d\u0430 \u0448\u0438\u0440\u043e\u043a\u0443\u044e \u043f\u0443\u0431\u043b\u0438\u043a\u0443.","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2024\/02\/oj-1080x720-5.jpg","@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/vybor-sredstv-razrabotki-yazyki\/#mainImage"},"datePublished":"2024-02-01T20:49:54+00:00","dateModified":"2024-02-01T20:49:56+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/9091" /><link rel='shortlink' href='https://otus.ru/journal/?p=9091' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fvybor-sredstv-razrabotki-yazyki%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fvybor-sredstv-razrabotki-yazyki%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-9091 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-9091" class="the-post post-9091 post type-post status-publish format-standard has-post-thumbnail category-polza tag-programmirovanie">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Выбор средств разработки: языки
</h1>
<a href="https://otus.ru/journal/vybor-sredstv-razrabotki-yazyki/" class="date-link" data-wpel-link="internal"><time class="post-date">1 февраля, 2024</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-5.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Выбор средств разработки: языки" title="Выбор средств разработки: языки" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-5-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-5-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-5-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#Programming_Language_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6" title="Programming Language – это…">Programming Language – это…</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F" title="Классификация">Классификация</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9D%D0%B8%D0%B7%D0%BA%D0%B8%D0%B9_%D0%B8_%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%B8%D0%B9_%D1%83%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C" title="Низкий и высокий уровень">Низкий и высокий уровень</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%BD%D0%B5%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%B5" title="Безопасные и небезопасные">Безопасные и небезопасные</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B5_%D0%B2%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B5" title="Компилируемые, встраиваемые и интерпретируемые">Компилируемые, встраиваемые и интерпретируемые</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%9D%D0%B0%D0%B8%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5_%D0%BF%D0%BE%D0%BF%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8" title="Наиболее популярные языки">Наиболее популярные языки</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#JavaScript" title="JavaScript">JavaScript</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#HTML_%D0%B8_CSS" title="HTML и CSS">HTML и CSS</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#C" title="C#">C#</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#CC" title="C/C++">C/C++</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#Java" title="Java">Java</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#Python" title="Python">Python</a></li></ul></li></ul></nav></div>
<p>Выбрать язык программирования бывает нелегко, особенно новичкам. Некоторые ЯП подходят только для определенных целей: написания скриптов или веб-программирования. Такие особенности необходимо учитывать в процессе выбора средства написания приложений.</p>
<p>Далее предстоит выяснить, какой язык программирования выбрать новичку. Необходимо разобраться в самых популярных ЯП, а также их областях применения и особенностях. Предложенная информация ориентирована на широкую публику. Она также пригодится опытным разработчикам, которые выбирают еще один язык для изучения.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Programming_Language_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6"></span>Programming Language – это…<span class="ez-toc-section-end"></span></h2>
<p>Google указывает на то, что programming language (или язык программирования) – это формальный язык, который предназначается для записи компьютерных приложений. Он определяет набор лексических, синтаксических и семантических правил, отвечающих за внешний вид программного обеспечения и действия, которые выполнит исполнитель (обычно – ЭВМ или компьютер) под его управлением.</p>
<p>Языки программирования необходимы для написания компьютерных, мобильных приложений. Они представляют собой набор правил, с помощью которых целевое устройство сможет выполнить тот или иной вычислительный процесс, организовать управление разнообразными объектами и так далее.</p>
<p>Google подчеркивает, что ЯП отличается от естественных языков. Он предназначается для управления ЭВМ, а естественные языки используются для непосредственного общения людей друг с другом. Большинство ЯП используют специальные конструкции для определения и манипулирования различными структурами данных, а также управления вычислительными процессами.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F"></span>Классификация<span class="ez-toc-section-end"></span></h2>
<p>Google указывает на то, что в мире отсутствует единая общепринятая система семантической таксономии языков программирования. Это значит, что четкой классификации на данный момент нет. Существует множество характеристик и черт, по которым допустимо производить классификацию ЯП.</p>
<p>Конкретный язык разработки в большинстве случаев имеет больше одного языка-предка. Многие из них создаются в качестве сочетания разнообразных ЯП. Несмотря на это, Google допускает некую классификацию языков:</p>
<ul>
<li>низкий уровень;</li>
<li>высокий уровень;</li>
<li>безопасный ЯП;</li>
<li>небезопасный ЯП;</li>
<li>компилируемые;</li>
<li>интерпретированные;</li>
<li>встраиваемые.</li>
</ul>
<p>Далее предстоит каждый класс рассмотреть более подробно. Эту информацию необходимо запомнить перед непосредственным изучением конкретных ЯП.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B8%D0%B7%D0%BA%D0%B8%D0%B9_%D0%B8_%D0%B2%D1%8B%D1%81%D0%BE%D0%BA%D0%B8%D0%B9_%D1%83%D1%80%D0%BE%D0%B2%D0%B5%D0%BD%D1%8C"></span>Низкий и высокий уровень<span class="ez-toc-section-end"></span></h3>
<p>Формально ЯП не имеет такого понятия, как «уровень». Этот термин в разработке программного обеспечения выступает в качестве условного и обычно обозначает:</p>
<ul>
<li>«приближенность» языка к естественному человеческому;</li>
<li>«удаленность» семантики от машинного кода целевой архитектуры процессора – наименьший масштаб преобразований, которые должен перенести программный код перед исполнением.</li>
</ul>
<p>Низкоуровневые языки не имеют встроенных функций. Они будут «общаться» с конкретным процессором, поэтому код одного ПК не может применяться на другом. У каждого производителя процессоров свой собственный набор инструкций. Здесь наиболее распространенными выступают машинные коды и Ассемблер.</p>
<p>Высокоуровневый язык имеет достаточно простой синтаксис – он максимально приближен к английскому языку. Google указывает, что такие средства разработки упрощены и быстрее осваиваются пользователями. Высокоуровневые ЯП делятся на:</p>
<ol>
<li>Императивные (процедурные). Они используются для написания инструкций, задают последовательность команд для обработки процессором.</li>
<li>Предметно-ориентированные (декларативные). Определяют результаты кода. Примером может послужить поиск по запросу через SQL.</li>
<li>Объектно-ориентированные. В их основе заложены объекты (кнопка, пользователь, сообщение), каждый из которых имеет свои характеристики. Объекты, имеющие схожие параметры, допустимо объединять в классы.</li>
</ol>
<p>По «высокоуровневости» средства разработки делятся на несколько поколений. Всего их 5 штук. Каждое обладает своими ключевыми особенностями.</p>
<p>Первое поколение – это машинные средства программирования. Google указывает на то, что такие ЯП реализованы непосредственно на аппаратном уровне.</p>
<p>Второе поколение – ассемблер. В простейшем случае он отвечает за реализацию мнемоники над машинными средствами разработки для записи команд и их параметров (в том числе – адрес в памяти). Многие вариации ассемблера поддерживают развитый макроязык. Также в простейшем случае обратная разработка машинных кодов не позволяет однозначно восстанавливать приложения в ассемблере. Не получится восстановить имена переменных, могут быть не распознаны недокументированные операции. Оба поколения относят к низкому уровню.</p>
<p>Самое больше практическое применение получили средства разработки третьего поколения. Они не являются полноценными высокоуровневыми, но претендуют на их звание. Это конструкции «высокого уровня», которые находят однозначное соответствие инструкциям в машине фон Неймана.</p>
<p>Более «высокоуровневыми» считаются средства программирования четвертого и пятого поколения. К четвертому относятся языки опций и параметров, комбинированные пакеты информационных баз, а также генераторы программного обеспечения. Здесь наиболее значимая подгруппа – это функциональные ЯП. Основная их часть – это средства программирования высшего порядка.</p>
<p>Пятое поколение выделяется, но не выступает общепринятым – это «язык сверхуровня». Google относит сюда средства разработки, реализация которых подразумевает существенную алгоритмическую составляющую (когда интерпретация небольшого исходного кода предусматривает достаточно сложные вычисления и расчеты), поэтому данную категорию иногда зовут четвертым поколением, но дополненную базой знаний. Обычно сюда относятся логические ЯП.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%91%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%B5_%D0%B8_%D0%BD%D0%B5%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D1%8B%D0%B5"></span>Безопасные и небезопасные<span class="ez-toc-section-end"></span></h3>
<p>Google указывает на то, что безопасным средство разработки выступает, если программы на нем, которые принимаются компилятором в качестве правильно построенных, в динамике никогда не выйдут за рамки допустимого поведения. Они могут содержать ошибки, но некритичные.</p>
<p>Небезопасные ЯП – это средства разработки, в которых активно встречаются ситуации ослабления типизации (приведение типов), а также прямого его нарушения. Ошибки доступа к памяти в таких языках Google называет нормальной ситуацией.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B5_%D0%B2%D1%81%D1%82%D1%80%D0%B0%D0%B8%D0%B2%D0%B0%D0%B5%D0%BC%D1%8B%D0%B5_%D0%B8_%D0%B8%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D0%B5"></span>Компилируемые, встраиваемые и интерпретируемые<span class="ez-toc-section-end"></span></h3>
<p>Задумываясь, с какого языка начать изучать программирование, необходимо сначала запомнить, что есть компилируемые, встраиваемые и интерпретируемые ЯП. Они характеризуют три принципиально разных способа реализации программных кодов. О них необходимо запомнить следующее:</p>
<ol>
<li>Компиляция – это когда исходный код программного обеспечения сначала преобразуется в машинный специальным программным обеспечением, которое носит название компилятора. В итоге получится исполняемый модуль. Google говорит о том, что он может быть запущен на исполнение в качестве отдельного программного обеспечения (ПО).</li>
<li>Интерпретация, согласно Google, указывает на то, что исходный код выполняется непосредственно, операция за операцией. Это приводит к тому, что без наличия интерпретатора программное обеспечение не может быть запущено.</li>
<li>Встраивание языка рассматривается как «реализация без трансляции» – ЯП выступает синтаксическим и семантическим подмножеством другого средства разработки, без которого он не существует. Google подчеркивает, что встраиваемые языки добавляют еще 4 способа реализации.</li>
</ol>
<p>Реализация некоторых ЯП занимает промежуточную ступень между компиляцией и интерпретацией. Приложение будет компилироваться не в машинный ЯП, а в машинно-независимый код низкого уровня (байт-код). Далее он обрабатывается виртуальной машиной. Google подчеркивает, что его часть может быть преобразована в машинный непосредственно при выполнении приложения по технологии компиляции just-in-time compilation.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D0%B8%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5_%D0%BF%D0%BE%D0%BF%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8"></span>Наиболее популярные языки<span class="ez-toc-section-end"></span></h2>
<p>Чтобы выбрать языки разработки, нужно знать особенности каждого варианта-претендента. Далее будут представлены самые популярные ЯП среди программистов, которые можно попытаться начать изучать новичку. Предложенный список порадует не только начинающих разработчиков, но и их более опытных коллег.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="JavaScript"></span>JavaScript<span class="ez-toc-section-end"></span></h3>
<p>JS – средство разработки, которое поможет превратить статические веб-страницы в динамические. Он дает возможность элементам сайта перемещаться, выполнять разнообразные операции, а также реагировать на пользовательские действия.</p>
<p>JavaScript рекомендуется изучать тем, кто интересуется веб-программированием и знаком с несколькими другими языками – HTML и CSS. JS-код легко тестируется в браузере.</p>
<p>Преимущества JS:</p>
<ul>
<li>поддержка готовых плагинов и скриптов;</li>
<li>востребованность на рынке труда;</li>
<li>постоянное развитие ЯП;</li>
<li>высокий уровень производительности.</li>
</ul>
<p>Google называет синтаксис JavaScript понятным и лаконичным. Именно поэтому данное средство разработки хорошо подойдет для начинающих программистов.</p>
<p>Google выделяет следующие его недостатки:</p>
<ul>
<li>трудности при выявлении ошибок – на ранних этапах сделать это весьма проблематично;</li>
<li>синтаксические особенности – у новичков, которые ранее не имели дел с разработкой, не исключены сложности на первых порах;</li>
<li>ошибки и сбои языка по непонятным причинам – это вызвано его быстрой первоначальной разработкой.</li>
</ul>
<p>Заработать специалист-новичок на JS сможет от 50000 рублей в месяц.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="HTML_%D0%B8_CSS"></span>HTML и CSS<span class="ez-toc-section-end"></span></h3>
<p>Google называет HTML и CSS языками разметки. С их помощью создаются веб-сайты. HTML определяет структуру и наполнение текстового документа: ссылки, текстовые блоки, заголовки и так далее. CSS, согласно Google, задает стили: цвета, фоны, шрифты и им подобные элементы.</p>
<p>Формально HTML и CSS – это не ЯП, но без них создать с нуля веб-сайт не получится. Именно поэтому они выступают важными инструментами IT-специалистов и активно осваиваются разработчиками.</p>
<p>Преимущества:</p>
<ul>
<li>«чистый» код сайтов с небольшим весом по сравнению с веб-ресурсом, созданном на конструкторе;</li>
<li>HTML, а также CSS – единственные инструменты, допускающие создание сайта «с нуля», что влечет за собой востребованность специалистов, знающих эти «ЯП»;</li>
<li>простота освоения;</li>
<li>наличие хорошей документации и множества информации об особенностях работы HTML/CSS в Сети.</li>
</ul>
<p>Недостатками Google считает всего два момента: CSS-верстка может по-разному восприниматься браузерами, а также наличие неплохих конкурентов – CMS-систем и конструкторов. Некоторые заказчики предпочитают пользоваться именно ими.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="C"></span>C#<span class="ez-toc-section-end"></span></h3>
<p>Можно начать программировать на C#. Google характеризует его как объектно-ориентированный язык. Он был разработан компанией Microsoft. Это часть C-подобных языков. В это семейство, согласно информации из Google, включены C, C++, Java и некоторые другие.</p>
<p>C# – относительно молодой, но популярный язык. Он стремительно развивается. На его базе разрабатывают разные проекты: игры, приложения для телефонов и компьютеров, драйверы, защитное программное обеспечение.</p>
<p>Преимущества:</p>
<ul>
<li>простота;</li>
<li>высокий уровень популярности;</li>
<li>ценность – достигнута за счет того, что на C# разрабатываются крупные проекты;</li>
<li>низкий порог вхождения;</li>
<li>поддержка от Microsoft.</li>
</ul>
<p>Существенный недостаток ЯП Google описывает как «доступность». Бесплатно писать на C# имеют право только небольшие организации. Более крупным придется тратиться на лицензию.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="CC"></span>C/C++<span class="ez-toc-section-end"></span></h3>
<p>C/C++ – лучшие языки программирования для тех, кто не боится сложностей и хочет писать кроссплатформенные проекты. C++ – объектно-ориентированный. На нем пишутся сложные сервисы, требующие высокой скорости обработки и производительности. Он создавался как более совершенный C, который сохранял бы с ним обратную совместимость.</p>
<p>C++, как говорит Google, предоставляет полный контроль над управлением памятью. Это и преимущество, и недостаток. Разработчики получат контроль над ресурсами, но такие манипуляции потребуют высокого уровня квалификации.</p>
<p>Преимущества:</p>
<ul>
<li>совмещение качеств высокоуровневых и низкоуровневых средств разработки;</li>
<li>наличие огромного количества фреймворков и библиотек;</li>
<li>универсальность в плане использования – на C++ можно писать, что угодно;</li>
<li>высокий уровень функциональности.</li>
</ul>
<p>Недостатком Google называет то, что C++ более сложен в изучении, чем другие языки. А еще – у него более трудный синтаксис. Новичкам в разработке проблематично быстро изучить C++ с нуля без специализированных курсов.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Java"></span>Java<span class="ez-toc-section-end"></span></h3>
<p>Java – еще одно очень популярное средство в сфере разработки. Google называет его кроссплатформенным с поддержкой ООП. Коды на Java запускаются и на умных холодильниках, и на телефонах. Такой результат достигается за счет JVM – виртуальной машины, которая выполняет роль посредника между кодом и устройством.</p>
<p>Если планируется мобильная разработка, выучить Java – верное решение. Написанный на нем код, согласно Google, работает на различном оборудовании. Компилятор создаст байт-код, виртуальная машина с учетом аппаратной платформы, загрузит его, проверит и выполнит.</p>
<p>Google называет следующие преимущества Java для изучения:</p>
<ul>
<li>кроссплатформенность;</li>
<li>наличие объектно-ориентированных компонентов;</li>
<li>огромное сообщество;</li>
<li>понятный и простой для изучения синтаксис;</li>
<li>большое количество фреймворков и библиотек.</li>
</ul>
<p>Недостатки – это не самая большая производительность (из-за дополнительного слоя в виде виртуальной машины), а также объемный программный код.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Python"></span>Python<span class="ez-toc-section-end"></span></h3>
<p>Задумываясь, какой ЯП изучить, стоит присмотреться к Python. Учить его – легко и комфортно. Это условный язык для начинающих разработчиков. Он является одним из самых популярных. Его синтаксис напоминает английский язык, поэтому изучить Python будет не слишком трудно.</p>
<p>Данное средство программирования имеет множество готовых библиотек. Используется в качестве кроссплатформенного средства программирования. На нем можно создавать самые разные приложения: от бизнес-программ до небольших игр.</p>
<p>Google называет следующие его преимущества:</p>
<ul>
<li>лаконичность;</li>
<li>распространенность – Python применяется в самых разных областях;</li>
<li>востребованность на рынке – программирование на этом языке встречается как в небольших компаниях, так и в больших организациях;</li>
<li>функциональность;</li>
<li>наличие библиотек и фреймворков в большом количестве;</li>
<li>простой и понятный синтаксис;</li>
<li>небольшой вес итогового приложения.</li>
</ul>
<p>Недостаток заключается в производительности – программы на Python не очень мощные. Также средств языка не хватит для создания полноценной компьютерной игры. Вместо этого он может использоваться как дополнительный инструмент.</p>
<p>Выше были представлены языки программирования для начинающих. Кроме предложенных вариантов веб-разработчики могут присмотреться к PHP, а для мобильной разработки под iOS подойдут Kotlin и Swift. Лучший способ освоить язык программирования – это завершить дистанционные компьютерные курсы. Они делятся по уровню сложности (в зависимости от того, какие базовые знания есть у потенциального ученика), рассчитаны на срок от нескольких месяцев до года. Пока идет обучение, «студенту» гарантируется богатый практический опыт и помощь в составлении портфолио. По окончании выбранного курса человеку вручается электронный сертификат установленной формы.</p>
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a href="https://otus.ru/?utm_source=oj" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">Otus<span class="wpel-icon wpel-image wpel-icon-6"></span></a>!</em> </p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/programmirovanie/" rel="tag" data-wpel-link="internal">программирование</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fvybor-sredstv-razrabotki-yazyki%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fvybor-sredstv-razrabotki-yazyki%2F&text=%D0%92%D1%8B%D0%B1%D0%BE%D1%80%20%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8%3A%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fvybor-sredstv-razrabotki-yazyki%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fvybor-sredstv-razrabotki-yazyki%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2024%2F02%2Foj-1080x720-5.jpg&description=%D0%92%D1%8B%D0%B1%D0%BE%D1%80%20%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B8%3A%20%D1%8F%D0%B7%D1%8B%D0%BA%D0%B8" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/protokoly-dannyh-opisanie-i-raznovidnosti/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/protokoly-dannyh-opisanie-i-raznovidnosti/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Протоколы данных: описание и разновидности" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-4-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-4-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-4-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-4-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-4-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-4-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Протоколы данных: описание и разновидности" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/protokoly-dannyh-opisanie-i-raznovidnosti/" data-wpel-link="internal">Протоколы данных: описание и разновидности</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/protokoly-dannyh-opisanie-i-raznovidnosti/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-02-01T19:38:24+00:00">1 февраля, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">8 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/migraciya-mezhdu-klasterami-postgresql/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/migraciya-mezhdu-klasterami-postgresql/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Миграция между кластерами PostgreSQL" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-kopiya-150x106.png 150w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-kopiya-300x212.png 300w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-kopiya-1024x724.png 1024w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-kopiya-768x543.png 768w, https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-kopiya-1536x1086.png 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/02/oj-1080x720-kopiya-150x106.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Миграция между кластерами PostgreSQL" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/migraciya-mezhdu-klasterami-postgresql/" data-wpel-link="internal">Миграция между кластерами PostgreSQL</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/migraciya-mezhdu-klasterami-postgresql/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-02-02T12:52:33+00:00">2 февраля, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">1 Min Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/vybor-sredstv-razrabotki-yazyki\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 21:12:53 GMT -->