metaclass: (Default)
[personal profile] metaclass
Вот я хаскель использовал только пару раз и практически его не знаю, но в чем проблема с неэнергичным foldl - помню. Про то, что нужны банг-паттерны внутри тупла - краем уха слышал, но не вникал.
Стеб же на эту тему людей, которые слышали звон, да не знают, где он, меня очень сильно огорчает.
Ладно, айсед критикует - он хотя бы писал на этом и понимает, о чем речь идет. А так - это выглядит как "разработчики на клиппере критикуют SQL за то, что теория множеств".
Page 1 of 3 << [1] [2] [3] >>

Date: 2015-07-10 11:24 am (UTC)
From: [identity profile] plumqqz.livejournal.com
Вообще если прямой вопрос "это они что, всерьез?" воспринимать как стеб, то я даже не знаю...
Кроме того, если народ не видит того, что если такие простые задачи не очень решаются, требуя при этом специфических знаний (там двадцать человек прособеседовали; где они их брали, интересно?), то это... как-то нехорошо.

Date: 2015-07-10 11:31 am (UTC)
From: [identity profile] metaclass.livejournal.com
Хинты для SQL-оптимизатора или умение правильно спроектировать БД, чтобы снизить нагрузку на i/o - тоже видимо нехорошо.

Date: 2015-07-10 11:39 am (UTC)
From: [identity profile] aamonster.livejournal.com
Учитывая "Avoid Success at All Costs" - огорчаться не следует.

Интереснее другое: пока в обсуждениях я видел всего то ли 1, то ли 2-х человек, для которых правильное решение - очевидно и иначе не написать: "Если хоть чуть-чуть писал на хаскелле, такое делается на автомате, даже на бумаже. Безусловный рефлекс -- аккумулятор (что-то делаем, а результат используется только в конце) -- ставим bang pattern." (c) [livejournal.com profile] vshabanov

Date: 2015-07-10 11:39 am (UTC)
From: [identity profile] cross-join.livejournal.com
Как я понимаю, вопрос не в противопоставлении декларативного подхода императивному (сиквел-клиппер), а в состоятельности и вменяемости конкретных реализаций декларативных языков программирования.
Edited Date: 2015-07-10 11:40 am (UTC)

Date: 2015-07-10 11:43 am (UTC)
From: [identity profile] metaclass.livejournal.com
В таком варианте - возможно. Но проблемы хаскеля, по-моему, не в этом месте.
Просто, когда у людей эбола со всякими node.js, jvm, .net и крестами - на это закрываются глаза. Если же похожие проблемы у хаскеля или скалы - сразу начинается массовая истерика. "Как так можно, язык, оказывается, знать надо, прежде чем писать на нем".

Date: 2015-07-10 11:44 am (UTC)
From: [identity profile] justy-tylor.livejournal.com
Какая разница, если "ленивость по умолчанию" при любом раскладе мощнейшие грабли. Одни это знают из практики, другие просто "жопой чуют", всё ок.

Date: 2015-07-10 11:46 am (UTC)
From: [identity profile] cross-join.livejournal.com
Проблемы и неинтуитивные (неарифметические) подходы при подсчете среднего - это гораздо хуже эболы, это какой-то инопланетный вирус, от которого надо срочно избавляться :)
При это SELECT AVG() как бы намекает авторам, что и в деларативном подходе можно делать по-человечески.

Date: 2015-07-10 11:52 am (UTC)
From: [identity profile] metaclass.livejournal.com
Да хаскелю надо оптимизатор встроить, по типу SQL в СУБД.
RAM считаем внешней памятью, с дорогим и долгим доступом, кэши проца - дешевыми и на основе этого считаем :)

Date: 2015-07-10 11:54 am (UTC)
From: [identity profile] cross-join.livejournal.com
Типа того.
Вообще, стряхнув пыль с книг по трансляторам, тут же убеждаешься, что все было придумано и даже реализовано в 1960-х годах.

Date: 2015-07-10 12:34 pm (UTC)
develop7: (dero)
From: [personal profile] develop7
Это Совершенно Другое Дело

Date: 2015-07-10 12:49 pm (UTC)
From: [identity profile] vit-r.livejournal.com
Хаскель не создан для таких примитивных задач. Он - птица высокого полёта.

Date: 2015-07-10 01:27 pm (UTC)
From: [identity profile] binf.livejournal.com
какие грабли? В 99% случаев всё прекрасно работает без fold' и bang patterns. А если обсчитывать гигобайты и не думать о том, как именно fold их сворачивает - так это распиздяйство а не грабли.

Date: 2015-07-10 01:37 pm (UTC)
From: [identity profile] http://users.livejournal.com/_slw/
ну вот если БД надо проектировать специально, что бы тривиальный последовательный fullscan не тормозил -- то это плохая БД

Date: 2015-07-10 01:49 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Вот эти проценты "когда всё грохнется" могут зависеть от любых сочетаний версии GHC с фазой луны.

И у разработчика два варианта продолжать. Либо "думать значениями", надеясь на авось пронесёт и фаза сойдётся, либо "думать санками", но при этом когнитивная нагрузка взлетает в небеса, что, в свою очередь, снижает доступные ресурсы на сам процесс программирования и увеличивает вероятность ошибок.

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

Date: 2015-07-10 01:57 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Можешь третьего записать. BTW, Johan Tibbel в своих code covnventions писал, что аккумутяторы должны быть строгими по умолчанию. https://github.com/tibbe/haskell-style-guide/blob/master/haskell-style.md
Edited Date: 2015-07-10 02:02 pm (UTC)

Date: 2015-07-10 02:00 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Когда нужно обрабатывать гигабайты, редко берутся ленивые списки. Есть conduits и десяток альтернатив с константной памятью и финализацией.

Date: 2015-07-10 02:17 pm (UTC)
From: [identity profile] aamonster.livejournal.com
Хорошо. Значит, правильно учить можно, но пока сложно (иначе процент был бы повыше).
Подождём.

Просто если есть стиль, позволяющий избегать таких ошибок, то учить без него - всё равно что учить людей на императивных языках считать факториал рекурсивно. А книжек, которые учат писать сразу в нужном стиле, я пока вроде не видел (UPD: надо снова взяться за Real World Haskell) - видел лишь статьи типа "а давайте посмотрим профайлером и решим, где добавить строгости".

UPD: Хотя, конечно, не так красиво получается. Академический язык, в котором всё лениво и (благодаря этому) единообразно, if и иже с ним - обычные функции, а не специальные формы - это прелесть. Но реальный мир вносит свои коррективы...
Edited Date: 2015-07-10 02:24 pm (UTC)

Date: 2015-07-10 03:48 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Это не решение, а лишь замена одной стандартной структуры данных на некие альтернативы. Ибо в своём коде у программиста на хаскеле остаются всё те же два печальных варианта.

Date: 2015-07-10 04:18 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Ленивость - это особенность. Всё. Как и отсутствие GC в C++.
Я за 2 года написания кода в продакшн на прикол с ленивостью напоролся ли тогда когда передал санк с эксепшеном в другой тред, где не предусматривалась обработка эксепшена. Мой пример конечно не показатель.

Date: 2015-07-10 04:40 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Решение чего? Ленивости по умолчанию? Так это фича Хаскела.

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

Date: 2015-07-10 04:52 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Именно так, плохой дизайн подобных "фич" резко снижает эффективность инструмента.

Date: 2015-07-10 04:56 pm (UTC)
From: [identity profile] binf.livejournal.com
Вы хотите сказать, что гипотетическая ситуация, когда коллекция тестировалась на мегабайты, а в продакшене стала гигобайтами и обвалила всю систему - это большая редкость для java, c++ или (здесь вписать ваш любимый не ленивый ЯП)? Не соглашусь. Из моей практики: в разы проще отыскать и исправить узкое место профилированием в GHC, чем в C# например. Просто потому что меньше бойлерплейта

Date: 2015-07-10 05:05 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
"авгиевы конюшни на 5 строк".

Date: 2015-07-10 05:30 pm (UTC)
From: [identity profile] zeit-raffer.livejournal.com
Во времена, когда про теорию категорий знали только алгебраисты, в профильных журналах печатали рекламу "Клиппер - СУБД для профессионалов!"
Пройдет еще двадцать лет, и критики функционального программирования рассосутся сами собой.

Date: 2015-07-10 05:54 pm (UTC)
From: [identity profile] dr-cha0s.livejournal.com
Ок, доказывай на прмерах. И хочется услышать про правильный дизайн ленивости по умолчанию.
Page 1 of 3 << [1] [2] [3] >>

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 19th, 2025 07:54 am
Powered by Dreamwidth Studios