Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на модуль 1 ОП.docx
Скачиваний:
8
Добавлен:
24.11.2019
Размер:
926.17 Кб
Скачать

16) Регулювання періоду існування

Період існування оголошеного об'єкта визначається часом виконання блоку. Тому, якщо у блоці оголошений об'єкт, то він існує доти, доки виконується даний блок. У деяких мовах є засоби, які передбачають дострокове припинення існування об'єкта. Наприклад, посилання в мові Аdа можна знищити до закінчення виконання блока, скориставшись спеціальними засобами [3].

Шляхом опису двох об'єктів з однаковими позначеннями регулюється область дії об'єкта за допомогою мембранного ефекту. Водночас, якщо один об'єкт (охопного блока) стає недоступним, він не припиняє існування, оскільки відповідний блок і далі виконується.

Глобальне розрізнення видимості позначень (імен)

Іноді, в разі розгляду об'єктів, що мають одне і теж позначення, необхідно подолати мембранний ефект. Це дещо штучне бажання, але для його виконання у мовах програмування передбачається оператор глобального розрізнення видимості позначень (імен), який має позначення ::.

17) Суворо типізована мова

Мова програмування є суворо типізованою (restricted type language) , якщо виконуються такі умови:

  • кожний об'єкт у програмі пов’язується з багатьма значеннями одного типу через використання явного опису типу (виняток становить вираз);

  • тип об'єкта є синтаксичною властивістю і, тому його можна визначити, не виконуючи програми;

  • перетворення типу здійснюється шляхом перетворення значення одного типу в іншій, і це перетворення зазначається у програмі явно;

  • неявні перетворення шляхом інтерпретації подання значення одного типу значенням іншого типу заборонені.

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

Використання суворо типізованої мови веде до того, що помилки, яких припустилися при використанні об'єктів, унаслідок невідповідності їхніх типів, буде виявлено ще на етапі трансляції. Це, у свою чергу, веде до підвищення надійності та переносності програм, полегшує їх розуміння.

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

17, 18) Зведення типів

Через використання у програмах об'єктів, що мають різні типи значень, постає потреба в перетворенні значень типів. Для цього в мовах передбачається механізм зведення типів [22].

Зведення типів (coercion casting types) – це перетворення значень одного типу до значень іншого типу. Зведення може виконуватись як на наперед визначених, так і на визначуваних типах. Розрізняють явне і неявне зведення типів. У суворо типізованих мовах дозволене тільки явне зведення типів. Якщо у суворо типізованій мові, потрібне неявне зведення типів, то для цього використовуються механізми уникнення суворої типізації. При цьому вважається, що програміст свідомо використовує ці механізми, і вся відповідальність за помилки, що виникли, покладається на нього.