Una funzione di ordine superiore (o funzione higher-order) è una funzione che può prendere altre funzioni come parametri e/o restituire funzioni come risultato. L'operatore differenziale in matematica è un esempio di funzione che mappa una funzione ad un'altra funzione.
Le funzioni di ordine superiore furono inizialmente studiate dalla teoria del lambda calcolo ben prima che comparissero nei linguaggi di programmazione con i linguaggi funzionali. Sono oggi presenti in molti linguaggi funzionali e non, tra i quali Ruby, Lisp e Haskell.
Più in generale si può dire che le funzioni di ordine superiore sono parte della lingua naturale. Per esempio, gli avverbi possono modificare i verbi (azioni) creando verbi derivati.
Le funzioni di ordine superiore sono cruciali nel paradigma della programmazione a livello funzionale (da non confondere con la programmazione funzionale), che include linguaggi come l'FP di John Backus e il J di Kenneth Eugene Iverson.