Мне кажется, что вы боретесь с вопросом, что на самом деле означает изменчивое / неизменяемое . Итак, вот простое объяснение:
Сначала нам нужен фундамент, на котором можно основывать объяснение.
Поэтому думайте обо всем, что вы программируете как виртуальный объект, что-то, что сохраняется в памяти компьютера как последовательность двоичных чисел. (Однако не пытайтесь представить это слишком сложно. ^^) Теперь на большинстве компьютерных языков вы не будете работать с этими двоичными числами напрямую, а скорее будете использовать интерпретацию двоичных чисел.
Например, вы не думаете о числах, таких как 0x110, 0xaf0278297319 или аналогичных, но вместо этого вы думаете о числах, таких как 6, или о строках, таких как «Hello, world». Тем не менее тезисные числа или строки являются интерпретацией двоичного числа в памяти компьютера. То же самое верно для любого значения переменной.
Вкратце: мы программируем не с фактическими значениями, а с интерпретациями реальных двоичных значений.
Теперь у нас есть интерпретации, которые не должны быть изменены ради логики и других «изящных вещей», в то время как есть интерпретации, которые вполне могут быть изменены. Например, подумайте о симуляции города, другими словами, о программе, в которой много виртуальных объектов, а некоторые из них - дома. Теперь можно ли изменить эти виртуальные объекты (дома) и можно ли считать их одними и теми же домами? Ну, конечно, они могут. Таким образом, они изменчивы: их можно изменить, не став «совершенно» другим объектом.
Теперь подумайте о целых числах: это также виртуальные объекты (последовательности двоичных чисел в памяти компьютера). Так что если мы изменим один из них, например, увеличив значение шесть на одно, это все равно шесть? Ну, конечно, нет. Таким образом, любое целое число является неизменным.
Итак: если какое-либо изменение в виртуальном объекте означает, что оно фактически становится другим виртуальным объектом, то оно называется неизменным.
Заключительные замечания:
(1) Никогда не путайте свой реальный опыт изменчивости и неизменности с программированием на определенном языке:
Каждый язык программирования имеет свое собственное определение того, какие объекты могут быть отключены, а какие нет.
Таким образом, хотя вы теперь можете понимать разницу в значении, вам все равно придется изучать фактическую реализацию для каждого языка программирования. ... Действительно, может быть цель языка, где 6 может быть приглушен, чтобы стать 7. С другой стороны, это будет довольно сумасшедший или интересный материал, например симуляции параллельных вселенных. ^^
(2) Это объяснение, конечно, не научное, оно призвано помочь вам понять разницу между изменчивым и неизменным.