Вони різні.
Функції першого класу
Значення мови, якою рівномірно обробляються, називаються "першим класом". Вони можуть зберігатися в структурах даних, передаватися як аргументи або використовуватися в структурах управління.
Мови, які підтримують значення з типами функцій і трактують їх так само, як і значення, що не функціонують, можна сказати, що вони мають "функції першого класу".
Функції вищого порядку
Одним із наслідків наявності функцій першого класу є те, що ви повинні мати можливість передавати функцію як аргумент іншій функції. Остання функція тепер "вищого порядку". Це функція, яка приймає функцію як аргумент.
Канонічний приклад - "карта"
map :: (a -> b) -> [a] -> [b]
map f [] = []
map f (x:xs) = f x : map f xs
Тобто він бере функцію та масив та повертає новий масив із функцією, застосованою до кожного елемента.
Функціональні мови - мови, де функції є основним засобом побудови програм - усі вони мають функції першого класу. Більшість також мають функції вищого порядку (дуже рідкісні винятки становлять такі мови, як Excel, які можна сказати як функціональні, але не вищого порядку).