La programación a nivel de valor se refiere a uno de los dos paradigmas de programación contrastantes identificados por John Backus en su trabajo sobre programas como objetos matemáticos , el otro es la programación a nivel de función . Backus originalmente usó el término programación a nivel de objeto, pero ese término ahora es propenso a confundirse con la programación orientada a objetos .
Los programas de nivel de valor son aquellos que describen cómo combinar varios valores (es decir, números, símbolos, cadenas, etc.) para formar otros valores hasta que se obtengan los valores del resultado final . Los nuevos valores se construyen a partir de los existentes mediante la aplicación de varias funciones de valor a valor, como la suma, la concatenación, la inversión de matrices, etc.
Los programas de von Neumann convencionales son a nivel de valor: las expresiones en el lado derecho de las declaraciones de asignación se ocupan exclusivamente de construir un valor que luego se almacenará.
Conexión con tipos de datos
El enfoque de programación a nivel de valor invita al estudio del espacio de valores bajo las operaciones de formación de valor y de las propiedades algebraicas de esas operaciones. Esto es lo que se llama el estudio de tipos de datos , y ha pasado de centrarse en los valores mismos y su estructura, a una preocupación principal por las operaciones de formación de valores y su estructura, tal como lo dan ciertos axiomas y leyes algebraicas, es decir. , al estudio algebraico de tipos de datos .
Conexión con lenguajes Lambda Calculus
Los lenguajes basados en cálculo Lambda (como Lisp , ISWIM y Scheme ) son, en la práctica , lenguajes de nivel de valor, aunque por lo tanto no están restringidos por diseño.
Para ver por qué los programas típicos de estilo lambda son principalmente a nivel de valor, considere la definición habitual de una función de valor a valor, digamos
f = λ x . mi
aquí, x debe ser una variable de valor (ya que el argumento de f es un valor por definición) y E debe denotar un valor también (ya que el resultado de f es un valor por definición). Normalmente, E es una expresión que implica la aplicación de funciones formadoras de valor a variables de valor y constantes; sin embargo, existen algunas funciones formadoras de valor que tienen argumentos tanto de función como de valor y se usan para propósitos limitados [ cita requerida ] .
Si el término valores se define para incluir las propias variables de valor, entonces la vista de programación a nivel de valor es la de construir valores mediante la aplicación de programas existentes (operaciones / funciones de formación de valor) a otros valores. La programación de estilo Lambda crea un nuevo programa a partir del valor de resultado mediante la abstracción lambda de las variables de valor.