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

Это сравнение возможностей систем типов и проверки типов на нескольких языках программирования .

Краткие определения

  • Система номинальных типов означает, что язык решает, являются ли типы совместимыми и / или эквивалентными, на основе явных объявлений и имен.
  • Система структурных типов означает, что язык решает, являются ли типы совместимыми и / или эквивалентными, на основе определения и характеристик типов.
  • Проверка типа определяет, проверяются ли типы и когда. Статическая проверка означает, что об ошибках типа сообщается на основе текста программы (исходного кода). Динамическая проверка означает, что сообщения об ошибках типа сообщаются на основе динамического поведения программы (во время выполнения).

Примечания

  1. ^ Небезопасные операции хорошо изолированы префиксом «Unchecked_».
  2. ^ с необязательным приведением динамического типа (см. динамическое приведение )
  3. ^ a b c d e f Это почти безопасно, небезопасные функции обычно не используются.
  4. ^ с необязательным динамическим типом (см. поиск динамического члена )
  5. ^ Необязательно, типизация может явно подразумеваться первой буквой идентификатора (известная как неявная типизация в сообществе Fortran).
  6. ^ динамическая проверка расширений типов, т.е. унаследованных типов
  7. ^ явный для статических типов
  8. ^ необязательно для формальных и виртуальных процедур

Ссылки

  1. ^ Руководство пользователя Aldor (PDF) . Aldor.org. 2002. С. 40, 61 . Проверено 3 июня 2021 года .
  2. ^ «Кристалл вывода типа» . Справочник по языку Crystal . Проверено 3 июня 2021 года .
  3. ^ "Система типов Дарт" . dart.dev . Проверено 8 апреля 2020 .
  4. ^ Спецификация языка программирования Go
  5. ^ Лё, Андрес. «Почему в Haskell нет записей со структурной типизацией?» . Переполнение стека . Архивировано 14 марта 2016 года . Проверено 13 апреля 2020 .
  6. ^ a b Кинг, Алексис (19.01.2020). «Нет, системы динамического типа не являются более открытыми по своей сути» . lexi-lambda.github.io . Архивировано 01 марта 2020 года . Проверено 13 апреля 2020 .
  7. ^ Шэн Лян, Гилад Браха. Динамическая загрузка классов в виртуальной машине Java . Том 33, выпуск 10 уведомлений ACM SIGPLAN, октябрь 1998 г.
  8. ^ https://docs.julialang.org/en/latest/manual/types/
  9. Developer.apple.com. Архивировано 10 июня 2009 г. на Wayback Machine.
  10. ^ «Запись · Причина» . reasonml.github.io . Архивировано 31 марта 2020 года . Проверено 13 апреля 2020 .
  11. ^ "Система структурного типа" , Википедия , 29 марта 2019 г. , получено 13 апреля 2020 г.
  12. ^ "rust-lang / rustc-dev-guide" . GitHub . Проверено 8 апреля 2020 .