Добавить в корзинуПозвонить
Найти в Дзене
Road to the programming

Типизация в программировании или как выбрать свой язык

Программирование – непростая дисциплина. Теги и структуры данных, алгоритмы и программы – и все это пишется на каком-то языке. А на каком? Каждый язык имеет свои характеристики, одна из них – типизация.
Под типизацией в программировании понимается то, как язык распознает переменные. Она определяет, нужно ли машине указывать, как воспринимать тот или иной тег, и язык сам поймет, что нужно делать и
Оглавление

Программирование – непростая дисциплина. Теги и структуры данных, алгоритмы и программы – и все это пишется на каком-то языке. А на каком? Каждый язык имеет свои характеристики, одна из них – типизация.

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

Как понимать тип

Каждая переменная, независимо от языка, – это источник информации, а тип переменной определяет, какая информация может быть записана в ней: что или как с ней можно делать.

Виды типизации

Все языки делятся на типы по четырем признакам:

  • есть ли вообще типизация или язык бестиповый;
  • статистическая она или динамическая;
  • сильная или слабая;
  • явная или неявная.

Пойдемте посмотрим в чем отличия каждого и какие преимущества дает та или иная типизация.

Сначала о бестиповой типизации

Даже если нет типа, язык имеет бестиповую типизацию. Сложно? Сейчас разберемся.

Бестиповая типизация характерна для низкоуровневых или эзотерических языков. Например, Fort или Brainfuck. Главная особенность таких языков – в них все сущности выражаются в последовательности бит с разной длиной.

Преимущества использования бестиповых языков:

  • повышенная эффективность кода, при условии, что все сделано правильно;
  • прозрачность. При должном знании языка новый разработчик быстро разберется, что к чему, и зачем нужен этот или тот кусок кода.

Недостатки:

  • слабая абстракция. Это отягчает работу со сложными типами данных.

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

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

-2

Преимущества статической типизации :

  • проверки выполняются один раз. Если ошибки есть, вы о них узнаете сразу на этапе компиляции;
  • скорость выполнения. Языки со статистической типизацией работают быстрее;
  • при поддержке интегрированной среды разработки – сроки разработки сокращаются.

Плюсы динамической типизации:

  • удобно описывать алгоритмы обобщенного типа. Например, легко писать сортировку массивов, она может работать с разными типами данных;
  • легкое освоение. Динамические языки проще учить.

В некоторых статических языках можно использовать динамику:

  • C# – есть псевдотип dynamic;
  • Delphi – использует динамику посредством variant;
  • F# – может имитировать динамическую типизацию через оператора «?».

Примерно так же в динамически типизированных языках можно работать со статикой. Это позволяют делать Common Lisp и Perl.

О слабой и сильной типизации

Языки с сильной типизацией заставляют программиста отказаться от смешивания разных сущностей в одном выражении, а со слабой – наоборот способствуют таким действиям.

Преимущества strong typing:

  • скорость – исключаются скрытые преобразования, что позволяет ускорять отдельные участки кода, которые потенциально могут быть медленными;
  • определенность – при ручных преобразованиях, точно ясно, что и во что вы преобразовываете, исключаются ошибки;
  • надежность – при запуске вы получите либо ошибку компиляции, либо исключение действия, а не неправильный алгоритм.

Преимущества weak typing:

  • краткие записи;
  • удобство работы со смешанными выражениями;
  • можно не следить за типизацией, а сосредоточиться на решении задачи.

Явная и неявная типизация

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

P.S. Лучше и проще всего заходить в программирование с языка Python. Он востребованный, учит дисциплине и не очень сложный – так говорят опытные программисты.