0 added
0 removed
Original
2026-01-01
Modified
2026-02-26
1
<p>Абстракция - основной способ борьбы со сложностью в программировании. Она позволяет уйти от деталей реализации и сосредоточиться на главном.</p>
1
<p>Абстракция - основной способ борьбы со сложностью в программировании. Она позволяет уйти от деталей реализации и сосредоточиться на главном.</p>
2
<p>Хороший пример абстракции - функция сортировки массива. Не важно как она устроена, важно что она приводит к результату, который нас интересует.</p>
2
<p>Хороший пример абстракции - функция сортировки массива. Не важно как она устроена, важно что она приводит к результату, который нас интересует.</p>
3
<p>Другой пример - функции высшего порядка, такие как map, filter и reduce, которые позволяют обрабатывать коллекции без знания их внутреннего устройства. Причём коллекции не обязательно должны быть плоскими, подобные функции можно написать для сколь угодно сложных структур, например, для деревьев. И благодаря такой абстракции мы можем сосредоточиться на самой обработке, а не на процессе обхода данных.</p>
3
<p>Другой пример - функции высшего порядка, такие как map, filter и reduce, которые позволяют обрабатывать коллекции без знания их внутреннего устройства. Причём коллекции не обязательно должны быть плоскими, подобные функции можно написать для сколь угодно сложных структур, например, для деревьев. И благодаря такой абстракции мы можем сосредоточиться на самой обработке, а не на процессе обхода данных.</p>
4
<p>С другой стороны, сами данные нередко имеют сложную структуру. Представление пользователя в нетривиальной системе может потребовать описания десятков и сотен различных параметров и данных, связанных с ними. В такой ситуации полезно спрятать эту структуру за набором функций, что скроет внутреннюю сложность и упростит поддержку кода. Это называется абстракцией с помощью данных.</p>
4
<p>С другой стороны, сами данные нередко имеют сложную структуру. Представление пользователя в нетривиальной системе может потребовать описания десятков и сотен различных параметров и данных, связанных с ними. В такой ситуации полезно спрятать эту структуру за набором функций, что скроет внутреннюю сложность и упростит поддержку кода. Это называется абстракцией с помощью данных.</p>
5
<p>В этом курсе мы познакомимся с некоторыми базовыми принципами проектирования программ. С тем, как моделировать и представлять в программе объекты реального (и воображаемого) мира. Примером проектирования послужит создание библиотеки для работы с графическими примитивами, такими как точки, отрезки, фигуры. Эта библиотека, с одной стороны, достаточно понятна для всех (в том числе визуально), с другой - очень просто представляется в коде.</p>
5
<p>В этом курсе мы познакомимся с некоторыми базовыми принципами проектирования программ. С тем, как моделировать и представлять в программе объекты реального (и воображаемого) мира. Примером проектирования послужит создание библиотеки для работы с графическими примитивами, такими как точки, отрезки, фигуры. Эта библиотека, с одной стороны, достаточно понятна для всех (в том числе визуально), с другой - очень просто представляется в коде.</p>
6
<p>Основные темы курса:</p>
6
<p>Основные темы курса:</p>
7
<ul><li>Предметная область (Domain Model)</li>
7
<ul><li>Предметная область (Domain Model)</li>
8
<li>Онтология</li>
8
<li>Онтология</li>
9
<li>Уровни проектирования (Барьеры абстракции)</li>
9
<li>Уровни проектирования (Барьеры абстракции)</li>
10
<li>Инварианты</li>
10
<li>Инварианты</li>
11
</ul>
11
</ul>