¿Qué se entiende por función de orden superior cuando se describe un lenguaje de programación?

Un montón de ideas de programación agradables, útiles y bastante sencillas de hace décadas se están re-comercializando hoy como si fueran paradigmas emocionantes y difíciles. “Función de orden superior” es uno de ellos.

Toda “función de orden superior” significa que puedo pasar una función a otra función. Por ejemplo, podría querer aplicar la función “x ^ 2” a cada número en una lista. Hubo un tiempo en que fue una tarea rápida pero poco inspiradora: mapear x ^ 2 en la lista. Pero al usar los lenguajes de programación avanzados de hoy en día, puedo “pasar x ^ 2 a una función de orden superior llamada ‘mapa'”. Obviamente, este último es mucho más gratificante intelectualmente.

¡EDITAR!
Steve Schafer señaló en un comentario que “la función de orden superior” tiene conexiones venerables y profundas en la lógica.

Personalmente, sigo encontrando que la etiqueta hace que estas construcciones de lenguaje de programación suenen menos accesibles de lo que realmente son, pero el recordatorio es que la filosofía subyacente a los lenguajes de programación es grave.

En informática, una función de orden superior es una función que realiza al menos uno de los siguientes:
toma una o más funciones como argumentos,
Devuelve una función como su resultado.
Todas las demás funciones son funciones de primer orden.
La función de mapa, que se encuentra en muchos lenguajes de programación funcionales, es un ejemplo de una función de orden superior. Toma como argumentos una función f y una lista de elementos, y como resultado, devuelve una nueva lista con f aplicada a cada elemento de la lista. Otro tipo muy común de función de orden superior en aquellos lenguajes que las soportan son las funciones de clasificación que toman una función de comparación como parámetro, lo que permite al programador separar el algoritmo de clasificación de las comparaciones de los elementos que se están ordenando. La función estándar C qsort es un ejemplo de esto.

Una función de orden superior es una función que acepta una o más funciones como argumentos y / o devuelve una función como resultado. Por ejemplo, una función sort() menudo acepta una función comparadora; Esa función determina los criterios de clasificación.