Программирование на уровне ценности - Value-level programming
Программирование на уровне значений относится к одной из двух противоположных парадигм программирования, определенных Джоном Бэкусом в его работе над программами как математическими объектами , а вторая - программированием на уровне функций . Бакуса первоначально использовался термин программирования на уровне объектов , но этот термин теперь склонен к путанице с объектно-ориентированного программирования .
Программы уровня значений - это программы, которые описывают, как комбинировать различные значения (например, числа, символы, строки и т. Д.) Для формирования других значений, пока не будут получены окончательные значения результата . Новые значения конструируются из существующих путем применения различных функций преобразования значений, таких как сложение, конкатенация, инверсия матриц и т. Д.
Обычные программы фон Неймана относятся к уровню значений: выражения в правой части операторов присваивания предназначены исключительно для построения значения, которое затем должно быть сохранено.
Связь с типами данных
Подход к программированию на уровне ценностей предполагает изучение пространства значений при операциях формирования значений и алгебраических свойств этих операций. Это то, что называется изучением типов данных , и оно продвинулось от сосредоточения внимания на самих значениях и их структуре к первоочередной заботе об операциях формирования значений и их структуре, как это задается некоторыми аксиомами и алгебраическими законами, то есть , к алгебраическому изучению типов данных .
Связь с языками лямбда-исчисления
Языки, основанные на лямбда-исчислении (такие как Lisp , ISWIM и Scheme ), на практике являются языками ценностного уровня, хотя они не ограничены конструкцией.
Чтобы понять, почему типичные программы лямбда-стиля в первую очередь относятся к уровню значений, рассмотрим обычное определение функции преобразования значения в значение, например
f = λx.E
здесь x должен быть переменной-значением (поскольку аргумент f является значением по определению), а E также должен обозначать значение (поскольку результат f является значением по определению). Как правило, E - это выражение, включающее применение функций формирования значений к значениям переменных и констант; тем не менее, несколько функций формирования значений, имеющих как аргументы функции, так и аргументы значения, действительно существуют и используются для ограниченных целей.
Если термин « значения» определен как включающий сами переменные-значения, то представление программирования на уровне значений представляет собой одно из построений значений путем применения существующих программ (операций / функций формирования значений) к другим значениям. Программирование в стиле лямбда строит новую программу из значения результата путем лямбда-абстрагирования переменных значения.