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

1.3 Система типізації

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

Базові відомості. Присвоєння типу даних (типізація) надає значення набору бітів. Як правило, типи надаються або значенням в пам'яті, або об'єктам, таким, як змінні. Оскільки будь-яке значення в ком'ютері складається із множини бітів, апаратне забезпечення не розрізняє, навіть, адреса, коди операцій, символьні дані, цілі числа. Типи вказують програмам та програмістам на те, як слід обробляти дані. Системи типізації виконують наступні функції:

  • Безпечність — застосування типів даних дозволяє компілятору знаходити безсмістовний або невірний код. Наприклад, можна визначити вираз "Привіт!" + 3 як невірний, оскільки додавання (в загальному розумінні) рядка до цілого числа не має сенсу. Як зазначено нижче, сильна типізація безпечніше, однак, вона не обов'язково гарантує повну безпеку (докладніше, дивіться безпечна типізація).

  • Оптимізація — статична перевірка типів може повідомити додаткову інформацію компілятору. Наприклад, якщо тип даних вказує на те, що значення повинні вирівнюватись на границі кратні 4, компілятор зможе використати ефективніші машинні інструкції.

  • Документування — у виразнішіх системах типізації, типи даних можуть служити як вид документації, оскільки вони можуть описувати наміри розробника. Наприклад, довжина може бути підтипом цілих чисел, але, якщо розробник об'являє повертаємий функцією тип даних як довжину, а не просто ціле число, це може частково описувати значення функції.

  • Абстрагування (або модульність) — типи даних дозволяють розробнику розмірковувати про програми на вищому рівні, не звертаючи увагу на деталі реалізації на нижчому рівні. Наприклад, розробник може вважати рядок значенням, замість простого масиву байт. Або, типи можуть дозволити розробникам виражати інтерфейс між двома підсистемами. Це локалізує необхідні для взаємодії двох підсистем визначення та запобігає появі несумісностей під час взаємодії цих підсистем.

Перевірка типів. Процес перевірки та впровадження обмежень типів даних — перевірка типів — може відбуватись під час компіляції (статична типізація) або під час виконання програми (динамічна типізація). Якщо мова програмування вимагає точного зіставлення типів даних (тобто, дозволяючи лише такі операції автоматичного приведення типів, які не призводять до втрати інформації), така мова програмування має сильну типізацію, в іншому випадку, слабку.

Динамічна типізація. Мову програмування називаються динамічно типізованою, коли основна частина перевірок типів виконується під час виконання програми, а не під час компіляції. В динамічній типізації, значення мають типи, а змінні ні, тому змінна може містити значення будь-якого типу. Динамічно типізовані мови включають APLErlangGroovy,JavaScriptLispLuaMATLAB/GNU OctavePerl (для користувацьки типів, але не для вбудованих типів), PHPPrologPythonRubySmalltalkClojure та Tcl.

Лекція 2 Об'єктно-орієнтований підхід до програмування. Платформа. NET та її застосування для об'єктно-орієнтованого підходу до програмування

Все языки OOP, включая С++, основаны на трёх основополагающих концепциях, называемых инкапсуляцией, полиморфизмом и наследованием. Рассмотрим эти концепции.