Однак такий спосіб безтипового програмування виявився надто небезпечним . Навіть у випадку числових величин , ґрунтуючись лише на двійковому коді , не завжди можна правильно відтворити значення об’єкта : адже один і той самий двійковий код може кодувати різні значення залежно від типу об’єкта . І навпаки : як побачимо далі , одне й те саме , навіть найпростіше числове значення , наприклад число 1 , залежно від наданого йому типу , може бути подано різними двійковими кодами . Тому знання типу об’єкта — вирішальний фактор для визначення допустимих операцій над ним . Про типи величин важливо домовитися на етапі складання , а не виконання програми . Програми , у яких заздалегідь точно визначено типи всіх величин , надійніші , бо в них менше причин для непорозумінь . Мови програмування , які жорстко приписують кожному об’єкту програми його незмінний тип , як у Паскалі , називають сильно сильно типізованими ( strongly-typed ) на відміну від слабко типізованих ( weakly-typed ) мов , що дають змогу по-різному трактувати тип одного й того самого об’єкта . Тяжіння до дедалі сильнішої типізації — загальна тенденція розвитку програмування . Кожному об’єкту програми ( і , відповідно , області пам’яті , що зберігає його як елемент даних ) приписано певний тип , від якого залежить інтерпретація даних , а саме спосіб їх кодування і декодування та , головне , набір допустимих операцій над ними . Навіть якщо області даних різних типів перетинаються ( наприклад , цілі та дійсні числа ) , то спосіб кодування числової величини залежить від приписаного їй типу . Скажімо , машинний код цілого числа і дійсного числа 1 , як уже було сказано , відрізняються . Мова C в процесі свого розвитку пройшла шлях від слабкої типізації у напрямку посилення цієї властивості , тому тепер C та C + + - сильно типізовані мови , хоча і зберегли деякі риси своєї попередниці ( див . неявні перетворення типів у розділі 2.3.3 ) . Кожному об’єкту програми приписують певний тип , у найпростішому випадку один . Від нього залежить , що дозволено робити з цим об’єктом . Можна не лише використовувати стандартні типи , наперед задані мовою , а й створювати власні . Вони можуть утворювати ієрархії , що ускладнює проблему типізації . Однак це вже питання іншого рівня , відоме під назвою поліморфізму .