HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <ul><li><a>Понятие ООП</a></li>
1 <ul><li><a>Понятие ООП</a></li>
2 <li><a>Структура ООП</a><ul><li><a>Объект</a></li>
2 <li><a>Структура ООП</a><ul><li><a>Объект</a></li>
3 <li><a>Методы</a></li>
3 <li><a>Методы</a></li>
4 <li><a>Атрибуты</a></li>
4 <li><a>Атрибуты</a></li>
5 <li><a>Класс</a></li>
5 <li><a>Класс</a></li>
6 </ul></li>
6 </ul></li>
7 <li><a>Принципы</a><ul><li><a>Инкапсуляция</a></li>
7 <li><a>Принципы</a><ul><li><a>Инкапсуляция</a></li>
8 <li><a>Наследование</a></li>
8 <li><a>Наследование</a></li>
9 <li><a>Абстракция</a></li>
9 <li><a>Абстракция</a></li>
10 <li><a>Полиморфизм</a></li>
10 <li><a>Полиморфизм</a></li>
11 </ul></li>
11 </ul></li>
12 <li><a>Плюсы и минусы ООП</a></li>
12 <li><a>Плюсы и минусы ООП</a></li>
13 <li><a>Языки с ООП</a></li>
13 <li><a>Языки с ООП</a></li>
14 </ul><p>Объектно-ориентированное программирование - это современный подход к моделированию информационных объектов. Это стиль разработки, который базируется на основе написания типов/моделей предметной области и их взаимодействия, представленных прототипами или экземплярами классов, образующих иерархию наследования.</p>
14 </ul><p>Объектно-ориентированное программирование - это современный подход к моделированию информационных объектов. Это стиль разработки, который базируется на основе написания типов/моделей предметной области и их взаимодействия, представленных прототипами или экземплярами классов, образующих иерархию наследования.</p>
15 <p>Данный подход к программированию распространен и используется большинством современных языков. Он рассматривается как подход к разработке программного обеспечения как к моделированию информационных объектов. С помощью соответствующей концепции можно решить главную проблему структурного программирования - структурирование информации с точки зрения управляемости. С помощью ООП получится управлять процессом моделирования, а также реализовывать достаточно крупные программные проекты.</p>
15 <p>Данный подход к программированию распространен и используется большинством современных языков. Он рассматривается как подход к разработке программного обеспечения как к моделированию информационных объектов. С помощью соответствующей концепции можно решить главную проблему структурного программирования - структурирование информации с точки зрения управляемости. С помощью ООП получится управлять процессом моделирования, а также реализовывать достаточно крупные программные проекты.</p>
16 <h2>Понятие ООП</h2>
16 <h2>Понятие ООП</h2>
17 <p>Объектно-ориентированное программирование - известная парадигма (набор правил, принципов, критериев) разработки программного обеспечения, которая соблюдается программистами при написании программного кода. Если представить пример из реальной жизни, то код - это рецепт, а парадигма - то, как этот самый рецепт оформлен в книге по кулинарии. С помощью парадигмы можно стандартизировать написание исходного программного кода. Этот прием позволяет снизить риск возникновения ошибок, а также ускорить непосредственную разработку программного обеспечения. За счет соблюдения парадигм программирования получится сделать исходный код более читаемым для других разработчиков.</p>
17 <p>Объектно-ориентированное программирование - известная парадигма (набор правил, принципов, критериев) разработки программного обеспечения, которая соблюдается программистами при написании программного кода. Если представить пример из реальной жизни, то код - это рецепт, а парадигма - то, как этот самый рецепт оформлен в книге по кулинарии. С помощью парадигмы можно стандартизировать написание исходного программного кода. Этот прием позволяет снизить риск возникновения ошибок, а также ускорить непосредственную разработку программного обеспечения. За счет соблюдения парадигм программирования получится сделать исходный код более читаемым для других разработчиков.</p>
18 <p>Суть объектно-ориентированного программирования заключается в том, что все программы, написанные с его помощью, представляют собой объекты. Каждый объект - это некоторая сущность с определенным набором данных и доступных манипуляций.</p>
18 <p>Суть объектно-ориентированного программирования заключается в том, что все программы, написанные с его помощью, представляют собой объекты. Каждый объект - это некоторая сущность с определенным набором данных и доступных манипуляций.</p>
19 <h2>Структура ООП</h2>
19 <h2>Структура ООП</h2>
20 <p>Исходный код, написанный при помощи рассматриваемой методологии, включает в себя определенные принципы ООП. Всего их 4 штуки. Это - ключевые элементы, которые позволяют формировать программные приложения:</p>
20 <p>Исходный код, написанный при помощи рассматриваемой методологии, включает в себя определенные принципы ООП. Всего их 4 штуки. Это - ключевые элементы, которые позволяют формировать программные приложения:</p>
21 <ul><li>объекты;</li>
21 <ul><li>объекты;</li>
22 <li>методы;</li>
22 <li>методы;</li>
23 <li>атрибуты;</li>
23 <li>атрибуты;</li>
24 <li>классы.</li>
24 <li>классы.</li>
25 </ul><p> Далее каждый вариант будет рассмотрен более подробно, чтобы лучше понимать принципы ООП.</p>
25 </ul><p> Далее каждый вариант будет рассмотрен более подробно, чтобы лучше понимать принципы ООП.</p>
26 <h3>Объект</h3>
26 <h3>Объект</h3>
27 <p>Объектом называется кусок программного кода, который описывает элемент с определенным набором характеристик и функций. Примером может послужить видеоигра, в которой есть главный герой (персонаж).</p>
27 <p>Объектом называется кусок программного кода, который описывает элемент с определенным набором характеристик и функций. Примером может послужить видеоигра, в которой есть главный герой (персонаж).</p>
28 <p>Это создание может в программном коде выражаться отдельным объектом с различными характеристиками:</p>
28 <p>Это создание может в программном коде выражаться отдельным объектом с различными характеристиками:</p>
29 <ul><li>здоровье;</li>
29 <ul><li>здоровье;</li>
30 <li>сила;</li>
30 <li>сила;</li>
31 <li>выносливость;</li>
31 <li>выносливость;</li>
32 <li>ловкость;</li>
32 <li>ловкость;</li>
33 <li>урон.</li>
33 <li>урон.</li>
34 </ul><p>У персонажа также могут быть различные функции (методы) - особые приемы , используемые во время атаки персонажа, магические навыки и так далее. С помощью объектов можно описать других персонажей в игре, а также различные средства (способы) передвижения.</p>
34 </ul><p>У персонажа также могут быть различные функции (методы) - особые приемы , используемые во время атаки персонажа, магические навыки и так далее. С помощью объектов можно описать других персонажей в игре, а также различные средства (способы) передвижения.</p>
35 <h3>Методы</h3>
35 <h3>Методы</h3>
36 <p>Методы - функции, описанные внутри того или иного класса или объекта. Они имеют прямое отношение к конкретному элементу и позволяют с ним взаимодействовать. Методы также помогают контактировать с различными частями программного кода.</p>
36 <p>Методы - функции, описанные внутри того или иного класса или объекта. Они имеют прямое отношение к конкретному элементу и позволяют с ним взаимодействовать. Методы также помогают контактировать с различными частями программного кода.</p>
37 <p>На примере с игровым персонажем можно в качестве описания методов охарактеризовать навыки и умения будущего игрового героя. Когда персонаж выполняет то или иное действие, он использует метод, который был заранее описан в его объекте.</p>
37 <p>На примере с игровым персонажем можно в качестве описания методов охарактеризовать навыки и умения будущего игрового героя. Когда персонаж выполняет то или иное действие, он использует метод, который был заранее описан в его объекте.</p>
38 <h3>Атрибуты</h3>
38 <h3>Атрибуты</h3>
39 <p>Атрибут - конкретная характеристика класса. Он может быть представлен в программировании в качестве переменной с данными. Рассматривая пример с игровым персонажем, стоит обратить внимание на характеристики героя. Пример - выносливость или скорость. Подобные показатели - это и есть атрибуты.</p>
39 <p>Атрибут - конкретная характеристика класса. Он может быть представлен в программировании в качестве переменной с данными. Рассматривая пример с игровым персонажем, стоит обратить внимание на характеристики героя. Пример - выносливость или скорость. Подобные показатели - это и есть атрибуты.</p>
40 <h3>Класс</h3>
40 <h3>Класс</h3>
41 <p>Рассматривая основные принципы в ООП, нельзя обделить вниманием классы. О них необходимо знать, интересуясь изучаемой методологией разработки программного обеспечения.</p>
41 <p>Рассматривая основные принципы в ООП, нельзя обделить вниманием классы. О них необходимо знать, интересуясь изучаемой методологией разработки программного обеспечения.</p>
42 <p>Класс выступает наиболее обобщенной и абстрактной формой в объектно-ориентированной разработке. На его основе будут строиться остальные элементы структуры исходного кода.</p>
42 <p>Класс выступает наиболее обобщенной и абстрактной формой в объектно-ориентированной разработке. На его основе будут строиться остальные элементы структуры исходного кода.</p>
43 <p>В случае с игрой необходимо помнить - в РПГ множество различных героев:</p>
43 <p>В случае с игрой необходимо помнить - в РПГ множество различных героев:</p>
44 <ul><li>воины;</li>
44 <ul><li>воины;</li>
45 <li>маги;</li>
45 <li>маги;</li>
46 <li>лучники;</li>
46 <li>лучники;</li>
47 <li>орки;</li>
47 <li>орки;</li>
48 <li>друиды.</li>
48 <li>друиды.</li>
49 </ul><p>При создании полноценной игры, которая будет качественно и стабильно работать, сложно и нецелесообразно описывать каждый класс персонажа с нуля, ведь у героев есть одинаковые признаки и методы.</p>
49 </ul><p>При создании полноценной игры, которая будет качественно и стабильно работать, сложно и нецелесообразно описывать каждый класс персонажа с нуля, ведь у героев есть одинаковые признаки и методы.</p>
50 <p>Именно поэтому можно создать класс - объект, который будет выступать в качестве базы для других объектов в игре. Примером послужит класс - персонаж. Он умеет:</p>
50 <p>Именно поэтому можно создать класс - объект, который будет выступать в качестве базы для других объектов в игре. Примером послужит класс - персонаж. Он умеет:</p>
51 <ul><li>ходить;</li>
51 <ul><li>ходить;</li>
52 <li>бегать;</li>
52 <li>бегать;</li>
53 <li>прыгать;</li>
53 <li>прыгать;</li>
54 <li>драться;</li>
54 <li>драться;</li>
55 <li>имеет характеристики вроде здоровья и маны.</li>
55 <li>имеет характеристики вроде здоровья и маны.</li>
56 </ul><p>Атрибуты будут разные у разных рас, но они все равно будут присутствовать. Конкретный же игрок будет содержать специфичные характеристики и методы, которые зависят от решений игрока и других факторов. Пример - от собранной амуниции. Класс - это абстракция и наследование. С их помощью значительно упрощается генерация новых объектов в будущем проекте.</p>
56 </ul><p>Атрибуты будут разные у разных рас, но они все равно будут присутствовать. Конкретный же игрок будет содержать специфичные характеристики и методы, которые зависят от решений игрока и других факторов. Пример - от собранной амуниции. Класс - это абстракция и наследование. С их помощью значительно упрощается генерация новых объектов в будущем проекте.</p>
57 <h2>Принципы</h2>
57 <h2>Принципы</h2>
58 <p>Изучая ООП (наследование, инкапсуляцию, полиморфизм), необходимо помнить о том, что в основе правил создания и использования всех структурных элементов лежит определенный ряд принципов и правил. С их помощью можно задействовать все структурные элементы, включая классы, объекты, методы и иные элементы.</p>
58 <p>Изучая ООП (наследование, инкапсуляцию, полиморфизм), необходимо помнить о том, что в основе правил создания и использования всех структурных элементов лежит определенный ряд принципов и правил. С их помощью можно задействовать все структурные элементы, включая классы, объекты, методы и иные элементы.</p>
59 <p>В качестве основных принципов объектно-ориентированной разработки выделяют следующие компоненты:</p>
59 <p>В качестве основных принципов объектно-ориентированной разработки выделяют следующие компоненты:</p>
60 <ul><li>инкапсуляция;</li>
60 <ul><li>инкапсуляция;</li>
61 <li>абстракция;</li>
61 <li>абстракция;</li>
62 <li>полиморфизм;</li>
62 <li>полиморфизм;</li>
63 <li>наследование.</li>
63 <li>наследование.</li>
64 </ul><p>Далее каждый компонент будет изучен более подробно для лучшего понимания основ объектно-ориентированной разработки.</p>
64 </ul><p>Далее каждый компонент будет изучен более подробно для лучшего понимания основ объектно-ориентированной разработки.</p>
65 <h3>Инкапсуляция</h3>
65 <h3>Инкапсуляция</h3>
66 <p>Инкапсуляция нужна для быстрой и безопасной организации иерархической управляемости: чтобы было достаточно простой команды "что нужно сделать", без одновременного уточнения того, как именно проводить ту или иную операцию. Связано это с тем, что указание на непосредственный метод реализации - это уже совершенно другой уровень управления приложением.</p>
66 <p>Инкапсуляция нужна для быстрой и безопасной организации иерархической управляемости: чтобы было достаточно простой команды "что нужно сделать", без одновременного уточнения того, как именно проводить ту или иную операцию. Связано это с тем, что указание на непосредственный метод реализации - это уже совершенно другой уровень управления приложением.</p>
67 <p>Принцип инкапсуляции гласит, что все важные данные, необходимые для работы класса или объекта, должны в нем же и храниться. Только определенная информация будет доступна для внешних функций и объектов.</p>
67 <p>Принцип инкапсуляции гласит, что все важные данные, необходимые для работы класса или объекта, должны в нем же и храниться. Только определенная информация будет доступна для внешних функций и объектов.</p>
68 <p>Данные конкретного объекта или класса хранятся исключительно в пределах этого самого класса или объекта. Вносить в них корректировки, пользуясь другими классами, нельзя. Окружение имеет право запрашивать только публичные (общие) методы и атрибуты.</p>
68 <p>Данные конкретного объекта или класса хранятся исключительно в пределах этого самого класса или объекта. Вносить в них корректировки, пользуясь другими классами, нельзя. Окружение имеет право запрашивать только публичные (общие) методы и атрибуты.</p>
69 <p>За счет инкапсуляции удается обеспечить более высокий уровень безопасности исходному коду программы, а также свести к минимуму шансы на случайное повреждение данных внутри какого-нибудь класса или объекта со стороны.</p>
69 <p>За счет инкапсуляции удается обеспечить более высокий уровень безопасности исходному коду программы, а также свести к минимуму шансы на случайное повреждение данных внутри какого-нибудь класса или объекта со стороны.</p>
70 <h3>Наследование</h3>
70 <h3>Наследование</h3>
71 <p>Среди принципов ООП также принято выделять наследование. Это основная суть взаимоотношений между классами и объектами. Для того, чтобы не приходилось создавать множество одинаковых объектов или классов, можно создать один класс над классами с более общими характеристиками или функциями, а затем постепенно наследовать от него те или иные параметры/возможности.</p>
71 <p>Среди принципов ООП также принято выделять наследование. Это основная суть взаимоотношений между классами и объектами. Для того, чтобы не приходилось создавать множество одинаковых объектов или классов, можно создать один класс над классами с более общими характеристиками или функциями, а затем постепенно наследовать от него те или иные параметры/возможности.</p>
72 <p>При помощи специальных конструкций получится забрать из класса ряд атрибутов или методов, оставить их в неизменном виде или дополнить новыми элементами, внести корректировки в некоторые характеристики или создать из них уникальные объекты или подклассы для дальнейшего наследования опций.</p>
72 <p>При помощи специальных конструкций получится забрать из класса ряд атрибутов или методов, оставить их в неизменном виде или дополнить новыми элементами, внести корректировки в некоторые характеристики или создать из них уникальные объекты или подклассы для дальнейшего наследования опций.</p>
73 <p>Чтобы лучше понять этот принцип, рекомендуется рассмотреть наглядный пример - средства передвижения:</p>
73 <p>Чтобы лучше понять этот принцип, рекомендуется рассмотреть наглядный пример - средства передвижения:</p>
74 <ol><li>Пусть будет абстрактный класс "Средства передвижения". У него поддерживается возможность набора скорости, а также транспортировки грузов и людей.</li>
74 <ol><li>Пусть будет абстрактный класс "Средства передвижения". У него поддерживается возможность набора скорости, а также транспортировки грузов и людей.</li>
75 <li>Из него будет сформирован подкласс "Автобус". Он унаследует базовые характеристики и уточнит их определенным количеством мест для пассажиров, а также пределом скорости разгона.</li>
75 <li>Из него будет сформирован подкласс "Автобус". Он унаследует базовые характеристики и уточнит их определенным количеством мест для пассажиров, а также пределом скорости разгона.</li>
76 <li>Теперь можно создать объект "Икарус". Он получит еще более точную скорость, планировку, количество дверей, тип сигнала, а также иные специфические параметры.</li>
76 <li>Теперь можно создать объект "Икарус". Он получит еще более точную скорость, планировку, количество дверей, тип сигнала, а также иные специфические параметры.</li>
77 </ol><p>Описывать каждый раз новый класс или объект с нуля не придется. Достаточно обратиться к ранее созданному классу или объекту и дополнить его конкретикой.</p>
77 </ol><p>Описывать каждый раз новый класс или объект с нуля не придется. Достаточно обратиться к ранее созданному классу или объекту и дополнить его конкретикой.</p>
78 <h3>Абстракция</h3>
78 <h3>Абстракция</h3>
79 <p>Среди принципов ООП есть абстракции. Каждый верхний слой над объектом (классом) более абстрактен, чем его "младшая версия". Такая концепция позволит избежать переписывания по многу раз одного и того же объекта, ссылаясь на одни и те же методы и атрибуты.</p>
79 <p>Среди принципов ООП есть абстракции. Каждый верхний слой над объектом (классом) более абстрактен, чем его "младшая версия". Такая концепция позволит избежать переписывания по многу раз одного и того же объекта, ссылаясь на одни и те же методы и атрибуты.</p>
80 <p>Абстрактные классы дают возможность создавать более конкретные классы, а также соответствующие от них объекты, избегая описание реализации функции заблаговременно (в этом и заключается суть абстракции), а также оставляя исключительно базовый шаблон для дальнейших настроек.</p>
80 <p>Абстрактные классы дают возможность создавать более конкретные классы, а также соответствующие от них объекты, избегая описание реализации функции заблаговременно (в этом и заключается суть абстракции), а также оставляя исключительно базовый шаблон для дальнейших настроек.</p>
81 <p>Абстрактный класс должен быть публичным и не иметь реализаций методов. Именно этим он отличается от дочерних классов объектов программного кода.</p>
81 <p>Абстрактный класс должен быть публичным и не иметь реализаций методов. Именно этим он отличается от дочерних классов объектов программного кода.</p>
82 <h3>Полиморфизм</h3>
82 <h3>Полиморфизм</h3>
83 <p>Полиморфизм - ключевой принцип объектно-ориентированного программирования. Он позволяет осуществлять обработку разнообразных типов данных с помощью одних и тех же методов.</p>
83 <p>Полиморфизм - ключевой принцип объектно-ориентированного программирования. Он позволяет осуществлять обработку разнообразных типов данных с помощью одних и тех же методов.</p>
84 <p>Полиморфизм в разных языках программирования будет отличаться друг от друга: есть языки вроде C++, где используется перегрузка, а есть JavaScript, где функции по умолчанию умеют обрабатывать различные типы данных без необходимости указывать их тип заранее.</p>
84 <p>Полиморфизм в разных языках программирования будет отличаться друг от друга: есть языки вроде C++, где используется перегрузка, а есть JavaScript, где функции по умолчанию умеют обрабатывать различные типы данных без необходимости указывать их тип заранее.</p>
85 <p>Полиморфизм дает возможность через идентичные методы обрабатывать разнообразные типы данных. Пример - числа с плавающими запятыми и двузначные числа. Полиморфизмом позволяет определять методы в дочерних классах для обработки данных или выполнения дополнительных действий при вызове аналогичных методов.</p>
85 <p>Полиморфизм дает возможность через идентичные методы обрабатывать разнообразные типы данных. Пример - числа с плавающими запятыми и двузначные числа. Полиморфизмом позволяет определять методы в дочерних классах для обработки данных или выполнения дополнительных действий при вызове аналогичных методов.</p>
86 <h2>Плюсы и минусы ООП</h2>
86 <h2>Плюсы и минусы ООП</h2>
87 <p>Преимущества и недостатки ООП помогут понять, стоит ли пользоваться соответствующей парадигмой при разработке того или иного программного обеспечения. К плюсам объектно-ориентированного программирования относят следующие моменты:</p>
87 <p>Преимущества и недостатки ООП помогут понять, стоит ли пользоваться соответствующей парадигмой при разработке того или иного программного обеспечения. К плюсам объектно-ориентированного программирования относят следующие моменты:</p>
88 <ol><li>Модульность разработки. Достигается за счет инкапсуляции. Количество ошибок значительно уменьшается, а сама разработка программы ускоряется при условии участия большого количества программистов. Связано это с тем, что все время писать код "с нуля" нет никакой необходимости.</li>
88 <ol><li>Модульность разработки. Достигается за счет инкапсуляции. Количество ошибок значительно уменьшается, а сама разработка программы ускоряется при условии участия большого количества программистов. Связано это с тем, что все время писать код "с нуля" нет никакой необходимости.</li>
89 <li>Высокая скорость разработки. Классы и интерфейсы в объектно-ориентированном программировании легко трансформируются в полноценные библиотеки. Их можно использовать в различных проектах.</li>
89 <li>Высокая скорость разработки. Классы и интерфейсы в объектно-ориентированном программировании легко трансформируются в полноценные библиотеки. Их можно использовать в различных проектах.</li>
90 <li>Расширяемость. ООП легко развивается, дополняется и меняется. Этому способствует модульный подход к программированию.</li>
90 <li>Расширяемость. ООП легко развивается, дополняется и меняется. Этому способствует модульный подход к программированию.</li>
91 <li>Простое восприятие. При помощи объектно-ориентированного программирования можно упростить понимание кода. Результат достигается за счет взаимодействия с объектами, а не логикой программы.</li>
91 <li>Простое восприятие. При помощи объектно-ориентированного программирования можно упростить понимание кода. Результат достигается за счет взаимодействия с объектами, а не логикой программы.</li>
92 <li>Высокий уровень безопасности. Инкапсулированный код будет недоступен извне, поэтому взломать программу окажется на порядок сложнее.</li>
92 <li>Высокий уровень безопасности. Инкапсулированный код будет недоступен извне, поэтому взломать программу окажется на порядок сложнее.</li>
93 <li>Высокий уровень гибкости. С помощью полиморфизма удается быстро адаптировать приложение под свои нужды, избегая описания новых функций и объектов.</li>
93 <li>Высокий уровень гибкости. С помощью полиморфизма удается быстро адаптировать приложение под свои нужды, избегая описания новых функций и объектов.</li>
94 </ol><p>Преимущества ООП теперь понятны. К недостаткам данной парадигмы относят то, что она ставит во главе угла объекты. Достаточного внимания вычислениям, расчетам и алгоритмам здесь не уделяется. Такой подход иногда требует написания более объемного программного кода, чем при функциональном программировании. Также ООП иногда негативно сказывается на непосредственной скорости компиляции кода. Других существенных недостатков у парадигмы нет.</p>
94 </ol><p>Преимущества ООП теперь понятны. К недостаткам данной парадигмы относят то, что она ставит во главе угла объекты. Достаточного внимания вычислениям, расчетам и алгоритмам здесь не уделяется. Такой подход иногда требует написания более объемного программного кода, чем при функциональном программировании. Также ООП иногда негативно сказывается на непосредственной скорости компиляции кода. Других существенных недостатков у парадигмы нет.</p>
95 <h2>Языки с ООП</h2>
95 <h2>Языки с ООП</h2>
96 <p>Языков программирования, которые пользуются объектно-ориентированной разработкой, очень много. Вот несколько известных из них:</p>
96 <p>Языков программирования, которые пользуются объектно-ориентированной разработкой, очень много. Вот несколько известных из них:</p>
97 <ol><li>Ruby - высокоуровневый язык с динамической типизацией. Появился в середине 90-х годов. Его создал японский разработчик Юкихиро Мацумото.</li>
97 <ol><li>Ruby - высокоуровневый язык с динамической типизацией. Появился в середине 90-х годов. Его создал японский разработчик Юкихиро Мацумото.</li>
98 <li>C++ - статически типизированный язык программирования. Он заточен под работу с ООП. Является универсальным средством разработки программного обеспечения.</li>
98 <li>C++ - статически типизированный язык программирования. Он заточен под работу с ООП. Является универсальным средством разработки программного обеспечения.</li>
99 <li>JavaScript - язык программирования с динамической типизацией. Является универсальным средством программирования. Применяется в разных парадигмах разработки.</li>
99 <li>JavaScript - язык программирования с динамической типизацией. Является универсальным средством программирования. Применяется в разных парадигмах разработки.</li>
100 </ol><p>Языки с ООП также включают в себя C#, Python, Scala, PHP, Java и другие.</p>
100 </ol><p>Языки с ООП также включают в себя C#, Python, Scala, PHP, Java и другие.</p>
101 <p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em> </p>
101 <p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a>Otus</a>!</em> </p>
102  
102