@msatersam11

Почему Immutable — это добро для js?

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

Но:
В JS всего лишь один поток исполнения.
Сайд-эффекты!? Действительно ли они полноценно решаются использованием.. неизменяемых данных?
Отдельная неясность возникает про "оптимизацию компилятором": неужто какая-то чисто искусственная идея, чуждая для рассматриваемого языка, может поспособствовать какой-то оптимизации?
И всё это было бы более или менее терпимо, если бы данные действительно были неизменяемыми, но, пусть косвенно, они подвержены изменениям( к слову о setIn в immutable).

Откуда возникает один большой вопрос: зачем придумывать противоестественный для JS геморрой в виде неизменяемых данных, тащить в проект лишь для этого отдельный толстый файл, чтоб.. всё равно изменять данные, но вместо экономного изменения одного элемента, каждый раз копировать весь массив с.. одним-единственным изменённым элементом( или даже одним из его полей) и, казалось бы, причём тут экономия памяти и вычислительной мощности проца ?
Чем иммутабельность именно в JS столь хороша, что оправдывает столь ощутимые накладные расходы при довольно туманных положительных чертах?
  • Вопрос задан
  • 2531 просмотр
Пригласить эксперта
Ответы на вопрос 2
fr_end
@fr_end
Frontend разработчик
Я думал главный плюс не в этом, а в том, что можно отслеживать изменение объекта
Понравился доклад на эту тему https://www.youtube.com/watch?v=8BExyeds_c0
Ответ написан
Комментировать
@vsuhachev
Вы даже перечислили все причины. Вот затем и надо. Или вы не верите разработчикам компиляторов, что их компиляторы будут работать быстрее с неизменяемыми данными?

Если вам лично не надо - не используйте, делов-то :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы