Существуют ли языки программирования, чьи "переменные" по умолчанию неизменяемы (const, final и т.д.)?
И, чтобы сделать его переменной, вам нужно объявить дополнительный неизменяемый квалификатор?
Существуют ли языки программирования, чьи "переменные" по умолчанию неизменяемы (const, final и т.д.)?
И, чтобы сделать его переменной, вам нужно объявить дополнительный неизменяемый квалификатор?
Философия Функциональное программирование Парадигма сильно ориентирована на то, чтобы все "переменные" были неизменными, а "изменчивые" были разрешены только в экстремальных условиях случаев (т.е. для ввода/вывода). Поэтому большинство функциональных языков программирования, таких как различные диалоги Lisp и Haskell, будут (чаще всего) усиливать неизменяемые переменные. Конечно, некоторые языки предлагают большую гибкость, чем другие, но центральная парадигма/философия остается, что ее обескураживает.
Изменить: в ответ на ваше редактирование:
Если вы ищете C-with-friendlier-константы, то принятие совершенно новой парадигмы программирования не является вашим решением. В функциональном программировании все является неизменным (в большинстве случаев), и вы обычно смотрите на совершенно новую фундаментальную философию и подход к программированию.
На самом деле это не решение, если все, что вам нужно, - упростить объявление констант.
Edit2: В ответ на людей, которые меня выказывают:
В то время как я сделал правильно (надеюсь), отвечу на вопрос об этом, я не уверен, что это был ответ, который оказался полезным, учитывая его новое редактирование/комментарий. Тем не менее, я могу надеяться, что, возможно, открою глаза на совершенно новый красивый мир программирования =)
Edit3: Список Википедии функциональных языков программирования:
Большинство из этих языков имеют некоторые незначительные элементы/влияния нефункциональной ереси; те, которые обозначены как "чисто функциональные", не делают.
(Насколько мне известно, языки функционального программирования - единственные, которые поддерживают философию неизменяемых переменных. Возможно, существуют языки, которые по умолчанию не имеют переменных, которые не являются функциональными по парадигме. Понятие звучит для меня довольно странно, но Я не могу гарантировать одеяло "никогда никогда", учитывая огромное, огромное, огромное количество языков программирования. Я просто скажу, что это, насколько мне известно, крайне маловероятно)
Комментирует, что ADA - это языковой язык с обязательным/объектно-ориентированным языком с неизменяемыми переменными по умолчанию.
Да.
Haskell и Erlang - два примера.
Clojure - это диалект Lisp, предназначенный для виртуальной машины Java, работающий исключительно с неизменяемыми данными.
Ближайшим аналогом, о котором я могу думать, является Objective Caml. Переменные, связанные с помощью let
, всегда неизменяемы, но поля структур (так называемые записи в Caml) неизменяемы только по умолчанию, и можно пометить отдельное поле как mutable
.
Среди функциональных языков Objective Caml оказался чрезвычайно привлекательным для программистов C. OCaml имеет довольно много императивных конструкций как в языке, так и в библиотеках, поэтому путь миграции не так странен. И если вы действительно хотите объекты и систему классов, они тоже есть.
Язык Microsoft.NET F # является потомком Objective Caml, но было внесено немало изменений, чтобы убедиться, что это язык .NET, и меня не информируют о изменчивости. Но если вы хотите попробовать функциональный язык в качестве относительно небольшого изменения в вашем текущем стиле программирования, вы можете изучить Objective Caml или F #.
Все переменные в XSLT могут быть неизменными.