Система типізації (англ. type system) в програмуванні визначає множину припустимих значень даних та множину операцій над даними. Тип даних означає множину значень, які мають певне спільне значення або спосіб застосування (хоча, деякі типи, такі як абстрактні або функційні типи, можуть і не представляти значень у програмі). Системи типізації різних мов програмування істотно різняться одна від одної. Найістотніші відмінності полягають у реалізаціях компіляції та поведінки під час виконання програми.
Базові відомості
Присвоєння типу даних (типізація) надає значення набору бітів.
Зазвичай типи надаються або значенням у пам'яті, або об'єктам, таким, як змінні. Оскільки будь-яке значення в комп'ютері складається з множини бітів, апаратне забезпечення не розрізняє навіть адресу, коди операцій, символьні дані, цілі числа. Типи вказують програмам та програмістам на те, як слід обробляти дані.
Системи типізації виконують такі функції:
- Безпечність — застосування типів даних дозволяє компілятору знаходити беззмістовний або неправильний код. Наприклад, можна визначити вираз "Привіт!" + 3 як неправильний, оскільки додавання (у загальному розумінні) рядка до цілого числа не має сенсу. Як зазначено нижче, сильна типізація безпечніша, однак вона не обов'язково гарантує повну безпеку (докладніше дивіться Типобезпечність).
- Оптимізація — статичне перевіряння типів може повідомити додаткову інформацію компілятору. Наприклад, якщо тип даних указує на те, що значення повинні вирівнюватися на границі, кратні 4, компілятор зможе використати ефективніші машинні інструкції.
- Документування — у виразніших системах типізації, типи даних можуть слугувати як вид документації, оскільки вони можуть описувати наміри розробника. Наприклад, довжина може бути підтипом цілих чисел, але, якщо розробник оголошує тип результату функції як довжину, а не просто ціле число, це може частково описувати значення функції.
- Абстрагування (або модульність) — типи даних дозволяють розробникові розмірковувати про програми на вищому рівні, не звертаючи увагу на дрібниці реалізації на нижчому рівні. Наприклад, розробник може вважати рядок значенням, замість простого масиву байт. Або, типи можуть дозволити розробникам виражати інтерфейс між двома підсистемами. Це локалізує потрібні для взаємодії двох підсистем визначення та запобігає появі несумісностей під час взаємодії цих підсистем.
Перевіряння типів
Процес верифікації та впровадження обмежень типів даних — перевіряння типів — може відбуватися під час компіляції (статична типізація) або під час виконання програми (динамічна типізація). Якщо мова програмування вимагає точного зіставлення типів даних (тобто, дозволяючи лише такі операції автоматичного приведення типів, які не призводять до втрати інформації), така мова програмування має сильну типізацію, в іншому разі — слабку.
Статична типізація
Статична типізація — механізм, що дозволяє на етапі написання програми визначити через тип об'єкта програми множину припустимих значень та множину операцій над об'єктом так, що порушення вимог типізації призводитиме до попередження або помилки на етапі трансляції програми, а не на етапі її виконання. Тип об'єкта, встановлений під час написання програми, не може бути змінений на етапі виконання програми, але значення, яке містить об'єкт, може бути перетворене (приведене) до іншого типу.
Механізм широко використовується в окремих мовах програмування (званих як мови зі статичною типізацією) і дозволяє зменшити число помилок під час написання програми, але також вимагає явного перетворення типу в разі потреби. Приклади статично типізованих мов — Ada, , Pascal.
Динамічна типізація
Мову програмування називають динамічно типізованою, коли основна частина перевірок типів виконується під час виконання програми, а не під час компіляції. У динамічній типізації, значення мають типи, а змінні — ні, тому змінна може містити значення будь-якого типу. До динамічно типізованих мов входять: APL, Erlang, Groovy, JavaScript, LISP, Lua, MATLAB/GNU Octave, Perl (для користувацьких типів, але не для вбудованих типів), PHP, Пролог, Python, Ruby, Smalltalk, Clojure та Tcl.
Приклади
В окремих мовах зі статичною типізацією може мати місце таке:
3 + 4 = 7 (цілі числа) "3" + "4" = "34" (рядки) 3 + "4" -> невідповідність типів операндів операції, помилка
В окремих мовах з динамічною типізацією може мати місце таке:
3 + 4 -> 7 або 34 залежно від змісту
Див. також
Посилання
- Константи, змінні. Типи даних
- Бенджамин Пирс. Типы в языках программирования = Types and programming languages. — 2010.
Це незавершена стаття про інформаційні технології. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Sistema tipizaciyi angl type system v programuvanni viznachaye mnozhinu pripustimih znachen danih ta mnozhinu operacij nad danimi Tip danih oznachaye mnozhinu znachen yaki mayut pevne spilne znachennya abo sposib zastosuvannya hocha deyaki tipi taki yak abstraktni abo funkcijni tipi mozhut i ne predstavlyati znachen u programi Sistemi tipizaciyi riznih mov programuvannya istotno riznyatsya odna vid odnoyi Najistotnishi vidminnosti polyagayut u realizaciyah kompilyaciyi ta povedinki pid chas vikonannya programi Bazovi vidomostiPrisvoyennya tipu danih tipizaciya nadaye znachennya naboru bitiv Zazvichaj tipi nadayutsya abo znachennyam u pam yati abo ob yektam takim yak zminni Oskilki bud yake znachennya v komp yuteri skladayetsya z mnozhini bitiv aparatne zabezpechennya ne rozriznyaye navit adresu kodi operacij simvolni dani cili chisla Tipi vkazuyut programam ta programistam na te yak slid obroblyati dani Sistemi tipizaciyi vikonuyut taki funkciyi Bezpechnist zastosuvannya tipiv danih dozvolyaye kompilyatoru znahoditi bezzmistovnij abo nepravilnij kod Napriklad mozhna viznachiti viraz Privit 3 yak nepravilnij oskilki dodavannya u zagalnomu rozuminni ryadka do cilogo chisla ne maye sensu Yak zaznacheno nizhche silna tipizaciya bezpechnisha odnak vona ne obov yazkovo garantuye povnu bezpeku dokladnishe divitsya Tipobezpechnist Optimizaciya statichne pereviryannya tipiv mozhe povidomiti dodatkovu informaciyu kompilyatoru Napriklad yaksho tip danih ukazuye na te sho znachennya povinni virivnyuvatisya na granici kratni 4 kompilyator zmozhe vikoristati efektivnishi mashinni instrukciyi Dokumentuvannya u viraznishih sistemah tipizaciyi tipi danih mozhut sluguvati yak vid dokumentaciyi oskilki voni mozhut opisuvati namiri rozrobnika Napriklad dovzhina mozhe buti pidtipom cilih chisel ale yaksho rozrobnik ogoloshuye tip rezultatu funkciyi yak dovzhinu a ne prosto cile chislo ce mozhe chastkovo opisuvati znachennya funkciyi Abstraguvannya abo modulnist tipi danih dozvolyayut rozrobnikovi rozmirkovuvati pro programi na vishomu rivni ne zvertayuchi uvagu na dribnici realizaciyi na nizhchomu rivni Napriklad rozrobnik mozhe vvazhati ryadok znachennyam zamist prostogo masivu bajt Abo tipi mozhut dozvoliti rozrobnikam virazhati interfejs mizh dvoma pidsistemami Ce lokalizuye potribni dlya vzayemodiyi dvoh pidsistem viznachennya ta zapobigaye poyavi nesumisnostej pid chas vzayemodiyi cih pidsistem Pereviryannya tipivProces verifikaciyi ta vprovadzhennya obmezhen tipiv danih pereviryannya tipiv mozhe vidbuvatisya pid chas kompilyaciyi statichna tipizaciya abo pid chas vikonannya programi dinamichna tipizaciya Yaksho mova programuvannya vimagaye tochnogo zistavlennya tipiv danih tobto dozvolyayuchi lishe taki operaciyi avtomatichnogo privedennya tipiv yaki ne prizvodyat do vtrati informaciyi taka mova programuvannya maye silnu tipizaciyu v inshomu razi slabku Statichna tipizaciya Statichna tipizaciya mehanizm sho dozvolyaye na etapi napisannya programi viznachiti cherez tip ob yekta programi mnozhinu pripustimih znachen ta mnozhinu operacij nad ob yektom tak sho porushennya vimog tipizaciyi prizvoditime do poperedzhennya abo pomilki na etapi translyaciyi programi a ne na etapi yiyi vikonannya Tip ob yekta vstanovlenij pid chas napisannya programi ne mozhe buti zminenij na etapi vikonannya programi ale znachennya yake mistit ob yekt mozhe buti peretvorene privedene do inshogo tipu Mehanizm shiroko vikoristovuyetsya v okremih movah programuvannya zvanih yak movi zi statichnoyu tipizaciyeyu i dozvolyaye zmenshiti chislo pomilok pid chas napisannya programi ale takozh vimagaye yavnogo peretvorennya tipu v razi potrebi Prikladi statichno tipizovanih mov Ada S Pascal Dinamichna tipizaciya Movu programuvannya nazivayut dinamichno tipizovanoyu koli osnovna chastina perevirok tipiv vikonuyetsya pid chas vikonannya programi a ne pid chas kompilyaciyi U dinamichnij tipizaciyi znachennya mayut tipi a zminni ni tomu zminna mozhe mistiti znachennya bud yakogo tipu Do dinamichno tipizovanih mov vhodyat APL Erlang Groovy JavaScript LISP Lua MATLAB GNU Octave Perl dlya koristuvackih tipiv ale ne dlya vbudovanih tipiv PHP Prolog Python Ruby Smalltalk Clojure ta Tcl Prikladi V okremih movah zi statichnoyu tipizaciyeyu mozhe mati misce take 3 4 7 cili chisla 3 4 34 ryadki 3 4 gt nevidpovidnist tipiv operandiv operaciyi pomilka V okremih movah z dinamichnoyu tipizaciyeyu mozhe mati misce take 3 4 gt 7 abo 34 zalezhno vid zmistuDiv takozhTip danih Mova programuvannya Polimorfizm programuvannya Teoriya tipivPosilannyaKonstanti zminni Tipi danih Bendzhamin Pirs Tipy v yazykah programmirovaniya Types and programming languages 2010 Ce nezavershena stattya pro informacijni tehnologiyi Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi