metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-03-06 08:17 pm

Better safe than sorry или О иммутабельности

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

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

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

[identity profile] theiced.livejournal.com 2012-03-06 08:25 pm (UTC)(link)
так как дотнетом пользуются только дегенераты, то всем плевать ;]

[identity profile] theiced.livejournal.com 2012-03-06 08:25 pm (UTC)(link)
и чо. если дибилушки не могут жопу подтереть, перестать выпускать туалетную бумагу?

[identity profile] theiced.livejournal.com 2012-03-06 08:26 pm (UTC)(link)
да. но лучше хороший молоток чем обмазанная говном дрель.

[identity profile] theiced.livejournal.com 2012-03-06 08:28 pm (UTC)(link)
ну вот я получаю примерно в 2 раза больше чем энтерпрайзчики с аналогичным опытом в аналогичной стране. при этом у нас там тотальная анархия и распиздяйство. нет манагеров-хуяегоров и прочей ненужной ёбани. ажайла тоже нет.

[identity profile] dr-hyder.livejournal.com 2012-03-06 08:30 pm (UTC)(link)
У вас все в порядке? :-|

[identity profile] djuffin.livejournal.com 2012-03-06 08:31 pm (UTC)(link)
Вот я и удивляюсь: как человек таких убеждений может воспевать Лисп.

[identity profile] theiced.livejournal.com 2012-03-06 08:38 pm (UTC)(link)
у меня да. у говнокодеров использующих перл/крестики/жабу/гопнет/прочий непригодный хлам далеко не всё.

[identity profile] vit-r.livejournal.com 2012-03-06 08:39 pm (UTC)(link)
Это не паранойя - это опыт.

[identity profile] theiced.livejournal.com 2012-03-06 08:39 pm (UTC)(link)
я ребе уже почти убедил что статические типы оверрэйтед и не решают никаких реальных проблем (а напротив - создают их).

[identity profile] dr-hyder.livejournal.com 2012-03-06 08:39 pm (UTC)(link)
А о чем это мне должно говорить? Я не знаю что у вас там за зарплаты в "аналогичных странах", что у вас там за ентерпайзчики в этих странах, и лишь очень приблизительно представляю ваш уровень. Ну насколько я могу судить вы сильно экстраполируете свой опыт на окружающих. Ну и на случай если вы хотите собой похвалиться - я за вас очень рад, серьезно.

[identity profile] theiced.livejournal.com 2012-03-06 08:41 pm (UTC)(link)
я про "Хочешь денег - дозревай до ентегпрайза :-)". давайте переформулируем - " Тупой гондон и хочешь денег - дозревай до ентегпрайза :-)"

[identity profile] dr-hyder.livejournal.com 2012-03-06 09:01 pm (UTC)(link)
Ну, мне ваши оценочные суждения не очень интересны. Хотя вы вероятно и лучший программер беларуси, судя по вашим словам по крайней мере. Но сдаётся мне вы просто хотите посраться, что уже как бы косвенно намекает нам на то что есть и лучше.

[identity profile] theiced.livejournal.com 2012-03-06 09:06 pm (UTC)(link)
посраться всегда ок, но ещё раз - вы выдали уебланское утверждение "хочешь бабла - пили энтерпрайз". я его скорректировал под объективную реальность.

[identity profile] dr-hyder.livejournal.com 2012-03-06 09:13 pm (UTC)(link)
Ваша обьективная реальность уж очень сильно определяется вашим сознанием. Я слабо себе представляю что там в беларуси, но в ЮК если взять зарплату девелоперов без менеджерской составляющей, то средний уровень зарплат в финансовом секторе(что значит энтерпрайз в подавляющем большинстве случаев) отличается от просто девелоперов процентов на 50% примерно. Это в среднем, то есть это не значит что в каждой компании так и естественно это зависит от уровня девелопера. Соответственно в нашей обьективной реальности моё утверждение верно, в вашей же - я не знаю, да и не сильно волнуюсь по этому поводу. Могу поверить вам, если вы настаиваете, мне ортогонально.

[identity profile] theiced.livejournal.com 2012-03-06 09:16 pm (UTC)(link)
средняя температура по больнице волнует только оооочень средних рукожопых девелоперишек. которые щемта никого кроме них самих не волнуют. идите шоле на хабр обсуждать реальности рукожопиков, ок?

[identity profile] dr-hyder.livejournal.com 2012-03-06 09:20 pm (UTC)(link)
Зачем же на хабр, мне с вами нравится это обсуждать. Зайдёшь к беларусским девелоперам в журнал - как будто прямо в беларусь приехал, тут гопы, там бацька, рядом какие то ацкие суперпрофи с зашкаливающим ЧСВ. Аутентичненько! Родина, мать!

[identity profile] theiced.livejournal.com 2012-03-06 09:40 pm (UTC)(link)
ааа, добившийся успеха. иди нахуй чоле.

[identity profile] dr-hyder.livejournal.com 2012-03-06 09:44 pm (UTC)(link)
Я про себя вообще ничего не сказал, я исключительно за вас радовался. Приятно было пообщаться, извините ежели чего не так! Отвык я немного с умными беларускими программистами общаться, потерял навык.

[identity profile] noop.livejournal.com 2012-03-06 10:00 pm (UTC)(link)
Самая надежная и сопровождаемая программа - программа не написанная вообще )

[identity profile] antontsau.livejournal.com 2012-03-07 12:40 am (UTC)(link)
а потом ребе Б удивляется "что это за каменновековые релюшки и ебонитовые панельки образца 1935 года". А это всего лишь полный аналог подобного стиля, но в хардвари. Только чугун, только провернные решения, только логика на релюшках! Никаких новомодных транзисторов внутри которых жабы и электроны, поди пойми как оно работает! вот подадут туда 800 вольт - релюшкам нихрена не будет, а транзисторы все мигом сдохнут!


[identity profile] metaclass.livejournal.com 2012-03-07 04:42 am (UTC)(link)
Вынужденная мера. Для моих задач лисп (конкретно в этой ипостаси, с доступом к жабьим библиотекам) оказался намного удобнее всего остального.

[identity profile] blackyblack.livejournal.com 2012-03-07 04:54 am (UTC)(link)
Не надо STM. Жопой чую - сломается в самый неожиданный момент. Используйте лучше честные структуры данных и правильный GC.

[identity profile] blackyblack.livejournal.com 2012-03-07 04:56 am (UTC)(link)
C весь целиком состоит из простых циклов. А const в 99% случаев не нужен.

[identity profile] nivanych.livejournal.com 2012-03-07 05:34 am (UTC)(link)
> на кложури

Ударение на последний слог делает название изящным!

[identity profile] nivanych.livejournal.com 2012-03-07 05:35 am (UTC)(link)
> не нужно столько ref, особенно вложенных

Видимо, память экономить..........

Page 2 of 5