Питання 30 - сувора і нестрогая типізація

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

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

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

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

MyObj * m_pObj = GenerateMyObj ();

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

У цьому різновиді типізації для присвоєння змінної деякого значення ми повинні спочатку оголосити цю змінну і задати їй тип. Тобто основна відмінність від слабкої типізації в тому, що на момент компіляції всі типи повинні бути відомі. Так само, не може бути мови не про якийсь adhoc поліморфізм. Наприклад, в разі функціонального поліморфізму операція додавання, певна для цілочисельних типів, при використанні з рядками просто викличе помилку компіляції.

У суворої типізації є одна незаперечна перевага, такий код надійніше. Однак і вслабой є свої плюси, мова з такою системою типів більш гнучкий. У компільованих мовах (С, С ++) сувора типізація виявляється зручніше.

Тип даних - характеристика набору даних, яка визначає:

- діапазон можливих значень даних з набору;

- допустимі операції, які можна виконувати над цими значеннями;

- спосіб зберігання цих значень в пам'яті.

- прості типи даних: цілі, дійсні числа і ін .;

- складові типи даних: масиви, файли та ін.

Схожі статті