Сильная и слабая типизация: различия между версиями
[непроверенная версия] | [непроверенная версия] |
Содержимое удалено Содержимое добавлено
м →Определение «сильной» и «слабой» типизации: викификация |
Изменил "крахов" на "сбоев". |
||
Строка 26:
«Сильной» и «слабой» типизацией называется продукт множества решений, принятых при разработке языка. Более точно языки характеризуются наличием или отсутствием {{iw|типобезопасность|типобезопасности|en|type safety}}, [[Безопасность доступа к памяти|безопасностью памяти]] и [[Система типов#Type checking|проверки согласования типов]], [[статическая типизация|статической]] или [[динамическая типизация|динамической]].
Например, яркими примерами слабой системы типов являются те, что лежат в основе языков [[Си (язык программирования)|Си]] и [[C++]]. Их характерным атрибутом является понятие [[Приведение типа|операции приведения типов]]. Эти операции поддерживаются на уровне компилятора и часто вызываются неявно. Операция <code>reinterpret_cast</code> в С++ позволяет представить элемент данных любого типа как принадлежащий любому другому типу при условии равенства длины их низкоуровневой реализации (битового представления) и изменить его {{iw|Состояние (информатика)|состояние|en|State (computer science)}} образом, недопустимым для исходного типа. Неосторожное использование таких операций нередко является источником {{iw|Крах программного обеспечения|
При этом [[Система типов Хиндли — Милнера]] обеспечивает чрезвычайно высокий показатель [[повторное использование кода|повторного использования кода]] за счёт [[параметрический полиморфизм|параметрического полиморфизма]]. Сильная, но не полиморфная система типов может затруднить решение многих алгоритмических задач, как это было отмечено в отношении языка [[Pascal]]<ref>[http://www.cs.virginia.edu/~cs655/readings/bwk-on-pascal.html [[Керниган, Брайан|Brian Kernighan]]: ''Why Pascal is not my favourite language'']</ref>.
|