Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

порно 2013 / Мулаточки 18+ / Вопрос 30 - Строгая и нестрогая типизация

.doc
Скачиваний:
35
Добавлен:
27.03.2016
Размер:
28.16 Кб
Скачать

Для начала рассмотрим основные различия между сильной и слабой типизацией. Прежде всего, слабая (нестрогая)типизация предполагает неявное вычисление/преобразование типов и/или adhocполиморфизм.Таким образом, тип переменной вычисляется на момент выполнения присвоения ей некого значения.

Специальный (или лат. adhoc) полиморфизм допускает специальную реализацию для данных каждого типа. Например, используемая в нашем примере функцией сортировки функция сравнения должна быть определена по-разному для чисел, кортежей, списков, т. е. она является специально полиморфной.

При сильной(строгой) типизации все типы известны заранее, и преобразование проходит по заранее установленным строгим правилам. Строгим, понятно, по отношению к правилам принятым при слабой типизации.

Сильную (строгую) типизацию, представляет язык C#. Если раньше в C++ мы могли написать:

MyObj* m_pObj = GenerateMyObj();

if(!m_pObj)

return -1;

То уже в C# такое преобразование типов не пройдёт, тут будь добр делать все явно:

MyObjm_pObj = GenerateMyObj();

if(m_pObj == null)

return -1;

В этой разновидности типизации для присвоения переменной некоторого значения мы должны сначала объявить эту переменную и задать ей тип. Т.е. основное отличие от слабой типизации в том, что на момент компиляции все типы должны быть известны. Так же, не может быть речи не о каком adhoc полиморфизме. Например, в случае функционального полиморфизма операция сложения, определённая для целочисленных типов, при использовании со строками просто вызовет ошибку компиляции.

У строгой типизации есть одно неоспоримое преимущество, такой код надёжнее. Однако и вслабой есть свои плюсы, язык с такой системой типов более гибкий. В компилируемых языках (С, С++) строгая типизация оказывается удобнее.

Тип данных - характеристика набора данных, которая определяет:

- диапазон возможных значений данных из набора;

- допустимые операции, которые можно выполнять над этими значениями;

- способ хранения этих значений в памяти.

Различают:

- простые типы данных: целые, действительные числа и др.;

- составные типы данных: массивы, файлы и др.