История изменений
Исправление Nervous, (текущая версия) :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
(Это, опять же, потребует сильно перетряхнуть нынешний доминирующий подход к ООП. Что, несомненно, встретит немалое сопротивление со стороны господ разработчиков.)
Например, посмотрим на values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для работы с последовательностью значений (например, этих самых векторов) во времени — ссылочный тип, atom, хранящий ссылку на текущее значение и предоставляющий API для её (атомарного) изменения — чтобы заставить её указывать на новое значение. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
(Это, опять же, потребует сильно перетряхнуть нынешний доминирующий подход к ООП. Что, несомненно, встретит немалое сопротивление со стороны господ разработчиков.)
Например, посмотрим на values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для работы с последовательностью значений (например, этих самых векторов) во времени — ссылочный тип, atom, хранящий ссылку на текущее значение и предоставляющий API для её изменения (на новое значение). Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
(Это, опять же, потребует сильно перетряхнуть нынешний доминирующий подход к ООП. Что, несомненно, встретит немалое сопротивление со стороны господ разработчиков.)
Например, посмотрим на values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений (например, этих самых векторов) во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Но это, опять же, потребует сильно перетряхнуть нынешний доминирующий подход к ООП. Что, несомненно, встретит немалое сопротивление со стороны господ разработчиков.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений (например, этих самых векторов) во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений (например, этих самых векторов) во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится какой-то механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений (например, этих самых векторов) во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится какой-то механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы в некоторых недоязычках называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится какой-то механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы называется или типа того? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится какой-то механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые, comparable by value значения и обладающие идентичностью, comparable by identity, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы называется? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исправление Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится какой-то механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Просто будет два типа объектов — неизменяемые значения и обладающие идентичностью, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы называется? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.
Исходная версия Nervous, :
Вместо мутирования объектов порождать новые … Никаких проблем уложить это в ООП нет
В какой-то момент всё равно понадобится какой-то механизм для работы с изменяемыми ссылками на неизменяемые объекты. Хотя, конечно, можно для этого использовать обычные изменяемые объекты, как сейчас. Будет два типа объектов — неизменяемые значения и обладающие идентичностью, изменяемые ссылки на неизменяемые значения.
Похоже, движение в этом направлении уже давно идёт — value classes вроде бы называется? Правда, ничто технически не мешает господам разработчикам продолжать по старинке пользоваться только вторыми и игнорировать первые. Наверное, лучше, чтобы это был отдельный механизм, который было бы невозможно (или хотя бы трудно и неудобно) абузить таким образом.
Например, как values & references в кложе. Для хранения последовательности значений у нас значение — immutable persistent vector, для хранения последовательности значений во времени — ссылочный тип, atom. Обязанности разделены, минимум путаницы.