Изучив Haskell и другие не очень чистые языки FP, я решил прочитать о теории категорий. Получив хорошее понимание теории категорий, я начал думать о том, как концепции теории категорий могут быть использованы для разработки программ, но, как бы я ни старался, кажется, это не тот путь.
Проведя много неудачных попыток связать теорию категорий с проектированием программ, я пришел к выводу, что:
- Теория категорий полезна при разработке языка программирования .
- Теория категорий - это не то, что вы используете при разработке программ (даже при использовании языка, который был разработан на основе принципов категорий). Например: при программировании на Haskell вы будете использовать типы, конструктор типов, функции, функции высшего порядка и т. Д. Для разработки своей программы, а не концепции теории категорий.
В итоге мы имеем систему нижнего уровня (порядок от низкого до высокого):
Теория категорий -> Язык программирования -> Программа
На определенном уровне вы используете концепции непосредственного нижележащего уровня .
Это понимание правильно? Если нет, и вы считаете, что при разработке программ мы можем напрямую использовать концепции теории категорий, просим обратиться к некоторым статьям или публикациям в блогах, где это демонстрируется.
ПРИМЕЧАНИЕ. Под разработкой программ я подразумеваю разработку программ на основе различных концепций, таких как параллелизм, параллелизм, реактивность, передача сообщений и т. Д.
Ответы:
Ну, это, конечно, зависит от того, какую программу вы пытаетесь создать.
Если вы разрабатываете бухгалтерскую программу для шоколадного магазина вашей тети, я очень сомневаюсь, что теория категорий будет очень полезна.
Но, конечно, существуют ситуации, в которых теория категорий чрезвычайно полезна при разработке программ (под которыми я также имею в виду структуры данных, библиотеки и т. Д.). Такие ситуации чаще всего возникают, когда участвующие программы имеют математическую природу.
Если вы хотите написать программы, которые вычисляют с точными действительными числами и другими структурами, встречающимися в математическом анализе, первый вопрос, на который вам нужно ответить, - что это означает для правильной реализации сложного математического объекта (такого как дифференцируемая функция, многообразие и т. Д.). ). Здесь очень полезно знать некоторые теории и логику категорий, потому что они дают вам систематический способ перевода определений математических структур в спецификации и реализации соответствующих структур данных. Модное слово, которое вы должны искать, это теория реализуемости . Но это только один пример.
Лучший способ увидеть, как теория категорий пригодится, - это посмотреть программы, написанные людьми, которые много знают теорию категорий (и математику в целом). Очевидным примером этого является Мартин Эскардо и его невозможные функционалы, например:
Вы можете жаловаться, что это не только теория категорий, но также логика и топология. Такие жалобы были бы строго ошибочными. Лучшая теория категорий всегда смешана с другими вещами.
Наконец, я бы посоветовал не делать грандиозных выводов о природе вещей, основанных на небольшом количестве самостоятельного чтения.
источник
Люди использовали CT для описания типов данных.
Я не совсем уверен, что кто-нибудь больше обращает на это внимание. Я думаю, что это , и ссылки там, объяснят это более подробно.
источник