LINUX.ORG.RU

История изменений

Исправление 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%, и сразу будешь к ней приглядываться. Любая изменяемая переменная вносит новое измерение сложности в алгоритм. Чем больше переменных меняется, тем сложней алгоритм, число его состояний растёт пропорционально экспоненте числа переменных.