Статическая Типизация

Стати́ческая типиза́ция — приём, широко используемый в языках программирования, при котором переменная, параметр подпрограммы, возвращаемое значение функции связывается с типом в момент объявления и тип не может быть изменён позже (переменная или параметр будут принимать, а функция — возвращать значения только этого типа).

Примеры статически типизированных языков — Ада, C, C++, C#, D, Java, ML, Паскаль, Solidity, Go, Fortran. Противоположный приём — динамическая типизация.

Некоторые статически типизированные языки позже получили возможность также использовать динамическую типизацию при помощи специальных подсистем. Например, Variant в Delphi, пакеты в AliceML, Data.Dynamic в Haskell.

Статическая типизация даёт самый простой машинный код, поэтому она удобна для языков, дающих исполняемые файлы операционных систем или JIT-компилируемые промежуточные коды. Многие ошибки исключаются уже на стадии компиляции, поэтому статическая типизация хороша для написания сложного, но быстрого кода. В интегрированной среде разработки осуществимо более релевантное автодополнение, особенно если типизация — сильная статическая: множество вариантов можно отбросить как не подходящие по типу. Чем больше и сложнее проект, тем большее преимущество даёт статическая типизация, и наоборот.

В то же время, статически типизированные языки с недостаточно проработанной математической базой оказываются довольно многословными: каждый раз надо указывать, какой тип будет иметь переменная. В некоторых языках есть автоматическое выведение типа, однако оно может привести к трудноуловимым ошибкам. Это не верно для языков семейства ML, основанных на так называемой «главной типизации» (англ. principal typing scheme), которая одновременно автоматически выводит наиболее общий тип всякого выражения и строго проверяет согласование типов зависимостей. Это придаёт языку выразительность динамически типизируемых, при этом обеспечивает лучшее быстродействие и типобезопасность.

Примечания

Литература

  • Pierce, Benjamin C. Types and Programming Languages. — MIT Press, 2002. — ISBN 0-262-16209-1. Перевод на русский язык: Пирс Б. Типы в языках программирования. — Добросвет, 2012. — 680 с. — ISBN 978-5-7913-0082-9.

Tags:

C SharpDlangFortranGoJavaMLSolidityАда (язык программирования)Динамическая типизацияЗначениеПаскаль (язык программирования)Переменная (программирование)Си (язык программирования)Си плюс плюсТип данныхЯзык программирования

🔥 Trending searches on Wiki Русский:

Задача трёх тел (телесериал, 2024)Белорусская операция (1944)ТалионУзбекистанХарламов, ГарикТеракт на ДубровкеОктябрьская революцияТ-34Х-59Наполеон IСобчак, Ксения АнатольевнаСталин, Василий ИосифовичКабаева, Алина МаратовнаСписок иностранных агентов (Россия)Один день Ивана Денисовича100 самых влиятельных людей в истории (книга)Космодемьянская, Зоя АнатольевнаТер-Аванесов, Александр БорисовичTwitchАндерсен, Ханс КристианРимские цифрыOzonАбьюзивные отношенияНовости (Дзен)Мёртвые душиВьетнамТолстой, Лев НиколаевичМонголияБедные-несчастные (фильм)TikTokАлексей МихайловичЛига чемпионов УЕФАНазарбаев, Нурсултан АбишевичТокугава ИэясуТеракт в «Крокус Сити Холле»МухаммедКёльнский соборPornhubТелефонные коды странЖуравлёв, Алексей АлександровичДюна (роман)YouTube VancedДжигурда, Никита БорисовичБача-базиВайнштейн, ХарвиАфганская война (1979—1989)ТурцияГолодные игры (фильм)Битва за МосквуСто лет тому вперёдСпециальная военная операцияMercedes-BenzЧернобыль (мини-сериал)Великая Китайская стенаЯкутияQR-кодТиньков, Олег ЮрьевичВторжение России на Украину (с 2022)АвитоМанчестер ЮнайтедВоинские звания и знаки различия в Вооружённых силах Российской ФедерацииXXXTentacionМехмед IIПерестройкаКиевская РусьОкуджава, Булат ШалвовичШахматыФомин, Александр Васильевич (генерал)ОргазмГитлер, АдольфШекспир, УильямДжентльмены (сериал)PythonСписок серийных убийц по количеству жертвЛенин, Владимир ИльичТарантино, КвентинТуркменистанКатехизис еврея в СССР🡆 More