Абстракция — основной способ борьбы со сложностью в программировании. Она позволяет уйти от деталей реализации и сосредоточиться на главном. Хороший пример абстракции — функция сортировки списка. Не важно, как она устроена, важно, что она делает то, что нам нужно.
Другой пример — функции высших порядков, такие как map
и filter
. С их помощью можно обрабатывать коллекции и не знать, как они устроены внутри. Причем коллекция необязательно должна быть плоской. Подобные функции можно написать для большого количества сложных структур, например, для деревьев.
Абстракция с помощью функций помогает сосредоточиться на самой обработке, а не на процессе обхода данных.
Также у самих данных нередко бывает сложная структура. Чтобы представить пользователя в нетривиальной системе, может потребоваться описание десятков и сотен различных параметров и данных, которые связаны с ними. В этой ситуации полезно спрятать сложную структуру за набором функций. Такие функции скрывают внутреннюю сложность и упрощают поддержку кода. Подобное сокрытие деталей реализации и называется абстракцией с помощью данных.
В этом курсе мы познакомимся с базовыми принципами проектирования программ. Мы узнаем, как моделировать и представлять в программе объекты реального и воображаемого мира. Мы создадим библиотеку для работы с графическими примитивами: точками, отрезками, фигурами. Эта библиотека с визуальной стороны будет понятна всем, и просто представляется в коде.