Сила абстракции. Вот чему я научился.

Позвольте мне рассказать вам небольшую предысторию о том, как я стал скрипачом.

На Рождество 2017 года я смотрел программу по телевизору. Программа называлась «Опыт». Это было собрание христиан, чтобы воздать хвалу Богу за конец года. Различные христианские музыканты собираются вместе, чтобы вести богослужение. Пока я смотрел, на сцену вышел скрипач. Его звали Мануэль Друмински. После этого я немного проверил его. Он играл: «Ты поднимаешь меня. Я был действительно очарован этим инструментом. Я мог бы описать его игру только как чрезвычайно вдохновляющую ловкость.

Как я открыл для себя абстракцию как скрипач?

По мере того, как я продолжал учиться, я начал слышать безумно интересные вещи. Такие вещи, как «физика музыки». Что, однако, было очень интересно для меня, так это то, что мне рассказал мой маэстро. Он сказал: «Что было бы своего рода гигантским шагом, признаком заметного роста была бы возможность играть в темноте».

Под этим он имел в виду, что я смогу играть, не глядя на гриф. Конечно, в тот момент я думал, что это невозможно. Как можно было ожидать, что я сделаю что-то подобное? Я пробовал свои силы в этом так много раз, сдаваясь между ними. Как кто-то мог это сделать?

У меня не было выбора…

Весной 2019 года я отнесла свою скрипку в учебное заведение, где встретила друга, который играл на альте. Он научил меня нескольким вещам об инструменте, теории музыки и музыкальности. Это помогло мне в 10 раз увеличить мою игру.

Через некоторое время он пригласил меня на прослушивание в оркестр, в котором он был членом. В этот момент я лучше играл, не глядя на пальцы. Это было непросто. Я думал, что смотреть на свои пальцы — лучший способ избежать ошибок, или я так думал. Мне не потребовалось слишком много времени, чтобы осознать ценность этого навыка. Я был скрипачом в оркестре с относительно небольшой секцией скрипки.

Если вы не поняли, что это значит, значит, если я и накосячил, то это было более заметно.

Всегда было множество вещей, для которых мне приходилось использовать свои глаза. Например, брать реплики у концертмейстера и дирижера. Концертмейстер – руководитель группы скрипачей. Время от времени просматриваю свои ноты. У меня также была свободная рабочая память. Мне не нужно было использовать глаза, чтобы следить за пальцами. Почему это важно?

Использование моих глаз требует использования моего мозга. Ему нужен отдых.

Умение так играть позволило мне достичь еще большего мастерства игры на скрипке. Теперь мне было легче следить за временем: я знал, где отдохнуть и где поиграть. чтение с листа: воспроизведение музыки с листа, не выучив ее.

Абстракции сильны, очень

Опыт работы в оркестре меня многому научил.

Абстракция может сделать меня богом.

Теперь я мог получить доступ к навыкам на том же уровне. Что еще более удивительно, я мог получить доступ к навыкам на более высоком уровне.

Освоение одного навыка — это путь к другому.

Я обсуждаю важную вещь в этой предыдущей статье. Дело в том, что есть абстракции, и вы должны понимать, как они работают. На самом деле это из книги, которую я пишу, «Абстракции, порождающие страсти», но я остановился. Я остановился, потому что не мог найти идеи.

Как это применимо к коду?

Это поможет вам сосредоточиться на важных вещах.

Мы абстрагируемся в коде, чтобы иметь доступ к функциям более высокого уровня. Мы не беспокоимся о том, как все работает. У меня могла бы быть целая функция, вызывающая функции из библиотеки, но я не знаю, как она работает.

Это просто работает. Именно так большинство из нас используют сторонние библиотеки.

Ваш разум свободен, чтобы сосредоточиться на создании функций более высокого уровня. В программировании много абстракции. Большинство из нас не знают, как работает язык программирования, который мы используем. Мы немного знаем, но многие ли знают, как работает GIL: Global Interpreter Lock в python?

И вы не должны, если вы не должны.

Если я создаю веб-сайт, я могу знать, как работает фреймворк (Django), но

  • А как насчет языка, используемого для написания фреймворка? (Питон)
  • А как насчет языка, на котором писали на этом языке? (С)
  • Тогда как базовый язык компилируется в машинный код? Python компилируется только в байт-код, который может запустить интерпретатор. Он не компилируется в машинный код.
  • Как машинный код работает на транзисторе (используя двоичный код)? Я понимаю математику за этим?
  • Как насчет логических вентилей?
  • Как вообще устроены транзисторы? Транзисторы — единственное важнейшее изобретение, позволяющее реализовать все вычислительные

Большинство из нас не знают, как эти вещи работают, да и не должны знать. Если вы обременены знанием всего обо всем, вы ничего не сможете сделать.

Слишком много нужно знать.

Не поддавайтесь проклятию Джека, он мастер на все руки, но не мастер ни в чем.

Другое дело, возможно ли мастерство, не зная всего этого.

Но тогда я даже не верю, что мастерство существует. Мастерство, как мы его называем, — это рост понимания за пределами других. Это никогда не прекращается. Но тот факт, что не каждый может или захочет достичь мастерства, подчеркивает его престиж.

Абстракция помогает писать хороший код

Абстракция позволяет разработчикам разделять задачи. Это упрощает понимание, сопровождение и расширение кода. Разработчики могут сосредоточиться на конкретной ответственности каждого уровня. Им не нужно беспокоиться о том, как работают другие слои.

Например, веб-приложение будет иметь внешний слой. Это будет отображать информацию для пользователей. У него также будет внутренний уровень для обработки запросов и управления данными. Также уровень базы данных для хранения информации.

Разработчики используют абстракцию, чтобы разделить эти слои и работать с каждым слоем независимо. Они не заканчиваются зависимостями, которые могут привести к сложному и подверженному ошибкам коду.

Никому не нужен ваш спагеттированный код.

Абстракция помогает писать тесты с использованием заглушек и имитации.

Разработчики должны убедиться, что они тестируют только предполагаемую функцию. Они делают это, изолируя части кода.

Вот тут-то и появляются заглушки и насмешки. Это позволяет нам создавать тестовые двойники или двойники. Они имитируют поведение внешних зависимостей или сложного кода. Абстракция упрощает этот процесс. Он обеспечивает четкие интерфейсы и границы между компонентами.

Это упрощает заглушку или имитацию зависимостей, не затрагивая другие части кода.

Например, предположим, что вы тестируете функцию, которая использует сложный запрос к базе данных. Вы можете абстрагировать доступ к базе данных в отдельный компонент. Затем вы можете создать фиктивный объект базы данных, который возвращает предварительно определенные данные для ваших тестов.

Это позволяет вам тестировать свою функцию, не полагаясь на реальную базу данных. База данных может быть медленной или непредсказуемой. Это две вещи, которые вам не нужны в вашем тесте.

Абстракция помогает легко выявлять ошибки

Абстракция также может помочь выявить ошибки на ранних этапах процесса разработки. Это делает код более модульным и его легче тестировать.

Разбивая сложную функциональность на более мелкие, более управляемые компоненты. Разработчики могут сосредоточиться на конкретном поведении каждого компонента и тщательно протестировать его. Это может помочь выявить ошибки, которые могут быть упущены в более монолитной кодовой базе.

Например, предположим, что у вас есть веб-приложение, которое обрабатывает аутентификацию пользователей. Вы должны абстрагировать логику аутентификации в отдельный компонент. Затем вы можете тщательно протестировать его и отловить любые ошибки.

Следите за моей работой

👉 Следите за моими историями и уроками на YouTube.

👉 Получите членство по моей реферальной ссылке.

👉 Подпишитесь на мою Информационную рассылку,

  • Читать бесплатно, если у вас нет подписки на премиум-среду.
  • Или для обновлений, когда я публикую.

👉Подпишитесь на меня в Linkedin и Twitter.