Pull to refresh

Category theory: начало

Reading time6 min
Views3.2K
Original author: countedblessings

Всем привет.

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

Меня зовут П., мне 37 и я начал учиться программированию в 33-34 года (старт был размыт в 2016-2017 годах). Я начал с изучения C# для последующего трудоустройства в качестве разработчика игр. Скорее всего на мое решение повлияла жена с её пониманием достижения скорейшей прибыли (ошибка 1: я, в очередной раз в своей жизни, погнался за материальными ценностями в ущерб внутреннему Миру). Учиться я начал на одном крупном онлайн ресурсе, который не заслужил упоминания о себе (ошибка 2: я верил, что за деньги можно получить качественное образование, потому что за него заплачены самое ценное в этом мире - ДЕНЬГИ).

Обучение затянулось (по моей вине) и вместо 3-х месяцев продлилось около года. В этот период я занимался ни шатко ни валко. В процессе этого обучения я понял, что разработка игр не мое и я переключился на java (произошло это уже в 2018 году). В процессе самостоятельного изучения java я предпринимал попытки найти себе деятельность связанную с этим языком. Продолжалось мое бессистемное изучение java около 1.5 лет. Я ничего не создал и не нашел деятельность, где могу применить себя как разработчик. Тем не менее, в процессе поиска занятости наткнулся на вакансию команды разработчиков, которая предлагала программу обучения и трудоустройство после этого. Программа была доступна в двух вариантах: фронтенд (JS/TS, React.Js, Redux) и бэкенд (Haskell). Без особых оснований я выбрал бэкенд и Haskell (шел 2019 год). В ходе этой деятельности, я влюбился в Haskell. К сожалению, любовь не кормит, а у меня возрастные особенности и необходимость кормить достаточно большую семью (жена и больше двух детей).

В связи с этим в 2020 году (перед мировыми потрясениями) я принял решение пойти на платный курс того же онлайн ресурса по изучению python и программой с уклоном в сторону ИИ (ошибка 3: взвешенное решение: "python высокорелевантный язык"; "по прошествии n лет, предположил, что ресурс изменил свой подход к образованию, так как документально гарантировал трудоустройство"; "по результату обучения выдается диплом о повышении квалификации"; "не хотелось, чтобы деньги обесценились, поэтому хотелось вложить их в себя" - может оказаться совсем невзвешенным, другими словами наивным). На текущий момент я продолжаю обучение на онлайн курсе. Я не подтвердил свое предположение об улучшевшейся модели обучения, но я получил некую программу, которой я могу следовать и которая не позволяет мне забросить обучение на длительный срок.

Вступительная часть закончена. Она написана немного для себя, в качестве фиксации пройденного, частично для других, в качестве подбадривания: учиться никогда не поздно и никому не рано.

Материалы, которые планирую публиковать в ближайшее время, будут свободным переводом статей, которые мне показались наиболее доступными для понимания в области изучения теории категорий. Прежде чем приступить к самой теории, я переведу статью о том, для чего нужна теория категорий, так как сам окончательно не нашел ответ на этот вопрос и мой приятель программист с многолетним стажем сказал, что эта теория ни разу не встречалась на его профессиональном пути. Из-за того, что ссылки на сторонние ресурсы запрещены, я позволю себе указать ник автора переводимой статьи: countedblessings.

Переводимая статья называется: Что за теория категорий?

Теория категорий - это всея математика, а точнее это математическая теория о математической структуре. Так выходит, что любой раздел математики, с которым возможно знакомство в любом высшем образовательном заведении, является всего лишь частным случаем категории. Например: теория групп проистекает из категории групп; топология проистекает из категории топологических пространств.

Выражаясь более точно, теория категорий демонстрирует, что всевозможные математические структуры могут быть разбиты на разделы и стрелки между разделами. Таким образом, можно определить категорию в упрощенной форме, как разделы и стрелки. Кроме того нужно упомянуть композицию, которая в своей основе, на примере маршрута птичьего полета, показывает, что птичий путь в Канаду из Мексики через США может иметь "прямой" путь из Мексики в Канаду.

Разбиение любой математической структуры на разделы и стрелки между ними представляет собой сверхобщий, сверхабстрактный способ изучения математики. Это действие подобно попыткам изучения творчества Шекспира, путем разбиения предложений в его текстах на существительные и глаголы. Теория категорий имеет репутацию болезненной абстракции. Эта теория даже носит имя "абстрактного нонсенса", полученное от одного из основателей теории. Ввиду этого обычно рекомендуется иметь в багаже знаний несколько математических дисциплин (алгебра, теория групп, топология, др.) перед изучением теории категорий. Это необходимо для того, чтобы была возможность свести абстракцию к конкретным примерам (тяжело изучать глаголы без знания конкретных действий, которые описываются глаголами прыгать и бегать).

Когда необходимо разбить предложение (например Шекспировское "Быть или не быть") на слова неопределенной формы, союзы и частицы, оказывается, сверхобщий подход теории категорий необычайно полезен в этом деле.

Также можно сказать, что многие математические идеи можно привести к сопряженному функтору: специальной конструкции, которая может быть объяснена только через теорию категорий. Многие категориальные теоретики скажут, что сопряженный функтор - самая суть теории категорий. Сопряжение, как бы абстрагирует саму оптимизацию. Об этом ярко свидетельствует лемма Йонеды, которая представляет из себя элегантность математической мысли, при глубине смысла и широкой области применения.

Вы можете задумываться о том, что приводит к успешному применению теории категорий в различных областях науки. Как вообще можно применить что-то настолько общее и абстрактное к точно определенной и конкретной реальности?

Итак, теория категорий представляет из себя сверхобщую математическую структуру, поэтому каждый раз изучая сверхобщий феномен имеет смысл думать принципами теории категорий. Что же из себя представляет сверхобщий феномен? Например, законы физики! Предполагается, что они описывают все явления. Если вы ищете фундаментальный закон, который может быть применен как к мельчайшей частице, так и к гигантским планетам, а также к сложным живым существам, состоящим из мельчайших частиц и живущим на планетах, смело можете применять теорию категорий.

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

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

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

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

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

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

Tags:
Hubs:
Total votes 17: ↑9 and ↓8+1
Comments11

Articles