LINUX.ORG.RU

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

 


4

6

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

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

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

★★★★★

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

А это вообще к программированию не сводится. Это CRUDятина позорная.

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

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

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

Дебилов, если кто не в курсе, 95% в любой произвольной выборке (даже если выбирать по категории «нобелевские лауреаты»).

Попытался уйти от ответа? Try harder!

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

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

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

Не нравится клоунада? Дык в цирке по-другому никак, извини, тора гой.

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

Интересно, а если мне надо вывести на экран форму Торг-12, то как это сводится к разработке трансляторов?

Сударь, неужели Вы не поняли?

Сия дискуссия — об анафорических лямбдах, пандорических захватах, рекурсивных схемах, аппликативных функторах, ленивых продолжениях, зигохистоморфных препроморфизмах, метациклических суперкомпиляторах, монадических трансформерах, кластерах метапарадигм, алгебре и коалгебре Калвина Элгота наконец. А Вы влезаете в неё со своей императивной пошлятиной. Фи, как это низко, сударь! Я Вам сейчас лицо набью!

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

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

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

А если вместо реальной разработки человек фапает на моноиды в категории эндофункторов — это как называется?

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

Это так и называется - фапает! Нужно не фапать, а использовать!
Нужно использовать
Нужно

Но зачем? Ведь применение ТК и прочей академически-яйцеголовой шелухи не дает никаких преимуществ на практике.

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

фапать на Катю Лель и иметь Катю Лель две большие разницы

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

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

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

Так мой оригинальный вопрос, собственно, в том и состоит: зачем некоторые советуют _все_ задачи сводить к категориям.

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

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

Кому дает, а кому и не дает! Тут уж как повезет...

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

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

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

даже текстовый редактор к в конечном итоге является таким «языком»

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

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

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

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

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

Ну так я и имею с этого раз в десять больше чем средний программист.

Самое время огласить свой доход за 2011 год :D

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

то, что без него за то же время сделали бы десять программистов

Самое интересное что он прав. Есть куча проектов на haskell, которые пишутся одиночками и не уступают по своим параметрам проектам которые делают целые сообщества.

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

Назовите хотя бы три, пожалуйста. Проект на Хаскель, соответствующий проект не на Хаскель и минимальное обоснование неуступания.

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

С этим инструментом один программист делает то, что без него за то же время сделали бы десять программистов

Вот чего я ждал с самого начала треда. Приведите, пожалуйста, пример.

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

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

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

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

In its current state, LambdaCube is already functional, but still in its infancy. The current API is a rudimentary EDSL that is not intended for direct use in the long run.

как типично

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

Там используется именно _категориый подход_ к компьютерной графике/звуку/физике? Я пока заметил обычную обертку над кучей разных API как в большинстве других движков.

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

Хотя бы среди других программистов.

Напротив, программистов нужно исключить из сравнения. В индустрии толпы быдлоимперативщиков, и эти толпы своим безграмотным выбором сделают сравнение безнадёжно предвзятым. Другое дело — конечные пользователи или админы: им всё равно, что у программы под капотом, так что им и судить о «параметрах проекта».

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

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

Действительно, зачем? Наверное потому что любая задача к ней сводится, как и к теории множеств или топологии, или к любой относительно абстрактной теории. Коли влезли в денотационную семантику, так и надо к чему-то, хоть чему-нибудь, сводить. ;)

Другое дело, нахрена же работать на *таком* уровне абстрактности? Поэтому, и получается что теоркат вроде бы как есть, но вроде бы как его и нет. Удобно автору им пользоваться, дык ну и пусть пользуется. Может быть ему нужно ужа с ежом сравнивать. Неудобно тебе - не пользуйся. Ровным счетом ничего не потеряешь.

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

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

Тем, что теоркат заморачивается на морфизмах. Точно так же как топология заморачивается на «близости», а теория множеств на «отношениях».

Macil ★★★★★
()

Вот еще пример:

module Kernel.Driver.Mouse where
import Prelude hiding (Either(..))
import Data.Bits
import Data.Word
import Data.Int(Int8)
import H.Concurrency

data Button = Left | Right | Middle
            deriving Show
data Event  = Up !Button !Int !Int | Down !Button !Int !Int | MoveTo !Int !Int
            deriving Show

launchMouseDecoder (width,height) from =
  do to <- newChan
     forkH  $ writeList2Chan to .
              decode False False False x0 y0 {-. tail-}=<< getChanContents from
                    -- hack: skip enabling ack.  
     return to
  where
    x0 = width `div` 2
    y0 = height `div` 2

    limit m = min m . max 0

    decode :: Bool -> Bool -> Bool -> Int -> Int -> [Word8] -> [Event]
    decode _ _ _ _ _ []           = [] 
    decode l r m x y (s:dx:dy:ws) =
	mv ++ btn Left l l' ++ btn Right r r' ++ btn Middle m m' 
	++ decode l' r' m' x' y' ws
      where
	-- use sign bit
	l'  = s `testBit` 0
	r'  = s `testBit` 1
	m'  = s `testBit` 2
	dx', dy'   :: Int8
	dx'         = fromIntegral dx 
	dy'         = fromIntegral dy
	x'          = limit width (x + fromIntegral dx')
	y'          = limit height (y - fromIntegral dy')
	btn b a a'  = [if a' then Down b x' y' else Up b x' y' | a /= a']
	mv          = [MoveTo x' y' | dx' /= 0 || dy' /= 0]

Это полный код драйвера для мыши в операционной системе написанной 90% на Хаскеле (наз. House)

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

Это полный код драйвера для мыши

Вот такой прямо полный? А можно еще скопипастить сюда тот кусочек, который реализует поддержку USB HID? :D

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

Ваше утверждение, звучало не «программы на Хаскеле существуют», а «Есть куча проектов на haskell, которые пишутся одиночками и не уступают по своим параметрам проектам которые делают целые сообщества.» Я просил приводить ссылки попарно.

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

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

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

А можно еще скопипастить сюда тот кусочек, который реализует поддержку USB HID?

Понятно же что он будет больше этого, но все равно меньше и лаконичнее сишного

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

Ну слушайте! Вы что затролить решили?

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

Мне не нравится Хаскель, хотя я готов пересмотреть своё мнение, если увижу, что он полезен. Пока не увидел.

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

он будет больше этого, но все равно меньше и лаконичнее сишного

Но сравнить потребляемые ресурсы, наверное, не получится? ;)

P.S. драйверы простых мышей и на Си лаконичны (с них хорошо начинать учиться писать драйверы)

P.P.S. хорошим сравнением проекта «одиночки на Хаскеле» и «сообщества на $X» может служить Darcs и Mercurial/Git.

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

Понятно же что он будет больше этого, но все равно меньше и лаконичнее сишного

http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=gcc&amp... Смотреть на третий график. Это смотрение убедительно развенчает миф о превосходной лаконичности Хаскеля. Смотрение на совокупность трёх графиков в целом столь же убедительно доказывает превосходство С над Хаскелем по совокупности факторов.

Я уж не говорю о том, что благодаря сборке мусора драйвер мыши на Хаскеле, скорее всего, будет всё время «икать».

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

Понятно же что он будет

Будет? А он вообще в природе существует?

Понятно же что он будет больше этого, но все равно меньше и лаконичнее сишного

Он уже отлажен и работает на широком спектре реальной аппаратуры со всеми её багами?

Или, как обычно для функциональщины, дальше хеллоуворлда дело не зашло? Зачем тогда такая ОС, какие проблемы реального мира она решает?

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

Что-то мне аж жалко стало бедных Хаскелистов. С непреклонностью мясорубки мы их дробим. Хватит на сегодня, пожалуй...

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

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

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

Вывод: не принимайте близко к сердцу

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

Если Вы выдвигаете какое-то утверждение, Вы должны быть готовы его защищать или в явном виде сказать «извините, я был неправ»

Если вы так категоричны, то не пишите неверных утверждений. Ваше утверждение может стать ближе к правде если добавить «и вы действительно хотите переубедить идиота в Интернете». Иначе никто ничего не должен. Я выкрикну «все велосипедисты - негодяи!» . Я должен это доказывать?

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

Таких примеров полно для лиспа, пролога, форта, APL, ... :)

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

И что, я должен пасть ниц?

Ну, если так хочешь, то можешь. Кто ж тебе запрещает-то?

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

тебе задали конкретный вопрос про конкретную прикладную задачу

Да как пожелаешь! Мне задали вопрос: «Как мне поможет лопата в деле строительства Коммунизма на всем Земном Шаре»? Я ответил: «Ей нужно копать. Или не копать». И сразу упреки и наезды. Хотя мне ничего не задали, а я ничего и не отвечал.

Говорю же, слишком серьезно относишься. Математику выдумывали не для того чтобы ты свои несчастные накладные штамповал (вот уж действительно зачем, тебе 1С не подходит?). Как только математику начали объяснять с использованием математики вся ее «прикладная»/«практическая» часть перестала существовать, а ее основная и единственная цель - неиссякаемый источник лулзов для ее адептов.

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

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

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

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.