Сильная и слабая типизация
характеристика системы типов языка программирования, отражающая ограничения на приведение типов при присваиваниях и операциях / Материал из Википедии — свободной encyclopedia
Сильная и слабая типизация или строгая и нестрогая типизация[1][2][3] — характеристика системы типов языка программирования, отражающая существенные ограничения на приведение типов при присваиваниях и операциях. Языки, в которых такие ограничения менее строгие, называют — слабо типизированными.
Эту страницу предлагается переименовать в «Сильная типизация». |
Впервые понятие введено в 1974 году Лисков и Зиллесом в работе по Клу, назвавшими сильно типизированными языки, в которых «при передаче объекта из вызывающей функции в вызываемую тип этого объекта должен быть совместим с типом, определённым в вызываемой функции»[4]. В контексте такого определения «в сильно типизированном языке всякая ячейка данных будет иметь уникальный тип и всякий процесс будет провозглашать свои требования по взаимосвязи в терминах этих типов»[5]. Другое определение дал Лука Карделли[en], связавший сильную типизацию со своей концепцией полнотипового программирования[6]: система типов называется «сильной», если она исключает возможность возникновения ошибки согласования типов времени выполнения, иными словами, обеспечивающей типобезопасность (отсутствие неконтролируемых ошибок приведения типов времени выполнения) на уровне языка[7].
Выбор подхода к ограничениям при преобразованиях типов при разработке языка программирования — продукт множества решений и компромиссов, и о сильной или слабой типизации обычно говорят лишь в сравнении между разными системами типов и не всегда в формальном смысле. Более точно языки характеризуются наличием или отсутствием безопасности согласования типов и безопасности доступа к памяти, а также характерным временем осуществления такого контроля (в статике или в динамике).