Programación a nivel de valores

De Wikipedia, la enciclopedia libre

La programación a nivel de valores es unos de los dos paradigmas contrastantes identificados por John Backus en su trabajo sobre los Programas como objetos matemáticos, siendo el otro la programación a nivel funcional. El término inicialmente utilizado por Backus fue el de programación a nivel de objetos, pero en la actualidad ese término traería confusión con la programación orientada a objetos.

Los programas a nivel de valores describen como combinar diferentes valores (por ejemplo, números, caracteres, etc.) para formar nuevos valores hasta obtener el resultado final. Los nuevos valores se obtienen como resultado de la aplicación de operaciones que transforman valores en otros valores, como por ejemplo, la suma, la concatenación, la inversión de matrices, etc.

Los lenguajes que siguen el estilo de von Neumann son de nivel de valores: las expresiones a la derecha de una asignación tienen por objeto la creación del nuevo valor a asignar.

Relación con los tipos de datos[editar]

El enfoque de programación a nivel de valores o imperativa se presta para el estudio de los valores bajo las operaciones de formación de valores y de sus propiedades algebraicas.

Relación con los lenguajes basados en el cálculo lambda[editar]

Según este punto de vista, los lenguajes basados en el cálculo lambda (tales como Lisp, ISWIM, y Scheme) son lenguajes a nivel de valores, si bien su diseño no los restringe a ello.

Por ejemplo, en una definición típica en el cálculo lambda de la forma f = λx.E la variable x así como la expresión E denotan valores. Típicamente, E es una expresión que aplica funciones de formación de valores a variables y constantes.

Punto de vista opuesto[editar]

Por su parte, los partidarios de la programación funcional consideran a los lenguajes basados en el cálculo lambda como contentivos de ambos paradigmas, dado que tanto las operaciones de formación de valores como las operaciones de construcción de programas se expresan en el mismo formalismo, dejando al usuario escoger qué partes de su programa deben ser escritas en un paradigma o en el otro.

Véase también: