metaclass: (Default)
[personal profile] metaclass
Сегодня с утра устроили с [livejournal.com profile] artureg срачь на тему "почему мутабельные структуры данных это плохо".
Вообще все началось с того что он пишет некую хитрую штуку на кложури, но при этом использует ее не в идиоматическом стиле, в то с мысле, что вместо кошерных иммутабельных структур использует 100500 ref которые ссылаются на структуры внутри которых еще ref и в итоге у него это все автоматически не сериализуется в json. То есть закат солнца вручную и изготовление из кложури перла и цэ-с-крестиками и поселение там ядовитых жаб и пауков. И все это внутри Software Transactional Memory, т.е. (dosync ...)
Два дня на пару с [livejournal.com profile] theiced пытались ему объяснить почему ему не нужно столько ref, особенно вложенных, и как кошерно пользоваться иммутабельными структурами данных. Но артурег отнекивается, не желая менять парадигму.
Впрочем, ему там и структуры такой сложности не нужны, посколько достаточно хранить обновления для этих структур в виде списка, а текущее состояние интегрировать исходя из них.

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

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

Date: 2012-03-07 11:02 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
айсед, залогиньтесь.

Date: 2012-03-07 11:05 am (UTC)
From: [identity profile] artureg.livejournal.com
даю ещё одно попытку изложить ваши соображения доступно для окружающих

Date: 2012-03-07 01:25 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Действительно, с людьми, моск которых был поражен мозговой жабой, надо попроще.

Обясняю:
1. Для кучи народа JS - первый язык, им будет сложней засрать мозги паттернами-хуятернами.
2. Время server-side web forms приложений проходит, сейчас все ориентируются на single page, значит JS будет еще больше
3. Так как JS все-таки говно, то его лучше не писать самому, а генерить. Соответственно, в мейнстриме будет больше всякой функциональщины, которая, хоть и старье, но все равно прогресс по сравнению с.

Date: 2012-03-07 01:32 pm (UTC)
From: [identity profile] artureg.livejournal.com
Какой бред:
1. для какой кучи, что значит первый, какими патернами, ояебу - набор бессвязных слов
2. кто все?
3. Говно, потому что он слишком сложен для большинства недоумков с жабы, дотнетов и крестиков. Соответственно схуяли?

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

Date: 2012-03-07 01:45 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Правильно ли я понял, что JS не говно, а слишком сложный? OH SHI

Date: 2012-03-07 01:49 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Так это одно из определений плохого языка.

Date: 2012-03-07 01:50 pm (UTC)
From: [identity profile] artureg.livejournal.com
нет, это всего лишь констатация факта, у жс порог вхождения выше чем у дотнетов жаб и плюсиков

Date: 2012-03-07 01:59 pm (UTC)
From: [identity profile] bydl0coder.livejournal.com
Это у жабы of 300 page Java Generics FAQ fame порог вхождения ниже, чем JS? I rest my case.

Date: 2012-03-07 02:19 pm (UTC)

Date: 2012-03-07 02:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Твоими устами глаголет внутренний [livejournal.com profile] theiced

Date: 2012-03-07 02:16 pm (UTC)
From: [identity profile] artureg.livejournal.com
верно, когда речь заходит о жс во мне просыпается внутренний айсед

Date: 2012-03-08 09:35 am (UTC)
From: [identity profile] bydl0coder.livejournal.com
У айседа между хуями иногда что-нибудь дельное проскакивает.

Date: 2012-03-08 09:40 am (UTC)
From: [identity profile] artureg.livejournal.com
ты не дорос

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 Sep. 12th, 2025 08:14 pm
Powered by Dreamwidth Studios