Типизация в языках программирования


Notice: Функция get_currentuserinfo с версии 4.5.0 считается устаревшей! Используйте wp_get_current_user(). in /hlds/web/u138079p19/code4life.ru/htdocs/wp-includes/functions.php on line 3840

Типизация языка программирования в некоторых случаях может оказаться достаточно важным фактором при его выборе. Не ради сравнения, а лишь только с целью показать различия языковых возможностей стоит сказать: в языке lua намного проще выполнить некоторые действия, нежели на C++. На первый взгляд достаточно глупый пример, но с другой стороны, где лучше описывать логику на C++ или на lua? Риторический вопрос на который, каждый сам находит ответ))

Типизация — это свойство языка программирования различать типы данных.

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

2 + «1»

Что получится? А полученный результат будет зависеть от того, как в данном случае типизация конкретного языка программирования. К примеру s4g скажет что будет 3, а C++ скажет что это ошибка, и оба будут правы!

Типизация бывает двух видов: статическая и динамическая.

Статическая типизация (static)

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

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

  • многие ошибки с типами можно обнаружить на этапе компиляции
  • меньше шансов совершить ошибку с типами
  • исполнение языка со статической типизацией в большинстве случаев быстрее нежели с динамической
  • в IDE (интегрированная среда разработки) могут быть средства автодополнения, более релевантные, однако здесь двояко
  • вики утверждает что чем больше проект тем эффективнее использование статической типизации, соглашусь))

Минусы статической типизации:

  • многословность, для некоторых задач чрезмерна излишняя, однако может компенсироваться средствами обобщенного программирования, как к примеру шаблоны (templates) в С++

Динамическая типизация (dynamic)

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

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

  • лаконичность, не надо указывать типы и следить за ними, особенно полезно когда необходимо иметь переменную в которую будут записаны промежуточные данные

Минусы динамической типизации:

  • легко допустить ошибку связанную с типизацией
  • если откинуть грамотный стандарт оформления кода, то в ООП могут возникнуть трудности определения принадлежности к определенному классу
  • возможны сложности с автодополнение в IDE, особенно с классами, ибо что куда относится знает (возможно) только программист
  • динамическая типизация требует дополнительных внутренних действия для осуществления этого механизма, поэтому скорость исполнения такого кода, в большинстве случаев, будет ниже чем у статического

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

Слабая типизация (strong)

свойство типизации языка программирования, которое позволяет преобразовывать данные одного типа в другие (отличные от исходного) типы. Но это не значит что одна созданная с один типом может изменить тип! Это значит что новая переменная может принять данные другого типа. обычно подразумевается неявное преобразование.

Плюсы слабой типизации:

  • возможность менять типы переменных в выражениях
  • краткость записи
  • возможность сосредоточения на задаче, а не на типах

Минусы слабой типизации:

  • потеря точности при преобразовании
  • возможно допустить ошибку при преобразовании типов

Сильная типизация (weak)

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

Плюсы сильной типизации:

  • надежность типов
  • ручное преобразование позволит контролировать все процессы преобразования

Минусы сильной типизации:

  • многословность

Эти два понятия допустимы к обоим видам типизации, то есть может быть сильная статическая и сильная динамическая типизации, могут быть слабая статическая и слабая динамические типизации))

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


В итоге, что выбирать решает каждый сам, исходя из конкретной задачи, поставленной цели либо личных предпочтений))

Поделиться:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*