Из Википедии, свободной энциклопедии
Перейти к навигации Перейти к поиску

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

В объектно-ориентированных языках доступ к объектам осуществляется через ссылки (или, что то же самое, указатели ). Типичный звонок имеет форму:

xf (а, ...)

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

Безопасность Void - это статическая (во время компиляции) гарантия того, что никаких вызовов void никогда не возникнет.

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

В своем выступлении в 2009 году Тони Хоар проследил изобретение нулевого указателя до своего дизайна языка ALGOL W и назвал это «ошибкой»:

Я называю это своей ошибкой на миллиард долларов. Это было изобретение нулевой ссылки в 1965 году. В то время я проектировал первую всеобъемлющую систему типов для ссылок на объектно-ориентированном языке (АЛГОЛ W). Моя цель состояла в том, чтобы гарантировать, что любое использование ссылок должно быть абсолютно безопасным, с автоматической проверкой компилятором. Но я не мог устоять перед соблазном вставить пустую ссылку просто потому, что это было так легко реализовать. Это привело к бесчисленным ошибкам, уязвимостям и системным сбоям, которые, вероятно, причинили боль и ущерб на миллиард долларов за последние сорок лет. [1]

Бертран Мейер ввел термин «пустотная безопасность». [2]

На языках программирования [ править ]

Первой попыткой гарантировать аннулированную безопасность была разработка языка самопрограммирования .

В соответствии со стандартом ISO - ECMA язык Eiffel защищен от недействительности ; механизм защиты от аннулирования реализован в EiffelStudio начиная с версии 6.1 и с использованием современного синтаксиса, начиная с версии 6.4 .

Язык Spec # , исследовательский язык от Microsoft Research, имеет понятие "не допускающего значения NULL типа", относящееся к недействительной безопасности. Язык F # , функционально-первый язык от Microsoft Research, работающий на платформе .NET, является недействительным, за исключением случаев взаимодействия с другими языками .NET. [3]

В C # языке реализует во время компиляции проверка безопасности нуля начиная с версией 8. Однако, чтобы остаться совместимой с передними версиями языка, функция неавтоматическая для каждого проекта или каждый файл. [4]

Другие языки , на которых использование нуль-безопасные типы по умолчанию включают Котлин , [5] язык JVM , разработанная JetBrains , Google, Dart [6] и от Apple Swift .

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

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

  1. CAR Hoare: Null References: The Billion Dollar Mistake , выдержка из выступления на QCon в Лондоне, 9–12 марта 2009 г., доступно в Интернете.
  2. ^ Бертран Мейер: Присоединенные типы и их применение к трем открытым проблемам объектно-ориентированного программирования , в ECOOP 2005 (Труды Европейской конференции по объектно-ориентированному программированию, Эдинбург, 25–29 июля 2005 г.) , изд. Эндрю Блэк, Lecture Notes in Computer Science 3586, Springer Verlag, 2005, страницы 1-32, также доступно в Интернете
  3. ^ Сайм, Дон. «Цитата недели:« Что может C #, чего не может F #? » " " . Проверено 7 сентября 2018 года .
  4. ^ «Обнуляемые ссылочные типы | Документы Microsoft» . Проверено 12 марта 2021 года .
  5. ^ "Нулевая безопасность - Котлин" . Проверено 12 марта 2021 года .
  6. ^ "Звук нулевой безопасности | Дротик" . Проверено 12 марта 2021 года .