La programación de orden superior es un estilo de programación informática que utiliza componentes de software, como funciones, módulos u objetos, como valores. Por lo general, se instancia con, o se toma prestado de, modelos de computación como el cálculo lambda que hacen un uso intensivo de funciones de orden superior . Un lenguaje de programación puede considerarse de orden superior si los componentes, como procedimientos o etiquetas, se pueden utilizar como datos. Por ejemplo, estos elementos podrían usarse de la misma manera que los argumentos o valores. [1]
Por ejemplo, en la programación de orden superior, se pueden pasar funciones como argumentos a otras funciones y las funciones pueden ser el valor de retorno de otras funciones (como en macros o para interpretar ). Este estilo de programación se utiliza principalmente en la programación funcional , pero también puede ser muy útil en la programación orientada a objetos . Una interpretación ligeramente diferente de la programación de orden superior en el contexto de la programación orientada a objetos son los mensajes de orden superior , que permiten que los mensajes tengan otros mensajes como argumentos, en lugar de funciones.
Ejemplos de lenguajes que admiten esto son Ada , Wolfram Language , C# , Java , ECMAScript ( ActionScript , JavaScript , JScript ), F# , Haskell , Lisp ( Common Lisp , Scheme , Clojure , otros), Lua , Oz , Perl , PHP , Prolog , [2] Python , Ruby , Smalltalk , Scala , ML y Erlang .