Спустя миллионы лет люди начали думать, что мы самый умный вид во Вселенной. Это может быть правдой. Или нет. Даже по прошествии стольких лет «естественного отбора» наш мозг по-прежнему испытывает большие трудности при осмыслении сложных нечеловеческих систем. Что еще хуже, так это тот факт, что наш мир, каким мы его знаем, наполняется все большей и большей сложностью. Итак, как люди, как мы справляемся с этим? Мы пришли к пониманию, что для решения этих сложных вопросов нам нужен своего рода «адаптер» между сложностью вселенной и «нашим простым примитивным разумом». Глядя на сложную проблему, мы пришли к выводу, что, убрав всю ненужную информацию и приступив к основам, мы можем решить нашу проблему, используя абстракции. В качестве адаптера, который мы ищем, можно использовать абстракцию.

В презентации Тома Стюарта «Сила абстракции» Том приводит несколько примеров того, как работает этот процесс. Использование примеров, которые убрали бы специфику объектов и свели бы их к математическим уравнениям. Он показал, что при этом вы можете получить ответы на свои проблемы и что этот процесс будет работать с другими объектами, не зная их специфики. Яблоки, апельсины, точки. Не важно. Все сводилось к цифрам. Затем из этой абстрактной информации была выведена формула. И было доказано, что это работает. Точно так же, как если бы вы добавили 5 яблок к 4 яблокам, вы получили бы 9 яблок. Используя эту формулу, вы можете прибавить 5 чего угодно к 4 чего угодно, и вы все равно получите ответ 9.

Мы можем использовать эту концепцию при написании нашего кода. В документальном фильме Ричарда Фейнмана он прокомментировал: «Когда что-то кажется сложным, возможно, мы смотрим на него неправильно и упускаем из виду некоторые кусочки головоломки». Как программист, когда мы сталкиваемся с большим количеством сложно выглядящих результатов, нам нужно выяснить абстрактную модель, которая предсказывает этот результат. Используя эти абстракции, мы можем понять сложность этих реальных ситуаций и быть в состоянии решить их понятным образом. Преимущества абстракций очевидны повсюду. От математиков до ученых, программистов, физиков и многих других. Абстракции помогают нашему маленькому уму понять окружающий мир и позволяют нам находить правильные ответы в наших алгоритмах.

В завершение этого блога я должен привести вам еще одну цитату Тома Стюарта, которая резюмирует эту идею в ореховой скорлупе. «Если вы можете написать программу, вы хорошо разбираетесь в математике. Вы можете не называть это так, вам может даже не понравиться это, но так оно и есть. Математика — это изучение абстракции, а абстракция — это то, о чем мы говорим, когда говорим о программировании».