Абстракция данных и решение задач на C++. Стены и зеркала (Data Abstraction & Problem Solving with C++: Walls and Mirrors)
Пришло время еще одной ретро-книги из моего прошлого. Третье издание книги про стены и зеркала Фрэнка М. Каррано и Джанет Дж. Причард вышла в 2003 году. В этом году я как раз купил эту книгу для изучения языков программирования на первом курсе. Забавно, что корни книгиуходят к книге 1986 года "Intermediate Problem Solving and Data Structures: Walls and Mirrors", которая была издана в год моего рождения. Свзяь книг была через ключевые концепции "стен и зеркал", которая пронизывает всю книгу:
- "Стены" символизируют абстракцию данных - скрытие деталей реализации модуля от остальной программы, подобно тому, как стена может изолировать и скрыть
- "Зеркала" представляют рекурсию - повторяющуюся технику решения проблем путём решения меньших версий той же проблемы, подобно тому, как изображения в обращённых друг к другу зеркалах становятся всё меньше с каждым отражением
Сама книга состоит из двух основных частей
- Методы решения задач - принципы программирования, рекурсия, абстракция данных, связанные списки
- Решение задач с помощью абстрактных типов данных - стеки, очереди, эффективность алгоритмов, сортировка, деревья, таблицы, графы
Я помню, что в книге рассказывалось про важные моменты, которые тогда еще мне казались нетривиальными
- Различие между спецификацией и реализацией - так вво основа объектно-ориентированного подхода
- Инкапсуляция, наследование и полиморфизм как ключевые понятия ООП
- Абстрактные типы данных как базовые кубики разработки
- Рекурсивные методы решения задач
Книга стала популярной в академической среде США и она была переиздана 8 раз, причем воьсмое издание вышло в 2024 году, но я не видел переводов новых изданий на русский язык. Сейчас третье издание книги интересно только с исторической точки зрения, но когда-то она мне действительно помогла понять базовые концепции, но на C++ я писать профессионально не стал:)
P.S. Книга уехала в букшеринг уголок в нашем офисе.
#Software #Engineering