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