metaclass: (Default)
[personal profile] metaclass
http://www.stephendiehl.com/posts/production.html

Про типичную опердень и как она умучает рантайм хаскеля:

A common performance problem is that of many small updates updates to records with large numbers of fields. Records of hundreds of fields are somewhat pathological but in practice they show up in a lot of business logic that needs to interact with large database rows. Too much of this can very noticeable impact on GC pressure by doing allocations on each update.

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

И про метапрограммирование: Avoid TemplateHaskell. Half the appeal of Haskell is that its high-level design allows you to avoid huge amounts of useless boilerplate code that you have to write in other languages. If you need compile-time code generation, you’re basically saying that either your language or your application design has failed you.

Как без метапрограммирования нормально делать опердени, где 99% кода - это бойлерплейт по перекладыванию между полями разных объектов и БД - хрен его знает.
Всякие ORM с рефлекшенами и кодогенерацией в рантайме - это то же самое, только медленно и уныло.

Date: 2016-02-21 01:42 pm (UTC)
From: [identity profile] b00ter.livejournal.com
> Как без метапрограммирования нормально делать опердени, где 99% кода - это бойлерплейт по перекладыванию между полями разных объектов и БД - хрен его знает.

Как-как... Берешь бюжет проекта и начинаешь его разбавлять "программистами на языке ...".
Дико - да, легаси - да, но зато теперь индустрийке нужно больше Java- и Cobol-кодеров. Нормально все.

Date: 2016-02-21 01:43 pm (UTC)
From: [identity profile] juan-gandhi.livejournal.com
Хорошая тема.

Может быть, Денис тут прав, и в такой ситуации нужен ИИ, а не ФП.

Date: 2016-02-21 01:47 pm (UTC)
From: [identity profile] orleanz.livejournal.com
Что такое опердень, умоляю, просветите. И где ударение в этом слове.

Date: 2016-02-21 02:03 pm (UTC)
From: [identity profile] metaclass.livejournal.com
На втором слоге, сокращенно от "операционный день".
Условное обозначение любого унылого db-centric софта для бухгалтерии, банков, складского учета, документооборота и всего прочего сводящегося на 99% к формочкам и CRUD и 1% 4 действий арифметики, применяемых к миллиардам записей.

(no subject)

From: [identity profile] 4ghsg.livejournal.com - Date: 2016-02-21 07:16 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2016-02-22 07:00 am (UTC) - Expand

Date: 2016-02-21 02:09 pm (UTC)
From: [identity profile] francis-drake.livejournal.com
» If you need compile-time code generation, you’re basically saying that either your language or your application design has failed you.

В тред призывается лавсан.

Date: 2016-02-21 03:27 pm (UTC)
From: [identity profile] max630.livejournal.com
> бойлерплейт по перекладыванию между полями разных объектов и БД

известно как - derived Generics и дальше как в питоне. Якобы при правильном подходе должно соптимизироваться в компиле-тайм. Якобы можно упороться многопараметрическими классами с проксями и получить какое-то подобие типизации. Но мне всё-таки кажется тут тот случай когда лекарство хуже болезни.
Edited Date: 2016-02-21 03:30 pm (UTC)

Date: 2016-02-21 06:20 pm (UTC)
From: [identity profile] vit-r.livejournal.com
У меня подозрение, что люди, программирующие на Хаскеле, пишут очень хреновые комментарии и создают извращённый дизайн. Потому у них Хаскель и идёт лучше других технологий.

Date: 2016-02-26 07:52 pm (UTC)
From: [identity profile] qnikst (from livejournal.com)
У меня есть подозрение, что мнение людей не видевших нормальных программ на haskell и не знакомых с экосистемой не очень полезно, и немного вредно. Извините.

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 07:55 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 08:25 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 08:32 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 08:39 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 08:43 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 08:53 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 09:32 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 09:42 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 10:01 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 10:06 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 10:08 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 10:34 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 10:43 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 10:55 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 10:59 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 11:08 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 11:09 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 11:24 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-26 11:37 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 11:48 pm (UTC) - Expand

(no subject)

From: [identity profile] vit-r.livejournal.com - Date: 2016-02-27 08:08 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2016-02-26 10:41 pm (UTC) - Expand

(no subject)

From: [identity profile] qnikst - Date: 2016-02-26 10:45 pm (UTC) - Expand

Date: 2016-02-22 12:50 pm (UTC)
From: [identity profile] binf.livejournal.com
заменить на мапы с атомами-ключами - это именно то, что нужно. Я щас на кложу переезжаю, там такой подход приветствуется. И макросы в разы проще писать и дебажить, чем в статических языках. Я буквально чувствую, как становится легче дышать
Edited Date: 2016-02-22 04:14 pm (UTC)

Date: 2016-02-22 07:43 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Да-да, мапы спасают нереально, фактически для оперденей (а особенно генераторов отчетов) использовать статик типы бесполезно и даже вредно.

(no subject)

From: [identity profile] tonsky.livejournal.com - Date: 2016-02-23 02:56 pm (UTC) - Expand

(no subject)

From: [identity profile] binf.livejournal.com - Date: 2016-02-23 07:06 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2016-02-23 07:38 pm (UTC) - Expand

Date: 2016-02-22 09:14 pm (UTC)
From: [identity profile] tonsky.livejournal.com
Внезапно в тему http://prog21.dadgum.com/216.html

Date: 2016-02-23 01:55 pm (UTC)
From: [identity profile] binf.livejournal.com
да, наглядно. я для себя определил единственный приемлемый подход статических языках в виде Map[Key,ValueCase] , где Key прописывает поюзанные атомы, а ValueCase содержит все возможные варианты для простых типов (int, string ...) Это то ещё блядство конечно

ps. ёбаный жж факапит мой камент!
Edited Date: 2016-02-23 01:58 pm (UTC)

Date: 2016-02-23 06:20 am (UTC)
From: [identity profile] love5an.livejournal.com
Да я всю сознательную жизнь говорю, что хаскель и иже с ними, это извращение для шизофреников, которые и опердени то не писали.

Покажите хоть одну опердень на хаскеле! Нет ведь. Одни сраные хелловорлды, с заострением внимания на какой-то бесполезной малозначимой хероте(типа, смотрите как у нас круто фунцыю map писать!). Ни одной практической проблемы, ни одного практического решения, за все время наблюдени за хаскель-коммьюнити я не увидел. Самое близкое, что видел, это, что даже не смешно - GLR-парсеры. GLR-парсеры, Карл. Блеать.

Date: 2016-02-26 02:28 pm (UTC)
From: [identity profile] thesz.livejournal.com
Сюда надо позвать [livejournal.com profile] dmzlj и [livejournal.com profile] zelych.

Date: 2016-02-26 02:37 pm (UTC)
From: [identity profile] thesz.livejournal.com
А!

И ещё привести пример Amgen: https://ifl2014.github.io/submissions/ifl2014_submission_16.pdf

"The success or failure in the industry of a programming language within a particular problem domain is often predicated upon the availability of a sufficiently plethoric set of good quality libraries relevant to the domain. Libraries enable code reuse, which ultimately leads to shorter development cycles. Yet business and regulatory constraints may impose orthogonal requirements that not allprogramming languages are able to satisfy.

Case in point: at Amgen, we operate within a stringent regulatory environment that requires us to establish high confidence as to the correctness of the software that we create. In life sciences, it is crucial that we aggressively minimize the risk that any bug in our code, which could lead to numerical, logical or modelling errors with tragic consequences, goes undetected."

А вот причина, по которой Amgen вообще связался с Хаскелем: http://thesz.livejournal.com/1432089.html Треть медицинских исследований содержит ошибки в логике обработки результатов. Наличие типов позволяет запретить сравнивать p-значения, например. Или получать p-значение для результата сравнения.

Date: 2016-02-26 06:39 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Ну мы очередную опердень запустили пару недель назад, например. Туроператора. Не знаю, где ты там наблюдаешь, алсо, то же самое я мог бы говорить про скобки, кложу или скалу. Ну или про сиплюсплюс.

Date: 2016-02-23 06:21 am (UTC)
From: [identity profile] love5an.livejournal.com
Clojure-коммьюнити туда же, на самом деле.

Они меня местами дичайше бесят. Как-то пришел на fprog-митап, а там три сраных хипстера подряд рассказывали как пиздато на Clojure писать генераторы статических сайтов.

Генераторы, блядь, статических, блядь, сайтов, блядь. Эталонное хипстерское никому не нужное говно.

Date: 2016-02-26 02:27 pm (UTC)
From: [identity profile] thesz.livejournal.com
Netflix, что ли, создавал статические странички с рекомендациями для пользователей. Один раз посчитали, и далее отдаётся статическое содержимое. Иногда пересчитываем, но редко.

Статические сайты рулят.

Date: 2016-02-23 06:34 am (UTC)
From: [identity profile] love5an.livejournal.com
Во! Покажите мне хотя бы по одному стоящему решению следующих очень практических проблем на хаскеле:
1) Загрузка/Сохранение картинок разных форматов, и их обработка(ресайзы итоде)
2) Загрузка экселек, как старого формата, так и openxml, и не только данных, а и информации по стилям ячеек.
3) Выгрузка в PDF/Эксель(в том числе всяких отчОтов, см пункт 4)
3) DSL для работы с БД, с кучей рекордов с кучей полей. Чтоб было близко к sql но в то же время в терминах языка(типа C# LINQ to Entities, etc). Генерация модели из DSL.
4) Нормальный пиздатый MVC-веб-фреймворк, с поддержкой автоматической сериализации с JSON и прочие говна, с поддержкой аутентификации по кукисам/OAuth/whatever
5) Пиздатый UI фреймворк для десктопа с декларативным описанием UI, стилей и прочей еботни
6) Работа с email и sms
7) Очереди сообщений, подключение к AMQP
8) Модульность, конфигурируемая из конфигов и в рантайме, IoC
9) Виндовые приблуды типа named пайпов

Нету! Нихуя нету. И не будет! Потому что ебучие хаскелисты все шизики и задрачивают монадные хелловорлды или в лучшем случае GLR-парсеры.

Date: 2016-02-23 06:55 am (UTC)
From: [identity profile] anonim-legion.livejournal.com
Вот вас пробило-то.

Date: 2016-02-23 08:10 am (UTC)
From: [identity profile] vinslivins.livejournal.com
http://pandoc.org



(не то что б это что-то доказывает)

Date: 2016-02-26 06:44 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
А чо, на скобках есть?

Date: 2016-02-26 02:24 pm (UTC)
From: [identity profile] thesz.livejournal.com
1) Он странно использует записи. Зачем всё-то забирать?

2) Запись не плоская. Запись это, буквально, массив указателей. Для 100 полей - да. 100 указателей надо скопировать. Вроде бы, наивное поведение было бы столько раз копировать, сколько раз обновляем поля (по одному). Но это, обычно, упрощается - выделили один раз, перенесли 84 указателя, 16 заполнили новыми значениями.

Строгие (!Q) поля не указатели, если они хранят данные размером до указателя.

3) Сейчас в Хаскель вносят зависимые типы, практически. Поэтому не TH, а типы. Для типов есть методика устранения ненужных доказательств (если ты нигде не используешь параметр "длина" вектора, то он будет убран из кода вообще).

Date: 2016-02-26 06:41 pm (UTC)
From: [identity profile] dmzlj.livejournal.com
Начнем с того, что нужно не вытаскивать записи по сто полей и мотылять их по хаскеллу, а наверное, вытаскивать только то, что нужно, и генерить код для манипуляции данными в СУБД.

Date: 2016-02-26 07:57 pm (UTC)
From: [identity profile] qnikst (from livejournal.com)
Хотел ответить, а тут уже все есть.

TH все еще нужен, т.к. он выразительнее, чем Generic даже в sop варианте. Другое дело, что TH код сложнее писать, однако в большинстве случаев TH надо применять, готовый, а не писать самому. Имхо бояться его не надо, если есть возможость обойтись, то обходиться, нету - ничего страшного.

Вообще статья достаточно странная, не хацкелистам крайне не рекомендуется.

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 Aug. 22nd, 2025 12:33 am
Powered by Dreamwidth Studios