Объект первого класса: различия между версиями
[отпатрулированная версия] | [отпатрулированная версия] |
РоманСузи (обсуждение | вклад) |
РоманСузи (обсуждение | вклад) →Примеры: источник |
||
Строка 17: | Строка 17: | ||
== Примеры == |
== Примеры == |
||
В [[Си (язык программирования)|C]] и [[C++]] нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (second-class object). Тем не менее, в C++ есть понятие функционального объекта (function object), который является объектом первого класса и реализует эквивалентную функциям семантику. |
В [[Си (язык программирования)|C]] и [[C++]] нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (second-class object). Тем не менее, в C++ есть понятие функционального объекта (function object), который является объектом первого класса и реализует эквивалентную функциям семантику.<ref name="c2FirstClass" /> |
||
В [[Smalltalk]] и [[JavaScript]] функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk суть методы, они также являются объектами первого класса. |
В [[Smalltalk]] и [[JavaScript]] функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk суть методы, они также являются объектами первого класса. |
Версия от 04:24, 16 июля 2012
В статье не хватает ссылок на источники (см. рекомендации по поиску). |
Объектами первого класса («first-class object») в контексте конкретного языка программирования называются сущности, которые могут быть переданы как параметр, возвращены из функции, присвоены переменной.[1]
Термин был впервые использован в контексте «функции как объекты первого класса» в середине 1960-х.[2]
Определение
Объект называют «объектом первого класса» когда он[3][4]:
- может быть сохранен в переменной или структурах данных
- может быть передан в функцию как параметр
- может быть возвращен из функции как результат
- может быть создан во время выполнения программы
- внутренне самоидентифицируем (независим от именования)
Термин «объект» используется здесь в общем смысле, и не ограничивается объектами языка программирования. Так значения простейших типов данных, например integer и float, во многих языках являются «объектами первого класса».
Примеры
В C и C++ нельзя создавать функции во время выполнения программы, поэтому функции не являются объектами первого класса в этих языках. В то же время указатели на функцию можно передавать в качестве аргумента и возвращать из другой функции, поэтому иногда функции в C++ называют объектами второго класса (second-class object). Тем не менее, в C++ есть понятие функционального объекта (function object), который является объектом первого класса и реализует эквивалентную функциям семантику.[3]
В Smalltalk и JavaScript функции (методы) и классы являются объектами первого класса. Поскольку операторы (+, -) в Smalltalk суть методы, они также являются объектами первого класса.
Ссылки
- ↑ Scott, Michael. Programming Language Pragmatics. — San Francisco, CA : Morgan Kaufmann Publishers, 2006.
- ↑ Rod Burstall, «Christopher Strachey—Understanding Programming Languages», Higher-Order and Symbolic Computation 13:52 (2000)
- ↑ 1 2 First Class . C2.com (25 января 2006). Дата обращения: 9 октября 2010.
- ↑ first class object . Catalysoft.com. Дата обращения: 9 октября 2010.
int main()
{
printf("Hi");
return 0;
}
| Это заготовка статьи о программировании. Помогите Википедии, дополнив её. |