Как программист, вы, вероятно, встречали функцию map () как альтернативный способ выполнения цикла for в некоторых случаях использования кода. Знаете ли вы, что map () возникла в теории категорий?

Давайте сначала определим теорию категорий. (Между прочим, я собираюсь здесь больше говорить в терминах непрофессионала без математической точности темы. В будущих сообщениях я буду более подробным и точным. Это больше похоже на вид на 10 000 футов.)

Помните, когда вы изучали основы ООП (объектно-ориентированного программирования)? Преподаватель или автор объяснил, как все в мире можно рассматривать как объект; у объектов есть свойства (например, «красный» автомобиль) и поведение (например, «ускоряться»). Вы могли бы подумать, что это будет в значительной степени наиболее общий способ взглянуть на вещи в нашей Вселенной; По крайней мере, так думали математики до 1940-х годов. В то время математики Сэмюэл Эйленберг и Сондерс Мак Лейн определили, что существует еще более абстрактный способ взглянуть на Вселенную; как категории вещей. Например, как категория «все иерархические»; или «все, что есть совокупность вещей».

Интересно то, что в ходе дальнейших исследований они определили, что существуют правила трансформации между этими объектами в этих категориях; и даже между разными категориями. Они называются морфизмами; aka (по крайней мере, в некоторых учебниках) map (). По сути, это функция, которая отображает один объект в другой объект в категории или из одной категории в другую категорию, но особый тип функции, называемой «функцией сохранения структуры». Это что? Обратите внимание, что ваша любимая функция карты принимает массив в качестве входных данных и возвращает массив с тем же количеством элементов. Это ограничение, которое делает map () map (). Однако элементы внутри возвращенного массива можно преобразовать во что угодно. Вот что трансформируется; а не сама структура (или контейнер, т.е. массив).

Теория категорий нашла применение во многих дисциплинах; и, как вы понимаете, в самой информатике. Есть хорошие новости и плохие новости. Плохая новость в том, что теория категорий очень сложна на продвинутом уровне; настолько, что многие математики считают это эзотерическим. Хорошая новость в том, что вам не нужно знать все, чтобы извлечь из этого практическую пользу. Собственно, концепции, которые пригодятся программистам; в основном функциональные программисты; довольно просты и понятны.

Одна из самых простых книг по теории категорий, которую я нашел, - это… Категория «Теория для наук» (2014) Дэвида И. Спивака. Это свет по математике. Теория категорий очень «перегружена обозначениями», и в этом учебнике есть более простые и подробно объясненные диаграммы.

Теория категорий помогла мне в программировании несколькими практическими способами:

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

Я остановлюсь на сегодня, но вернусь, чтобы написать больше о теории категорий.