Jump to content

Сравнение языков программирования по системе типов

(Перенаправлено из Сравнение систем типов )

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

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

  • Система номинальных типов означает, что язык решает, являются ли типы совместимыми и/или эквивалентными, на основе явных объявлений и имен.
  • Система структурных типов означает, что язык решает, являются ли типы совместимыми и/или эквивалентными, на основе определения и характеристик типов.
  • Проверка типов определяет, проверяются ли типы и когда это происходит. Статическая проверка означает, что сообщения об ошибках типа сообщаются на основе текста программы (исходного кода). Динамическая проверка означает, что сообщения об ошибках типа сообщаются на основе динамического поведения программы (во время выполнения).
Язык Тип безопасности Введите выражение Совместимость типов и эквивалентность Проверка типа
А+ сильный динамичный
ЭкшнСкрипт 3.0 сильный неявный с необязательной явной типизацией статический
АВС сильный
АБАП сильный номинальный статический
Есть сильный [ТС 1] явный номинальный статический
приглашенный сильный номинальный статический
Возраст слабый частично неявный [1] статический
Алеф сильный статический
АЛГОЛ 58 сильный явный статический
АЛГОЛ 60 сильный явный статический
АЛГОЛ 68 сильный явный структурный статические и тегированные союзы
АЛГОЛ W сильный статический
Алиса сильный неявный с необязательным явным статический
Альма-0 статический
AmbientTalk сильный динамичный
АМОС БЕЙСИК статический
АнгелСкрипт сильный статический
АПЛ сильный динамичный
AppleScript слабый динамичный
Дуга динамичный
Автогорячая клавиша бестиповый
АвтоЛИСП динамичный
Атчи ПХ сильный явный номинальный статический
АВК слабый скрытый динамичный
Б бестиповый
Балерина сильный структурный статический
Баш ? ? ? ?
БАЗОВЫЙ сильный явный номинальный статический
БКПЛ бестиповый
БинШелл сильный номинальный динамичный
БЛАЖЕНСТВО бестиповый
Бу сильный неявный с необязательной явной типизацией статический с дополнительной динамической типизацией
Братан сильный неявный с необязательной явной типизацией номинальный статический
С слабый явный номинальный статический
С-- слабый статический
С++ ( ИСО/МЭК 14882 ) слабый явный с необязательной неявной типизацией (с использованием auto в C++11) номинальный статический [ТС 2]
С* слабый явный статический
С# слабый [ТС 3] неявный с необязательной явной типизацией номинальный статический [ТС 4]
оболочка C ? ? ? ?
Камл сильный неявный с необязательной явной типизацией статический
Сесил динамический с дополнительной статической типизацией
Чистый сильный скрытый статический
Цейлон сильный статический
Часовня неявный с необязательной явной типизацией статический
ХОЛОД сильный статический
ЧакК сильный
Силк слабый явный статический
Клэр сильный неявный с необязательной явной типизацией динамический с дополнительной статической типизацией
Чистый сильный ?
Кложур сильный неявный с необязательной явной типизацией динамичный
КЛУ сильный
КОБОЛ сильный явный номинальный статический
Кобра сильный явный с необязательной неявной типизацией статический с дополнительной динамической типизацией
Кофескрипт скрытый динамичный
КолдФьюжн (CFML) сильный скрытый динамичный
КОМАЛ сильный
Общий Лисп сильный неявный с необязательной явной типизацией структурный для неявной типизации, номинальный для явной типизации динамический, некоторая статическая проверка (в зависимости от реализации)
Компонентный Паскаль сильный статический
Прохладный сильный явный статический
КОРАЛЛ сильный статический
Кристалл неявный с необязательной явной типизацией [2] структурный статический
клинопись явный статический
Завиток сильный номинальный
Карри сильный неявный с необязательной явной типизацией статический
Китон сильный неявный с необязательной явной типизацией номинальный (типы расширения) и структурный (Python) динамический с дополнительной статической типизацией
Д слабый [ТС 3] явный номинальный статический
Дарт сильный [3] постепенное набор текста номинальный статический с дополнительной динамической типизацией
Дилан сильный динамичный
Эйфелева сильный номинальный статический
Эликсир сильный скрытый динамичный
Эрланг сильный скрытый динамичный
Эйфория сильный явный, неявный с объектами номинальный статический, динамический с объектами
Ф# сильный скрытый номинальный статический
Форт бестиповый
Фортран сильный явный [ТС 5] номинальный статический
Креветки сильный явный номинальный
GLBasic сильный явный. Неявные декларации доступны через опции проекта. номинальный статический
Идти [4] сильный частично неявный ( вывод локального типа ) структурный статический
Гоша сильный частично неявный ( вывод локального типа ) номинальные (подклассы) и структурные статический
классный сильный неявный с необязательной явной типизацией динамический с дополнительной статической типизацией
Гавань сильный неявный с необязательной явной типизацией динамичный
Хаскелл сильный неявный с необязательной явной типизацией номинальный [5] [6] статический
Смешанный сильный неявный с необязательной явной типизацией номинальные (подклассы) и структурные статический с дополнительной динамической типизацией
Этот сильный скрытый динамичный
икона сильный скрытый динамичный
ИСЛИСП сильный динамичный
Дж сильный динамичный
Ява сильный [7] явный номинальный статический
JavaScript слабый скрытый динамичный
Юлия сильный неявный с необязательной явной типизацией [8] структурный для неявной типизации, номинальный для явной типизации динамичный
Радость сильный динамичный
Котлин сильный частично неявный (вывод локального типа) номинальный статический
ЛабВЬЮ сильный
Два сильный скрытый динамичный
Клен сильный динамичный
Меркурий сильный статический
Математика сильный динамичный
MATLAB M-код сильный динамичный
Модуль-2 слабый [ТС 3] явный номинальный статический
Модуль-3 слабый [ТС 3] явный структурный статический
Свинка (М) бестиповый
Ничего динамичный
Немерль сильный скрытый номинальный статический
Сетевой логотип сильный скрытый динамичный
НетРекс сильный неявный с необязательным явным динамический с дополнительной статической типизацией
новыйЛисп скрытый динамичный
НЬЮП сильный статический
Новояз динамичный
НьютонСкрипт динамичный
Ниал динамичный
Nim сильный частично неявный (вывод типа) статический
Никель сильный
Нет динамичный
Оберон сильный явный номинальный статический и частично динамический [ТС 6]
Цель-C сильный явный номинальный динамический с дополнительной статической типизацией [9]
OCaml сильный неявный с необязательной явной типизацией номинал для записей, [10] структурный для объектов [6] [11] статический
Объектный Паскаль сильный явный номинальный статический
Опа сильный неявный с необязательной явной типизацией структурный статический
Кислород слабый скрытый статический
Оз-Моцарт сильный скрытый структурный динамичный
Паскаль слабый [ТС 3] явный номинальный статический
Перл 5 скрытый динамичный
PHP слабый неявный с необязательной явной типизацией номинальный динамичный
Плюс сильный явный структурный статический, динамический (опционально)
Пролог динамичный
Чистый динамичный
Чистый скрипт сильный неявный с необязательной явной типизацией номинальный статический
Питон сильный неявный (с необязательной явной типизацией, начиная с версии 3.5) номинальный динамичный
Р скрытый динамичный
Раку частично неявный [ТС 7] динамический с дополнительной статической типизацией
РЕБОЛ сильный скрытый динамичный
Рекс бестиповый -, неявные числа статические+динамические числа
РПГ слабый статический
Руби сильный скрытый динамичный
Ржавчина сильный явный с необязательной неявной типизацией [12] в основном номинальный статический
С динамичный
Сленг сильный скрытый динамичный
Скала сильный частично неявный (вывод локального типа) номинальные (подклассы) и структурные статический
Схема сильный скрытый динамический ( скрытый )
Сид7 сильный явный номинальный статический
начало сильный статический [ТС 8]
Смолток сильный скрытый динамичный
Быстрый сильный частично неявный (вывод локального типа) номинальные (подклассы) и структурные статический
Стандартный ML сильный неявный с необязательной явной типизацией структурный статический
Ткл динамичный
Машинопись ? необязательный структурный статический
Юникон сильный скрытый динамичный
Визуальный Бейсик сильный неявный с необязательной явной типизацией номинальный статический
Визуальный Бейсик .NET слабый [ТС 3] явный статический
Визуальный Пролог сильный частично неявный номинальный статический
Вольфрам Язык сильный динамичный
Windows PowerShell сильный скрытый динамичный
XL сильный номинальный статический
Содзё сильный явный номинальный статический
XPath / XQuery сильный частично неявный номинальный динамический с дополнительной статической типизацией
Язык Тип безопасности Введите выражение Совместимость типов и эквивалентность Проверка типа

Примечания

[ редактировать ]
  1. ^ Небезопасные операции хорошо изолируются префиксом «Unchecked_».
  2. ^ с необязательным динамическим приведением типов (см. динамическое приведение типов )
  3. ^ Jump up to: а б с д и ж Это почти безопасно, небезопасные функции обычно не используются.
  4. ^ с необязательным динамическим типом (см. динамический поиск членов )
  5. ^ При желании типизация может явно подразумеваться по первой букве идентификатора (в сообществе Fortran это называется неявной типизацией).
  6. ^ динамическая проверка расширений типов, т.е. унаследованных типов.
  7. ^ явно для статических типов
  8. ^ необязательно для формальных и виртуальных процедур
  1. ^ Руководство пользователя Алдора (PDF) . Алдор.орг. 2002. С. 40, 61 . Проверено 3 июня 2021 г.
  2. ^ «Кристалл определения типа» . Справочник по кристаллическому языку . Проверено 3 июня 2021 г.
  3. ^ «Система типов Дарт» . dart.dev . Проверено 8 апреля 2020 г.
  4. ^ Спецификация языка программирования Go
  5. ^ Лё, Андрес. «Почему в Haskell нет записей со структурной типизацией?» . Переполнение стека . Архивировано из оригинала 14 марта 2016 г. Проверено 13 апреля 2020 г.
  6. ^ Jump up to: а б Кинг, Алексис (19 января 2020 г.). «Нет, системы динамических типов по своей сути не более открыты» . lexi-lambda.github.io . Архивировано из оригинала 01 марта 2020 г. Проверено 13 апреля 2020 г.
  7. ^ Шэн Лян, Гилад Брача. Динамическая загрузка классов в виртуальной машине Java . Том 33, выпуск 10 уведомлений ACM SIGPLAN, октябрь 1998 г.
  8. ^ «Типы · Юлийский язык» . Архивировано из оригинала 24 июля 2018 г. Проверено 24 июля 2018 г.
  9. ^ Developer.apple.com. Архивировано 10 июня 2009 г., на Wayback Machine.
  10. ^ «Запись · Причина» . причинаml.github.io . Архивировано из оригинала 31 марта 2020 г. Проверено 13 апреля 2020 г.
  11. ^ «Система структурных типов» , Arc.Ask3.Ru , 29 марта 2019 г. , получено 13 апреля 2020 г.
  12. ^ "rust-lang/rustc-dev-guide" . Гитхаб . Проверено 8 апреля 2020 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 4ac3448661805ba23d8e2cc383a96157__1721674980
URL1:https://arc.ask3.ru/arc/aa/4a/57/4ac3448661805ba23d8e2cc383a96157.html
Заголовок, (Title) документа по адресу, URL1:
Comparison of programming languages by type system - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)