Гражданин первого сорта
-
Определение объектов первого и второго классов
- Объект первого класса поддерживает все операции, доступные другим объектам.
- Объект второго класса не может быть представлен переменной или выражением, кроме как в качестве параметра.
-
История и определение объектов первого и второго классов
- Кристофер Стрейчи ввел различие между объектами первого и второго классов в 1960-х.
- Робин Попплстоун предложил фундаментальные права для всех элементов.
- Рафаэль Финкель предложил определения ценностей второго и третьего классов, но они не получили широкого распространения.
-
Примеры объектов первого и второго классов
- Скалярные типы данных, такие как целые числа, обычно являются первоклассными.
- Массивы и строки часто не являются первоклассными, теряя размер при передаче в качестве параметров.
- В C указатели на массив не отражают его размер.
- В некоторых объектно-ориентированных языках классы являются первоклассными объектами.
- Функциональные языки часто содержат первоклассные типы данных.
- Немногие языки поддерживают первоклассные продолжения и метки ПЕРЕХОДА.
-
Функции как объекты первого класса
- Многие языки поддерживают передачу и возврат значений функций.
- Некоторые авторы считают, что функции должны иметь возможность создаваться во время выполнения для быть первоклассными.
- В Smalltalk функции являются первоклассными объектами.
-
Отражение в языках программирования
- Некоторые языки, такие как Java и PHP, имеют подсистему отражения для доступа к внутренним структурам реализации.
- В Lisp отражение является центральной особенностью языка.
- Отражение позволяет пользователям манипулировать языком как обычными объектами.
- Непроверенная модификация основной системы может подорвать оптимизацию производительности.
-
Ссылки
- Первоклассная функция
- Овеществление
- Записи
- Рекомендации
Полный текст статьи: