Объект первого класса

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

Объектами первого класса (англ. first-class object, first-class entity, first-class citizen) в контексте конкретного языка программирования называются сущности, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной[1].

Понятие объектов первого и второго класса было предложено в 1967 г. Кристофером Стрэчи в статье «Understanding Programming Languages», где процедуры языка Алгол в противоположность действительным числам он сравнил с подвергающимися социальной дискриминации «людьми второго сорта» (англ. second-class citizens)[2].

Определение[править | править вики-текст]

Объект называют «объектом первого класса», если он[3][4]:

Термин «объект» используется здесь в общем смысле, и не ограничивается объектами языка программирования. Так значения простейших типов данных, например integer и float, во многих языках являются «объектами первого класса».

Примеры[править | править вики-текст]

В C и C++ нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (англ. second-class object). Тем не менее, в C++ есть понятие функционального объекта (англ. function object), который является объектом первого класса и реализует эквивалентную функциям семантику[3].

В Smalltalk[5] и JavaScript[6] функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk по сути методы, они также являются объектами первого класса.

Примечания[править | править вики-текст]