Search
Write a publication
Pull to refresh
127
0
barbalion @barbalion

User

Send message
> по энергии тоже самое, что полноценный обед из 300-400г гарнира и мяса.
по энергии — то же самое, но вот по скорости усвоения этой энергии — совсем другая история.
я ничего не писал про «плохой» (липопротеиды низкой плотности, крупные рыхлые алгомераты) холестерин. Я писал про «вредность» холестерина. Т.е. про то, что сливочное масло якобы вредное из-за большого количества холестерина в нем (как раньше считалось). Правда же заключается в том, что экзогенный (съеденный) холестерин не может быть «хорошим» или «плохим» — он расщепляется в ЖКТ и в кровь не попадает. Весь холестерин в крови — это продукт нашего собственного организма. «Плохой» холестерин — это следствие нарушения метаболизма, вызванного избытком быстрых углеводов в еде. Гуглите мета-исследования.

Холестерин же, кстати сказать, превращается в витамин D под действием ультрафиолета (загара).
А вы почитайте состав перечисленных соусов. На втором-третьем месте (т.е. сразу после основного ингредиента) будет сахар или другой подсластитель (кукурузный сироп, например). Горчица, хрен и песто — не исключение. Соевый, разве что, не содержит сахара, обычно. Но иногда пихают и туда.
… и еще 50 грамм майонеза ;)
Не упростил, а исказил.
Суть этого гомоморфного шифрования в том, что спам-фильтр, произведя вычисления над зашифрованными данными, сам не будет знать результата (является ли письмо спамом или нет). Узнает об этом только владелец информации, расшифровав своим ключом ответ от фильтра.

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

Как реализовать байесовский (хотя бы) фильтр (с разбиением текста на отдельные токены и пр.) с помощью только сложения и умножения — это, я думаю, будет предметом еще чьей-нибудь докторской диссертации. Что-то мне подсказывает, что работать оно будет оооочень неторопливо. Это же как кораблик внутри бутылки пинцетом собирать.
Да, вы правы. Спасибо за уточнение.
Недостаточно корректно высказался, признаю. В том сообщении имелся в виду инстанс тайп-класса. Но редактирование уже недоступно (бесит это на хабре, если честно).
между ними не отношение ВКЛЮЧАЕТ, а отношение ЯВЛЯЕТСЯ, то есть наследование, а не композиция.

Да, верно. Но функтор в реальности — это одна функция map в классе. Поэтому я позволил себе вольность применить аналогии композиции, т.к. конечный результат одинаков в любом случае.

Какой обработчик данных в контейнере-монадке в эндофункторе в категории Int?

Соответственно, на этот вопрос можно ответить, если рассматривать функтор — как функцию map внутри монады (т.е. как ее поведение), а не как предок монады. Это не совсем корректно, признаю. Но для понимания на начальном этапе, мне кажется проще их отделить друг от друга. Я пока не придумал более корректной аналогии их отношения при сохранении интуитивности.
Один требует — другой предоставляет. Розетка без вилки не имеет смысла. Требуют обычно интерфейсом, а предоставляют — его имплементацией. В случае тайпклассов имплементация отделена от дата-тайпа в инстанс.
З.Ы. Монада — тайпкласс.

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

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

Реализация интерфейса в классе — это из ООП, которое не совсем относится к ФП. Когда вы реализуете некий интерфейс чтобы ваш класс считался монадой, вы просто подстраиваете ваш класс под определенную библиотеку (которая просит от вас этот интерфейс, например ScalaCats). Объект может вести себя как монада и безо всяких интерфейсов.

Окей. Но с таким же успехом и функтор — контейнер, нет?

Да, он тоже способен работать как контейнер, но в практической работе менее удобен.
Ну написанное пером уже вырубить к сожалению не получится. Но я с удовольствием приму конструктивную критику и внесу изменения для тех, кто придет читать статью позже.
Буду благодарен за уточнения, иные аналогии в определениях.
Мне кажется вы невнимательно прочитали. Я не утверждал, что функтор это функция из Int в Double. Я как раз писал, что это функция работающая с функциями преобразования/отображения. Не совсем понял претензию.
Про категории и функторы вы все поняли правильно. есть несколько эквивалентных определений. Можно смотреть на них с разных сторон и видеть разные следствия.

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

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

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

Наверное вы недостаточно внимательно прочитали вводную часть. То, что вы считаете «ошибками» — это умеренный отход от общности к конкретным примеры использования.
Моя цель дать частные примеры чтобы читающий сам понял общий принцип.

Категории — это не типы.

Категории — это не типы, а типы — категории. Категория — это очень широкое понятие.
Моя цель — см выше.

Это, если уж пытаться натянуть сову на глобус, системы типов. Или не типов. В категории Set объектами (базовыми элементами категорий) являются множества разных элементов, которые в каком-то смысле могут быть типами (множество всех целых чисел, множество всех строк и т.д.). В категории Hask (которая не совсем категория, но это вопрос практического свойства) базовыми элементами являются типы хаскеля. Конечно, можно создать категорию Double, где объектами будут литералы, а морфизмы будут задавать преобразования между этими литералами, но что это даст?

Это даст понятный новичку пример.

Эндоморфизмы — это не «тип в себя», это морфизм в пределах одной категории.

Это будет самопротиворечивым высказыванием, в категории «Тип Integer». ;)

Преобразование из string в int вполне себе эндоморфизм.

Вы забыли указать, что это верно только категории Hask. А категорий ух как много!

Монады — это не контейнеры.

Википедия с вами не согласна от слова «совсем». Монада — это функтор с дополнительной структурой. Эта структура позволяет инкапсулировать вычислительный контекст функтора. Без данной структуры нам бы не получилось локализировать контекст. Поэтому монада — это контейнер. Не отдельного значения, не массива, а контекста. Но в начале обучения это определение слишком абстрактно, а потому вредно, имхо.
Обычно рассматривают категорию типов

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

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

Дайте сишнику потрогать шарики и кубики, а потом задвигайте про обобщения.

Только это две разных и совершенно неэквивалентных функции. map куда слабее, и функтор умеет map, но не умеет bind. И существуют типы, которые являются функторами (и даже аппликативными функторами), но не являются монадами — ZipList как пример.

Еще раз: не надо объяснять, что бочка — это не цилиндр, а куб — это не ящик. Вы просто уже перебрались через эту пропасть непонимания. Я же строю мостик для тех, кто еще не по «ту сторону».
Сложность вникания в новые концепции всегда именно на старте. Немного привыкнув к терминологии и подходам, дальше двигаться намного проще. «Монады в картинках» мне не ответили на самый основной вопрос: нахрена нужна монада, функтор и прочие. Все упражнения с засовыванием и высовыванием из нее числа «3» не привели к понимаю, как из этого серпентария собрать что-то полезное. Пока не произошло то самое озарение: «да это же просто ленивый контейнер, мать его»!
Ну все же это художественный вымысел. «Больные» люди встречаются, но среди ученых их меньше. Это только в комиксах злобный маньяк-профессор стремится уничтожить мир. В реальности все скучнее.
На самом деле статья вредная! Потому что опять без каких-либо доказательств на ученое сообщество бросается тень в глазах массового читателя. Обвинение очень уважаемых ученых, работающих на переднем крае науке, на основании «что-то слишком много совпадений» со стороны дилетантов (а все читатели этой статьи именно дилетанты, т.к. профессионалы такие статьи читать не станут, ибо у них есть более аргументированное мнение), может иметь очень опасные последствия. Основываясь на логике типа «компьютерные вирусы пишут антивирусные компании, пожары организуют пожарники, а врачи убивают потому что в больницах люди чаще умирают» не далек тот час, когда «пролетарии» пойдут с вилами на ученых, не особо разбираясь, кто там чем занимается. Вспомните, что сейчас происходит в развивающихся странах, где объявили карантин — там нападают на всех «белых» людей, потому что им из телевизора сказали, что вирус привезли туристы. И даже если это правда, она, попавшая в неправильную голову, приводит совсем к не тем результатам, которых вам хотелось бы.

Вот из всех, проголосовавших за эту статью тут, возможно всего пара человек реально понимают в этой теме. Однако «серьезный вид», изобилие графиков и натянутое на глобус частное мнение производят магический эффект — люди верят. А если задуматься, то уровень аргументации ровно такой же, как у креационистов и уфологов: «Ведь это возможно!». Да, блин, возможно. Как и «чайник Рассела». Но есть понятие презумпции невиновности, которая для ученых должна действовать до самого конца. И даже, когда ученый правда виноват, — это должно обсуждаться в среде профессионалов, а не в телевизоре и интернет-порталах.

Исследования происхождения этого вируса будут продолжаться еще долго. И делать это будут те же ученые вирусологи и генетики, которых вы сейчас ставите под удар своими «подозрениями».
Любые прорывные исследования сопряжены с риском. Вспомните начало исследования атомной энергии. Стоило ли после первой аварии/утечки все свалить на то, что «у вас лаборатория не безопасная, вам надо все запретить», и предать всех ученых остракизму?
Задавать вопросы – можно и полезно, но не стоит этого делать в «популярной» форме для неквалифицированных масс.

Возвращаясь к высказанным доводам, позволю себе их покритиковать. Уровень аналитики сродни биржевому анализу. Это тот, который замечательно описывает все, что уже произошло, но не в состоянии предсказать будущее ни с какой разумной точностью. Когда вы сравниваете CoV2 с ранее известными штаммами, вы УЖЕ ЗНАЕТЕ, что именно этот вирус стал причиной эпидемии, поэтому ставите ЕГО в качестве референса. Поэтому ваши графики поддерживают вашу теорию. Предположим на секунду, что вы вирусолог, создающий новый штамм. У вас есть в качестве референса SARS и MERS, и получается, что создавать штамм структуры CoV2 вам нет смысла – он слишком от них отличается, значит скорее всего вы ту сторону даже копать не будете.

CoV2 пришел оттуда, откуда не ждали (имеется в виду совсем не тот штамм, которого опасались, а регион и переносчик всегда были под подозрением). Да, это все те же летучие мыши, в которых живут десятки или сотни тысяч различных штаммов, и каждый год появляется еще тысяча. Мы за 20 лет активных исследований смогли более-менее изучить сотню-другую. А сколько мы еще не нашли?

«Отсутствующие звенья» — это не причина кричать о божьем/злом замысле.
Я бы еще добавил «Парадокс Блаба» в список.
Его сущность состоит в том, что программист, знающий некоторый язык («Блаб»), «думает на Блабе» — выражает решение любой задачи в средствах Блаба, а имеющиеся в более мощном языке дополнительные средства в его глазах ничего не стоят, так как он не умеет их применять. Только когда программист по каким-то внешним, дополнительным причинам изучит более мощный язык, он получит возможность смотреть на Блаб «сверху вниз» и увидит его ограниченность. Таким образом, ограниченность Блаба сама по себе не может стать стимулом для изучения более мощного языка, так как для осознания этой ограниченности необходимо уже знать такой язык.

Information

Rating
2,041-st
Location
Россия
Date of birth
Registered
Activity