Безопасность пустоты - Void safety
Безопасность пустоты (также известный как нулевая безопасность) является гарантией в течение объектно-ориентированный язык программирования это не ссылки на объекты буду иметь ноль или же пустота значения.
В объектно-ориентированные языки, доступ к объектам осуществляется через Рекомендации (или, что то же самое, указатели ). Типичный звонок имеет форму:
x.f (а, ...)
куда ж обозначает операцию и Икс обозначает ссылку на некоторый объект. Однако во время выполнения ссылка может быть пустота (или же ноль). В таких случаях вызов, указанный выше, будет недействительный звонок, что приводит к времени выполнения исключение, часто приводя к ненормальное прекращение программы.
Безопасность Void - это статическая (во время компиляции) гарантия того, что никаких вызовов void никогда не возникнет.
История
В докладе 2009 года Тони Хоар проследил изобретение нулевой указатель к его дизайну Алгол W язык и назвал это "ошибкой":
Я называю это своей ошибкой на миллиард долларов. Это было изобретение нулевой ссылки в 1965 году. В то время я проектировал первую всеобъемлющую систему типов для ссылок на объектно-ориентированном языке (АЛГОЛ W ). Моя цель состояла в том, чтобы гарантировать, что любое использование ссылок должно быть абсолютно безопасным, с автоматической проверкой компилятором. Но я не мог устоять перед соблазном вставить пустую ссылку просто потому, что это было так легко реализовать. Это привело к бесчисленным ошибкам, уязвимостям и системным сбоям, которые, вероятно, причинили боль и ущерб на миллиард долларов за последние сорок лет.[1]
Бертран Мейер ввел термин «пустотная безопасность».[2]
В языках программирования
Первой попыткой гарантировать пустую безопасность была конструкция Язык самостоятельного программирования.
В Эйфелева язык является пустотным в соответствии с его ISO -ECMA стандарт; то механизм защиты от пустот реализуется в EiffelStudio начиная с версия 6.1 и используя современный синтаксис, начиная с версия 6.4.
В Spec # language, исследовательский язык от Microsoft Research, имеет понятие «не допускающего значения NULL типа», относящееся к аннулированной безопасности. F # язык, функционально-первый язык от Microsoft Research, работающий на платформе .NET, является недействительным, за исключением случаев взаимодействия с другими языками .NET.[3]
В C # language реализует нулевую проверку безопасности во время компиляции, начиная с версии 8. Однако, чтобы оставаться совместимой с более ранними версиями языка, эта функция предоставляется отдельно для каждого проекта или файла.
В Котлин язык, язык JVM и Apple Быстрый language по умолчанию использует нулевые безопасные типы.
Смотрите также
Рекомендации
- ^ МАШИНА. Хоар: Нулевые ссылки: ошибка в миллиард долларов, выдержка из выступления на QCon в Лондоне, 9–12 марта 2009 г., имеется онлайн
- ^ Бертран Мейер: Присоединенные типы и их применение к трем открытым проблемам объектно-ориентированного программирования, в ECOOP 2005 (Труды Европейской конференции по объектно-ориентированному программированию, Эдинбург, 25–29 июля 2005 г.), изд. Эндрю Блэк, Lecture Notes in Computer Science 3586, Springer Verlag, 2005, страницы 1-32, также доступны онлайн
- ^ Сайм, Дон. «Цитата недели:« Что может C #, чего не может F #? »"". Получено 7 сентября 2018.
Этот Информатика статья - это заглушка. Вы можете помочь Википедии расширяя это. |