Я изучаю языки программирования и сейчас пытаюсь понять разницу между функциями первого порядка и функциями первого класса.
Я просмотрел некоторые сообщения об этом и понял, что все функции в Python или Java обрабатываются как объекты первого класса, как концепция лямбда.
Затем я увидел статью, в которой говорится, что в Си все по-другому. Подобно первоклассной функции в Си, это указатели на функции, но они не могут быть назначаемыми, не копируемыми, а не отдельными экземплярами со своими собственными переменными экземпляра. Они не существуют в куче, но в стеке и не являются изменяемыми (только для чтения).
И указатели функций указывают на память секции кода. Но я не мог выяснить, как по-разному обрабатываются выделения памяти в функциях Python или Java для функциональных объектов. Они как-то выделяются в кучу? или мутациям с функциональными объектами просто выделяется новая память в разделах кода?