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