В наст. время, повсеместно рассказывается о т.н неизменяемости и о том, насколько это здорово/круто/и_вообще_как_мы_без_этого_жили, в качестве плюсов приводятся такие аргументы, как:
Больший простор для оптимизации компилятором,
Упрощение жизни инструментам для статического анализа кода,
Упрощение отслеживания изменений в структурах данных,
Избежание многих т.н сайд-эффектов в функциях,
( один из осн. плюсов)Неблокирующее чтение из разных потоков итд
Но:
В JS всего лишь один поток исполнения.
Сайд-эффекты!? Действительно ли они полноценно решаются использованием.. неизменяемых данных?
Отдельная неясность возникает про "оптимизацию компилятором": неужто какая-то чисто искусственная идея, чуждая для рассматриваемого языка, может поспособствовать какой-то оптимизации?
И всё это было бы более или менее терпимо, если бы данные действительно были неизменяемыми, но, пусть косвенно, они подвержены изменениям( к слову о setIn в immutable).
Откуда возникает один большой вопрос: зачем придумывать противоестественный для JS геморрой в виде неизменяемых данных, тащить в проект лишь для этого отдельный толстый файл, чтоб.. всё равно изменять данные, но вместо экономного изменения одного элемента, каждый раз копировать весь массив с.. одним-единственным изменённым элементом( или даже одним из его полей) и, казалось бы, причём тут экономия памяти и вычислительной мощности проца ?
Чем иммутабельность именно в JS столь хороша, что оправдывает столь ощутимые накладные расходы при довольно туманных положительных чертах?
Ну возьмите и посмотрите что будет быстрее изменить пять свойств у объекта или создать новый объект с пятью свойствами которым в момент создания присваивается значение. Если второй вариант будет медленнее, это значит одно - все врут. Сделайте такой тест и напишите здесь упомянув меня, ведь лучше один раз увидеть чем сто раз услышать.
И лично мне кажется что это психи-математики лютуют пропогандируя функциональное программирование, которое им легче дается. Ну а на деле сейчас они лет десять эту тему будут раздувать, потом когда раздуют экстаз закончится и они начнут искать новый способ поднятия тонуса. Ну и естественно они обратят внимание на разобранный на винтики-состояние приложение. Они захотят все улучшить и все объединять. Так пройдет ещё двадцать лет и только потом они поймут что придумали ооп.
нужно брать лучшее и от туда и от туда, а не быть тупым ботом, которому сказав что молоко полезней воды, вообще бросили пить воду.
Провел тест, оказалось в десять раз медленнее, но это не важно. Важно смотреть на мир открытыми глазами и понимать что люди которые со складом ума способным только продавать ненужную херню под видом блага проникли во все щели IT. И теперь вместо турбо-вибро-лазерной-масажно-лечебной-щетки продают убогие теории и уроки.
Вы даже перечислили все причины. Вот затем и надо. Или вы не верите разработчикам компиляторов, что их компиляторы будут работать быстрее с неизменяемыми данными?
Если вам лично не надо - не используйте, делов-то :)
Очень содержательно.
Какие конкретно? Зачем конкретно надо?
Мы не в церкви, чтобы на слово верить просто "потому что".
Цифры, данные от разработчиков..
Очень интересно, как они сделают компилятор для.. JS, да ещё такой, в котором прямое изменение изменяемых( да, именно так) данных будет медленнее, чем то же самое, но с костыльной прослойкой для возможности.. не изменять, но, в итоге, всё равно изменять( конечно, ещё и создав прежде полный их дубликат) данные, которые, вроде как, должны оставаться неизменяемыми.
И, да, если не можете ответить по сути - лучше просто не отвечайте.