HTML Diff
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>