Программирование на уровне ценности - Value-level programming

Программирование на уровне значений относится к одной из двух противоположных парадигм программирования, определенных Джоном Бэкусом в его работе над программами как математическими объектами , а вторая - программированием на уровне функций . Бакуса первоначально использовался термин программирования на уровне объектов , но этот термин теперь склонен к путанице с объектно-ориентированного программирования .

Программы уровня значений - это программы, которые описывают, как комбинировать различные значения (например, числа, символы, строки и т. Д.) Для формирования других значений, пока не будут получены окончательные значения результата . Новые значения конструируются из существующих путем применения различных функций преобразования значений, таких как сложение, конкатенация, инверсия матриц и т. Д.

Обычные программы фон Неймана относятся к уровню значений: выражения в правой части операторов присваивания предназначены исключительно для построения значения, которое затем должно быть сохранено.

Связь с типами данных

Подход к программированию на уровне ценностей предполагает изучение пространства значений при операциях формирования значений и алгебраических свойств этих операций. Это то, что называется изучением типов данных , и оно продвинулось от сосредоточения внимания на самих значениях и их структуре к первоочередной заботе об операциях формирования значений и их структуре, как это задается некоторыми аксиомами и алгебраическими законами, то есть , к алгебраическому изучению типов данных .

Связь с языками лямбда-исчисления

Языки, основанные на лямбда-исчислении (такие как Lisp , ISWIM и Scheme ), на практике являются языками ценностного уровня, хотя они не ограничены конструкцией.

Чтобы понять, почему типичные программы лямбда-стиля в первую очередь относятся к уровню значений, рассмотрим обычное определение функции преобразования значения в значение, например

f = λx.E

здесь x должен быть переменной-значением (поскольку аргумент f является значением по определению), а E также должен обозначать значение (поскольку результат f является значением по определению). Как правило, E - это выражение, включающее применение функций формирования значений к значениям переменных и констант; тем не менее, несколько функций формирования значений, имеющих как аргументы функции, так и аргументы значения, действительно существуют и используются для ограниченных целей.

Если термин « значения» определен как включающий сами переменные-значения, то представление программирования на уровне значений представляет собой одно из построений значений путем применения существующих программ (операций / функций формирования значений) к другим значениям. Программирование в стиле лямбда строит новую программу из значения результата путем лямбда-абстрагирования переменных значения.

Смотрите также