~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 6D405E83BBDB3277E83490633D125D9B__1716376560 ✰
Заголовок документа оригинал.:
✰ First-class citizen - Wikipedia ✰
Заголовок документа перевод.:
✰ Первосортный гражданин — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/First-class_object ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/6d/9b/6d405e83bbdb3277e83490633d125d9b.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/6d/9b/6d405e83bbdb3277e83490633d125d9b__translat.html ✰
Дата и время сохранения документа:
✰ 16.06.2024 19:22:14 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 22 May 2024, at 14:16 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

Первосортный гражданин — Википедия Jump to content

Первоклассный гражданин

Из Википедии, бесплатной энциклопедии
(Перенаправлено с объекта «Первоклассный» )

В данном языке программирования гражданин первоклассный [а] — это объект, который поддерживает все операции, обычно доступные другим объектам. Эти операции обычно включают передачу в качестве аргумента , возврат из функции и присвоение переменной . [1]

История [ править ]

Понятие объектов первого и второго класса было введено Кристофером Стрейчи в 1960-х годах. [2] [3] На самом деле он не давал строгого определения этого термина, но противопоставлял действительные числа и процедуры в Алголе :

Объекты первого и второго класса. В АЛГОЛе вещественное число может появляться в выражении или присваиваться переменной, и любое из них может выступать в качестве фактического параметра при вызове процедуры. С другой стороны, процедура может появиться только при вызове другой процедуры либо как оператор (наиболее распространенный случай), либо как один из фактических параметров. Не существует других выражений, включающих процедуры или чьи результаты являются процедурами. Таким образом, в некотором смысле процедуры в АЛГОЛе являются гражданами второго сорта: они всегда должны присутствовать лично и никогда не могут быть представлены переменной или выражением (за исключением случая формального параметра)... [4]

Робин Попплстоун дал следующее определение: Все объекты имеют определенные фундаментальные права.

  1. Все элементы могут быть фактическими параметрами функций.
  2. Все элементы могут быть возвращены как результаты функций.
  3. Все элементы могут быть предметом операторов присваивания.
  4. Все элементы можно проверить на равенство. [5]

В 1990-е годы Рафаэль Финкель [6] предложил определения ценностей второго и третьего класса, но эти определения не получили широкого распространения. [7] [ нужен лучший источник ]

Примеры [ править ]

Простейшие скалярные типы данных, такие как целые числа и числа с плавающей запятой, почти всегда являются первоклассными.

Во многих старых языках массивы и строки не являются первоклассными: их нельзя присваивать как объекты или передавать в подпрограмму в качестве параметров. Например, ни Fortran IV, ни C не поддерживают присвоение массивов, и когда они передаются в качестве параметров, фактически передается только позиция их первого элемента — их размер теряется. Кажется, что C поддерживает присвоение указателей массива , но на самом деле это просто указатели на первый элемент массива и опять-таки не передают размер массива. [ нужна цитата ]

В большинстве языков типы данных не являются объектами первого класса, хотя в некоторых объектно-ориентированных языках классы являются объектами первого класса и являются экземплярами метаклассов . Языки семейства функционального программирования часто также содержат первоклассные типы, например, в форме обобщенных алгебраических типов данных или других возможностей метаязыка, позволяющих программам реализовывать расширения своего собственного языка реализации.

Лишь немногие языки вообще поддерживают продолжения и метки GOTO как объекты, не говоря уже о первоклассных объектах.

Концепция Описание Языки
первоклассная функция замыкания и анонимные функции Smalltalk , Dart , Scheme , ML , Haskell , F# , Kotlin , Scala , Swift , Perl , PHP , Python , Raku , JavaScript , Delphi , Rust
первоклассный контроль продолжения Схема , ML , F#
первоклассный тип зависимые типы Coq , Idris , Agda
первоклассный тип данных Общий Haskell , C++11
первоклассный полиморфизм непредикативный полиморфизм
первоклассное сообщение динамические сообщения (вызовы методов) Болтовня , [8] Цель-С , [8] Общий Лисп
первоклассный класс метакласс и метаобъект Smalltalk , Objective-C , Ruby , Python , Delphi , Common Lisp
первоклассные доказательства объект доказательства [9] Кок , Агда

Функции [ править ]

Многие языки программирования поддерживают передачу и возврат значений функций, которые можно применять к аргументам. Достаточно ли этого для того, чтобы назвать значения функций первоклассными, остается спорным.

Некоторые авторы требуют, чтобы во время выполнения можно было создавать новые функции , чтобы называть их «первоклассными». [ нужна цитата ] Согласно этому определению, функции в C не являются объектами первого класса; вместо этого их иногда называют объектами второго класса , поскольку ими по-прежнему можно манипулировать большинством вышеперечисленных способов (с помощью указателей на функции ).

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

Отражение [ править ]

Некоторые языки, такие как Java и PHP , имеют явную подсистему отражения , которая обеспечивает доступ к внутренним структурам реализации, даже если они не доступны и не поддаются манипулированию так же, как обычные объекты.

В других языках, например, в семействе Лисп , отражение является центральной особенностью языка, а не особой подсистемой. Обычно это принимает форму некоторого набора следующих функций:

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

См. также [ править ]

Примечания [ править ]

  1. ^ Также известен как первоклассный тип , первоклассный объект , первоклассная сущность или первоклассное значение .

Ссылки [ править ]

  1. ^ Скотт, Майкл (2006). Прагматика языков программирования . Сан-Франциско, Калифорния: Издательство Morgan Kaufmann. п. 140 . ISBN  9780126339512 .
  2. ^ Род Берстолл, «Кристофер Стрейчи — понимание языков программирования», Вычисления высшего порядка и символические вычисления 13:52 (2000)
  3. ^ Гарольд Абельсон и Джеральд Джей Сассман, Структура и интерпретация компьютерных программ , 2-е издание, раздел 1.3.4, сноска 64. Архивировано 9 марта 2015 г. на Wayback Machine.
  4. ^ Кристофер Стрейчи, « Фундаментальные концепции языков программирования » в книге «Высший порядок и символические вычисления» 13:11 (2000); хотя они были опубликованы в 2000 году, это конспекты лекций, которые Стрейчи прочитал в августе 1967 года.
  5. ^ Р. Дж. Попплстоун: Философия дизайна POP-2 . в: Д. Мичи: Машинный интеллект 3, Эдинбург, University Press, 1968.
  6. ^ Финкель, Р. Проектирование расширенного языка программирования , стр. 73
  7. ^ Норман Рэмси. «О ценности первого, второго и третьего сорта» . stackoverflow.com . Проверено 14 сентября 2013 г.
  8. ^ Перейти обратно: а б Паритош Шрофф, Скотт Ф. Смит. Вывод типа для первоклассных сообщений с функциями сопоставления
  9. ^ Бове, Ана; Дюбьер, Питер (2009). «Зависимые типы на работе» (PDF) . Языковая инженерия и тщательная разработка программного обеспечения . Конспекты лекций по информатике. 5520 : 57–99. дои : 10.1007/978-3-642-03153-3_2 . ISBN  978-3-642-03152-6 . Архивировано (PDF) из оригинала 2 апреля 2014 г. Проверено 8 июня 2015 г. (также в архиве )
Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 6D405E83BBDB3277E83490633D125D9B__1716376560
URL1:https://en.wikipedia.org/wiki/First-class_object
Заголовок, (Title) документа по адресу, URL1:
First-class citizen - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)