LINUX.ORG.RU

Теория категорий

 


4

6

Объясните мне, как математику-прикладнику, в чем особая фича теории категорий? Разве это не чисто рефлексивная метаматематическая теория? Да, прикольно, конечно, осознавать, что то, что ты там быдлокодишь это на самом деле всякие морфизмы и монады, но не более.

Приведите пример прикладной задачи, которая существенно упрощается, будучи сформулированной в терминах категорий. Я пока не видел особого применения даже абстрактной алгебры к прикладным областям (исключим из «прикладных областей» ту же разработку трансляторов для языков программирования и связанные области).

Не в толксы, потому что не все, кто может ответить на этот вопрос, туда ходят.

★★★★★

Ответ на: комментарий от Manhunt

служить языком и формальным аппаратом других наук

И как же, например, клеточные автоматы или фракталы или выворачивание сферы наизнанку или визуализация плоского тора относятся к «формальному аппарату»?

Весь этот «аппарат» возник, когда математикам приспичило описывать свои феерические ментальные выверты, а остальная наука заимствовала его главным образом потому что с помощью него можно спокойно взять и скрестить ужа с ежом, что только добавило лулзов.

Macil ★★★★★
()
Ответ на: комментарий от buddhist

некоторые советуют _все_ задачи сводить к категориям

а можно пруфпик вот к этому утверждению? кто, где, когда. ну, на ЛОРе. а то если его нет, то можно расходиться

jtootf ★★★★★
()
Ответ на: комментарий от Manhunt

Основная цель математики — служить языком и формальным аппаратом других наук

У вас хорошая криокамера :)

buddhist ★★★★★
() автор топика
Ответ на: комментарий от den73

И чем здесь поможет теория категорий?

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

linuxnewb
()
Ответ на: комментарий от linuxnewb

бугуртить

У них будет Букур.

buddhist ★★★★★
() автор топика
Ответ на: комментарий от nokachi

Сложно искать черную кошку в темной комнате, особенно если ее там нет.

anonymous
()
Ответ на: комментарий от vertexua

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

fix

Rastafarra ★★★★
()
Ответ на: комментарий от anonymous

Весь мир полон дебилов

а разве это не так?

anonymous
()

Объясните мне, как математику-прикладнику, в чем особая фича теории категорий?

Нету никакой такой фичи.

Приведите пример прикладной задачи, которая существенно упрощается, будучи сформулированной в терминах категорий.

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

Я пока не видел особого применения даже абстрактной алгебры к прикладным областям

Что понимается под абстрактной алгеброй?

anonymous
()
Ответ на: комментарий от Macil

И как же, например, клеточные автоматы или фракталы или выворачивание сферы наизнанку или визуализация плоского тора относятся к «формальному аппарату»?

Проблема в том, что клеточные автоматы, фракталы и выворачивания сферы имеют семантику. А теоркат - нет. по-этому первое в принципе применимо, а второе - нет (кроме как для обслуживания первого).

anonymous
()
Ответ на: комментарий от anonymous

Теоркат нужен для одной единственной вещи - удобно и емко записать уже существующий результат

Такое видение мне кажется наиболее рациональным.

Что понимается под абстрактной алгеброй?

Я несколько погорячился тут.

buddhist ★★★★★
() автор топика
Последнее исправление: buddhist (всего исправлений: 1)
Ответ на: комментарий от anonymous

по-этому первое в принципе применимо

Люблю слово «в принципе». Ну хорошо. Допустим клеточные автоматы, etc, «в принципе» применимы. А теоркат - «в принципе» не применим. И о чем это говорит? Да ни о чем!

Собственно откуда появился срач про теоркат? Типа в хаскеле типклассы Monad, Applicative, Functor и Arrow имеют под собой определенные теоретикокатегорийные обоснования. Но во-первых, для их понимания и успешного использования изучать теоркат не требуется; во-вторых, они покрывают мелчайшую часть теории категорий. Т.е. даже если и читать что-то по теоркату то глубже чем, «вот категория Hask», «вот объекты», «вот морфизмы», «вот энодфункторы», «вот два натуральных преобразования», забираться абсолютно бессмысленно.

В хаскеле, имплементирование какой-то сложной сущностью типклассов Functor, Monad, Applicative, Alternative АБСОЛЮТНО, БЛИН, ЕСТЕСТВЕННО. Навроде наследования от Object в Яве.

Macil ★★★★★
()
Ответ на: комментарий от alienclaster

И как Darcs, юзабелен?

Не знаю - последний раз я пробовал его использовать во времена Darcs 0.99.чототам. Но, судя по тому, что в Haskell-сообществе стандартом стал git, Darcs ему сливает.

Пойнт в том, что гениальные одиночки используют Haskell для всякой зауми, и эта заумь отнюдь не всегда становится мейнстримом («теория патчей» Darcs - хороший пример).

tailgunner ★★★★★
()
Ответ на: комментарий от Macil

Собственно откуда появился срач про теоркат?

Оттуда, что некоторые хаскелисты стали говорить, что писать программы в категорном стиле — это единственно православный способ. Пруфлинков не будет, сейчас уже не найду.

buddhist ★★★★★
() автор топика
Ответ на: комментарий от anonymous

Теоркат нужен для одной единственной вещи - удобно и емко записать уже существующий результат

Почти определение программирования.

tailgunner ★★★★★
()
Ответ на: комментарий от Macil

Люблю слово «в принципе». Ну хорошо. Допустим клеточные автоматы, etc, «в принципе» применимы.

«В принципе» - значит можно конкретный пример провести. То есть тут суть в том, что сущности теории в некотором смысле напрямую мапаются на сущности предметной области. На самом же деле мы не используем в математике теорию множеств. Когда вы изучаете топологию, и у вас есть некоторое конкретное топ. пространство, то с точки зрения теормножа - это какая-то жуткая система хитровыебанновложенных друг в друга множеств состоящих из пустых множеств. Но вы об этом не думаете, вы если видите определение сферы, то, блять, представляете сферу! Есть некоторая геометрическая интуиция, и если вы получаете какой-то результат, то вы его получаете именно в рамках этой наглядной интуиции. Переложение результата на строгий язык - это не более чем самопроверка, оно на самом деле и не обязательно. Задача решена, когда она решена «интуитивно». И, естественно, нет никакой разницы какая теория лежит под капотом - то есть думать вы будете в рамках одних и тех же сущностей, базовая теория на это не влияет. Единственное на что влияет выбор теории - это какими значками вы будете сущности описывать. Если же интуиции нет - то и результатов никаких нет. Потому что доказательство какой-либо осмысленной теоремы будет сродни случайному написанию войны и мира обезьяной. Так вот, когда что-то мапается на такие вот объекты как сферы, спички (числа) и т.п. - то оно определенно применимо, потому что эти объекты актуально встречаются в реальности. ну как мы взяли и сказали «ага, раз верна теорема о еже и дует ветер, то где-то определенно есть (анти)циклоны!». Но используется алгебра, топология, арифметика, матан. А теория множеств не используется, потому что хоть объекты и мапаются, но мапаются они тривиально (множества на мешки с картошкой), а придумать какое-то интересное утверждение о пересыпании картошки из одного мешка в другой затруднительно. Так что никому нахуй не нужна теория множеств в этом плане. И теоркат точно так же нахуй не нужен со своими морфизмами, потому что то, что мы можем сказать о «просто морфизмах» - это хуйня навроде пересыпания картошки из мешка в мешок. А если мы изложим топологию с точки зрения теорката, как с точки зрения теории множеств - то мы получим какую-то жуткую конструкцию в какойто категории (сродни тем хитровыебанным множествам в теормноже) и оно тоже никому нахуй не надо, потому что при виде слова «сфера» тополог все равно будет видеть в уме сферу, а не соответствующие коммутативные диаграммы. То есть вопрос-то более фундаментален. НИНУЖЕН не теоркат. Не нужны такие вот «базовые теории».

Собственно откуда появился срач про теоркат? Типа в хаскеле типклассы Monad, Applicative, Functor и Arrow имеют под собой определенные теоретикокатегорийные обоснования.

Согласен со всем что написано далее и со взглядом на математику тоже совершенно согласен. Считаю математику (со времен месье Эвариста, пусть земля ему будет пухом) направлением в искусстве и читаю математику как слушаю музыку. Лулзы и собственное удовольствие - вот зачем нужна математика, действительно. Что до монад функторов и прочей хуйни - если назвать монаду «абстрактным контекстом» и сказать, что это «паттерн проектирования», то не пройдет и полгода как вы увидите в каждом втором жабопроекте абстрактные фабрики абстрактных контекстов. И никому не помешает незнание определения моноида в категории, да.

anonymous
()
Ответ на: комментарий от tailgunner

Почти определение программирования.

Речь не о любом результате, а о некоем классе результатов. Попытка записать (x^2)' = 2x уже будет рокетсаенсом. Каждой предметной области - свой дсл. Так работает математика. А универсальные дсли нахуй не нужны никому, да. потому что это уже хуета а не дсл.

anonymous
()
Ответ на: комментарий от anonymous

Что до монад функторов и прочей хуйни - если назвать монаду «абстрактным контекстом» и сказать, что это «паттерн проектирования», то не пройдет и полгода как вы увидите в каждом втором жабопроекте абстрактные фабрики абстрактных контекстов.

Да вот простейший пример подобной схемы - назвали терминальный объект синглтоном и пишут себе спокойно софт с этими снглтонами. И не парятся.

anonymous
()
Ответ на: комментарий от buddhist

программы в категорном стиле

а вот это, кстати, что вообще такое?

jtootf ★★★★★
()
Ответ на: комментарий от tailgunner

«теория патчей»

Реквестирую теорию теорий :)

Прошу прощения, конечно же теорию малых теорий.

buddhist ★★★★★
() автор топика
Ответ на: комментарий от buddhist

Реквестирую теорию теорий :)

Уверен, что в Haskell Cabal ты найдешь что-нибудь подходящее %)

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

Сеньоры полопаются от зависти, жуниоры притихнут в благоговении, а девки так просто потекут

Потом хацкелист просыпается, пьёт растворимый кофе и в унынии бредёт на работу кодить на C++.

mv ★★★★★
()
Ответ на: комментарий от vertexua

Я выкрикну «все велосипедисты - негодяи!» . Я должен это доказывать?

Я думаю, это зависит от отношения к себе, прежде всего.

den73 ★★★★★
()
Ответ на: комментарий от Macil

Я ответил:
а я ничего и не отвечал.

Это уже за пределами моего понимания, прошу прощения.

den73 ★★★★★
()
Ответ на: комментарий от linuxnewb

linuxnewb
И чем здесь поможет теория категорий?
Кому-то поможет, кому-то нет.

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

den73 ★★★★★
()
Ответ на: комментарий от den73

В общем-то, о взаимосвязи теории с практикой рассказывают самое позднее на втором курсе любого технического вуза. Поэтому ответ на вопрос «кому поможет» вполне закономерен.

linuxnewb
()
Ответ на: комментарий от Macil

В общем, похоже, вот ответ:

Собственно откуда появился срач про теоркат? Типа в хаскеле типклассы Monad, Applicative, Functor и Arrow имеют под собой определенные теоретикокатегорийные обоснования. Но во-первых, для их понимания и успешного использования изучать теоркат не требуется; во-вторых, они покрывают мелчайшую часть теории категорий. Т.е. даже если и читать что-то по теоркату то глубже чем, «вот категория Hask», «вот объекты», «вот морфизмы», «вот энодфункторы», «вот два натуральных преобразования», забираться абсолютно бессмысленно.

И ответ этот звучит для меня как «теоркат не нужен».

den73 ★★★★★
()

Давным-давно в одной далекой галактике Tatsuya Hagino придумал язык CPL (Categorical Programming Language), а чуть менее давно другой японец Masahiro Sakai сделал годный его интерпретатор. Hagino свою реализацию делал на Лиспе, а Sakai догадался таки задействовать языки программирования - сперва Руби, затем Хаскель (ибо Руби медленный, на Хаскеле в сто раз быстрее заработало). И вот полный текст программы на CPL:

right object 1 with !
end object;

right object prod(a,b) with pair is
  pi1: prod -> a
  pi2: prod -> b
end object;

right object exp(a,b) with curry is
  eval: prod(exp,a) -> b
end object;

left object nat with pr is
  zero: 1 -> nat
  s: nat -> nat
end object;

let add=eval.prod(pr(curry(pi2), curry(s.eval)), I);
let mult=eval.prod(pr(curry(zero.!), curry(add.pair(eval, pi2))), I);
let h = mult . pair(s, I);
simp h.h.h.s.zero;
которая выводит результат s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.s.zero т.е. ровно 42.

Что же тут происходит?

jamy
()
Ответ на: комментарий от jamy

Нужно? Примеры существенного упрощения (возможно, в описательном смысле) задач прикладной математики и программирования при использовании аппарата теорката.

buddhist ★★★★★
() автор топика
Ответ на: комментарий от buddhist

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

jamy
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.