Какво означава статично-типизиран, свободно-форматируем, много-парадигмен език за програмиране

1 Статично-типизиран, свободно-форматируем, много-парадигмен език за програмиране
Може би вече знаете, че С++ е статично-типизиран, буквално-типизиран(unsafely typed), свободно-форматируем, много-парадигмен език за програмиране. Но нека все пак да видим какво означава всичко това.
Статично типизиран това се отнася до начина, по който в езикът за програмиране е реализирана
системата за работа с променливи. Променливите това са "стойностите", които дадена програма използва.
Една променлива може да променя своята стойност по време на изпълнение на програмата, освен ако не е
била декларирана като константна (const). В С++ променливите трябва да бъдат декларирани преди
да бъдат използвани. На статичното типизиране ще се спрем по-нататък в тази глава.
Свободно-форматируем се отнася до начина, по който програмистът форматира своя код. Начинът,
по който е форматиран сорскодът не оказва никакво влияние на скоростта на изпълнение на компилираната програма. Възможността за свободно форматиране на кода често използва за създаване
на умишлено-усложнен код (obfuscated code).
Парадигмата на един език за програмиране е моделът или начинът на организаране на една
компютърна програма. С++ е много-парадигмен език, което означава че С++ предоставя повече от
един подход за решение на даден проблем. По принцип С++ е обектно-ориентиран език, но Вие не
сте задължени да използвате класове във всяка програма, която създавате. По нататък в тази книга
ще разгледаме различните парадигми, които се отнасят до С++.
2 Типизация
2.1 Статична или динамична типизация
Статично типизиран това се отнася до начина, по който в езикът за програмиране е реализирана
системата за работа с променливи. Променливите това са "стойностите", които дадена програма използва.
Една променлива може да променя своята стойност по време на изпълнение на програмата, освен ако не
е била декларирана като константна (const). Статичната типизазация означава, че програмистът трябва да избере правилният тип за всяка
променлива по време на писане на сорскода, но за сметка на това компилираният код е по-бърз и
теоретично погледнато статичната типизация води до по-малко грешки. Някои езици за програмиране
позволяват динамична типизация, като в този случай типът на променливите се определя по време
на изпълнение на програмата, което би могло да доведе до по-бавно изпълнение на програмата.
2.2 Строга или слаба типизация
При "строгата" типизация е характерно, че не се позволява само такова типово конвертиране(typecasting)на променливи, при което се "губи" информация или крайният резултат е недифиниран. При езиците със "слаба" типизация няма такива ограничения.
2.3 Безопасна или буквална типизация(unsafely typed)
Езиците с безопасна типизация не позволяват присвояване на "нетипични" стойности, което би
могло да доведе до грешки или до трудно отркиваеми програмни бъгове. Обикновено езиците с
безопасна типизация използват система за garbage collection или пък имат сложна система от
правила, която налага много строги изисквания към стойностите, които се присвояват.
Езиците с буквална типизация не осъществяват контрол над стойностите, които се присвояват.