Код
#статьи

Что такое типизация в программировании

Объясняем, что это такое, какая бывает типизация и на что она влияет.

 vlada_maestro / shutterstock

Если вы читали что-то о языках программирования, то наверняка не раз наткнулись на упоминание типизации. Что это такое и что об этом нужно знать, когда выбираешь язык программирования?

Типизация — это то, как язык распознаёт типы переменных. Типизация определяет, нужно ли вам писать тип, или язык «поймёт» его сам, и насколько свободно можно с типами работать: например, можно ли их менять.

А что такое типы?

В переменную можно записывать информацию, а тип переменной описывает, какая именно информация записана в переменной и что с ней можно делать.

Вот частые типы:

  • integer — целое число;
  • flow — число с десятичной частью;
  • string — строка текста;
  • bool — правда/неправда.

Типы бывают разные и немного различаются в разных языках.

Зачем нужно знать о типизации?

От типизации зависит, как вам работается с языком, как он себя ведёт. Если вы знаете, какие выгоды или проблемы приносят разные виды типизации, вам легче будет выбрать язык.

Какая бывает типизация?

Слабая и сильная

Если у языка сильная типизация (её ещё называют строгой), это значит, что он требует, чтобы разработчики строго следовали правилам работы с типами: если вы обозначили что-то как целое число, будьте добры с ним работать как с целым числом.

Языки со слабой типизацией «добрее»: если вы решите прибавить число к тексту, они не будут ругаться, а попробуют сделать то, что вы просите. Правда, результат может быть не совсем таким, как вы планировали.

Пример

В JavaScript, языке со слабой типизацией, можно сложить строку с числом, например вот так:

2 + “1

И получить строку «21».

А в Java так сделать нельзя: появится ошибка.

Статическая и динамическая

Статическая типизация значит, что типы определяются на этапе компиляции. То есть ошибки в типах будут видны ещё до того, как программа запустится.

В языках с динамической типизацией типы определяются во время выполнения программы.

Так, в динамически типизированном языке у одной и той же переменной могут быть разные типы в разных частях программы, а в статически типизированном, если вы задали переменной тип string, у неё будет только тип string.

Например, в Python (динамическая типизация) можно сделать вот так:

x = 5

а потом так:

x = “text”

И язык не будет возражать. В Java (статическая типизация) так сделать нельзя.

Явная и неявная

Ещё типизацию делят на явную и неявную. Когда типизация неявная, тип определяется сам в момент, когда вы записываете в переменную информацию.

Например, если в Python написать так:

b8

Он прочитает, что вы записали в переменную b целое число, и определит b как integer (int).

Явная типизация значит, что тип переменной написан. Например, в С переменная записывается вот так:

int b 8;

Само по себе разделение типизации на явную и неявную не столь важно: в статически типизированных языках она почти всегда явная, а в динамически — неявная.

Как типизация влияет на работу с языком?

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

Важно учитывать, что типизация — далеко не единственный фактор, который влияет на скорость. Нельзя сказать, что все языки со статической типизацией быстрее языков с динамической.

В каких языках какая типизация

Напоследок — типизации некоторых популярных языков:

  • Java — строгая статическая.
  • C# — строгая статическая.
  • С — слабая статическая.
  • Python — строгая динамическая.
  • PHP — слабая динамическая.
  • JavaScript — слабая динамическая.

Проверьте свой английский. Бесплатно ➞
Нескучные задания: small talk, поиск выдуманных слов — и не только. Подробный фидбэк от преподавателя + персональный план по повышению уровня.
Пройти тест
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована