История изменений
Исправление vbr, (текущая версия) :
Ну я же писал уже.
Смысл строгих языков программирования в том, чтобы позволять выражать программисту некоторые ограничения.
К примеру я пишу не просто var x
, а ещё и объявляю тип: var x: String
. Это даёт тем, кто читает и дорабатывает программу, информацию о том, что переменная x может принимать только строковые значения. Причём компилятору эта информация особо не нужна, всякие выводы типов и так могут всё вывести. Но вот программисты решили, что такие само-ограничения им могут быть полезны. Как для проверяемого компилятором документирования, так и для предотвращения некоторых классов багов.
Возможность объявления неизменяемых переименных (идиотский термин, но не знаю лучшего, «константа» не передаёт всю суть) это ровно из той же области. В подавляющем большинстве исходников 99% переменных не изменяют своего значения. И это привносит смысл в то, чтобы специальным образом обозначать все остальные переменные. Если ты видишь val user = userService.getCurrentUser()
ты в уме запоминаешь, что в переменной user
лежит текущий юзер и это не изменится никогда. Если ты видишь var user = ...
, то ты понимаешь, что эта переменная изменяется 100%, и сразу будешь к ней приглядываться. Любая изменяемая переменная вносит новое измерение сложности в алгоритм. Чем больше переменных меняется, тем сложней алгоритм, число его состояний растёт пропорционально экспоненте числа переменных.
Исправление vbr, :
Ну я же писал уже.
Смысл строгих языков программирования в том, чтобы позволять выражать программисту некоторые ограничения.
К примеру я пишу не просто var x
, а ещё и объявляю тип: var x: String
. Это даёт тем, кто читает и дорабатывает программу, информацию о том, что переменная x может принимать только строковые значения. Причём компилятору эта информация особо не нужна, всякие выводы типов и так могут всё вывести. Но вот программисты решили, что такие само-ограничения им могут быть полезны. Как для документирования, так и для предотвращения некоторых классов багов.
Возможность объявления неизменяемых переименных (идиотский термин, но не знаю лучшего, «константа» не передаёт всю суть) это ровно из той же области. В подавляющем большинстве исходников 99% переменных не изменяют своего значения. И это привносит смысл в то, чтобы специальным образом обозначать все остальные переменные. Если ты видишь val user = userService.getCurrentUser()
ты в уме запоминаешь, что в переменной user
лежит текущий юзер и это не изменится никогда. Если ты видишь var user = ...
, то ты понимаешь, что эта переменная изменяется 100%, и сразу будешь к ней приглядываться. Любая изменяемая переменная вносит новое измерение сложности в алгоритм. Чем больше переменных меняется, тем сложней алгоритм, число его состояний растёт пропорционально экспоненте числа переменных.
Исходная версия vbr, :
Ну я же писал уже.
Смысл строгих языков программирования в том, чтобы позволять выражать программисту некоторые ограничения.
К примеру я пишу не просто var x
, а ещё и объявляю тип: var x: String
. Это даёт тем, кто читает и дорабатывает программу, информацию о том, что переменная x может принимать только строковые значения. Причём компилятору эта информация особо не нужна, всякие выводы типов и так могут всё вывести. Но вот программисты решили, что такие само-ограничения им могут быть полезны.
Возможность объявления неизменяемых переименных (идиотский термин, но не знаю лучшего, «константа» не передаёт всю суть) это ровно из той же области. В подавляющем большинстве исходников 99% переменных не изменяют своего значения. И это привносит смысл в то, чтобы специальным образом обозначать все остальные переменные. Если ты видишь val user = userService.getCurrentUser()
ты в уме запоминаешь, что в переменной user
лежит текущий юзер и это не изменится никогда. Если ты видишь var user = ...
, то ты понимаешь, что эта переменная изменяется 100%, и сразу будешь к ней приглядываться. Любая изменяемая переменная вносит новое измерение сложности в алгоритм. Чем больше переменных меняется, тем сложней алгоритм, число его состояний растёт пропорционально экспоненте числа переменных.